浅谈kubernetes单master节点部署

本文记录了作者重新部署Kubernetes单master节点的过程,从基础部分的安装到master和node节点的配置,详细描述了每个步骤。通过这次部署,作者不仅熟悉了安装流程,还验证了新版本的兼容性,强调了反复实践对于提升技能的重要性。
摘要由CSDN通过智能技术生成

目录

今天做了什么?

为什么做呢?

有什么收获呢?

怎么部署的?

1.基础部分,三个节点都要安装

2.在master节点上操作

3.在node节点操作加入集群中

总结


今天做了什么?

今天把kubernetes单master节点重新部署了一次,上次的版本是1.20.4,这次依然用以前的脚本安装基础部分,就是hosts解析,docker安装,还有其它的环境部分,发现用了脚本安装真的很快,我去倒了杯水的功夫,回来这些基础部分就装好了。

如果这么写?

#打开hosts文件
vim /etc/hosts
#把下面这些改成你自己的然后保存
172.16.206.167 master-k8s-3
172.16.206.168 node-k8s-4
172.16.206.170 node-k8s-5

换成这样呢?

#!/bin/bash
cat >>/etc/hosts <<EOF
172.16.206.167 master-k8s-3
172.16.206.168 node-k8s-4
172.16.206.170 node-k8s-5
EOF

同样是完成了修改,但是下面这个脚本是不是可以重复运行?而且还能检查和减少出错。

这次的版本装的是1.23.7,安装很顺利,按照上次的方法,一路复制粘贴,很快就完成了。

为什么做呢?

不只是熟悉上次的安装,把kubernetes内部需要的组件再熟悉下这么简单,还有要验证新版本部署是不是用以前的方法行不行的通,有没有错误的地方,这样就可以提前把问题点梳理出来,等用到的时候发现问题其不是很被动。

有什么收获呢?

部署这件事一直都是运维的基础工作,反复练习能把以前不熟悉的地方,复制来粘贴上这种事就变得不重要了,你的关注点就不一样了,你会在反复练习中总结和发现新的知识点。

怎么部署的?

1.基础部分,三个节点都要安装

#!/bin/bash

#修改所有节点的host解析:
cat >>/etc/hosts <<EOF
172.16.206.167 master-k8s-3
172.16.206.168 node-k8s-4
172.16.206.170 node-k8s-5
EOF
##关闭selinux
setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/g'  /etc/sysconfig/selinux
##关闭防火墙
systemctl   stop     firewalld.service
systemctl   disable   firewalld.service
##时间同步
yum install ntpdate -y
ntpdate ntp1.aliyun.com

##关闭swap分区
swapoff -a  
sed -ri 's/.*swap.*/#&/g' /etc/fstab

##开启ipvs模块
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/sh
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
##开启执行权限并执行ipvs.modules&&确认ipvs模块加载成功
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
##安装ipset、ipvsadm
yum install -y ipset ipvsadm
##各节点内核调整,将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system

##下载用于安装docker-ce版的yum源文件
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
##安装docker
yum  -y install docker-ce

##启动并开机自启
systemctl  start docker && systemctl enable docker
## 各节点配置docker加速器并修改成k8s驱动
cat > /etc/docker/daemon.json << EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF

##重启docker
systemctl daemon-reload
systemctl restart docker

#配置用于安装kubernetes工具的下载文件
cat>>/etc/yum.repos.d/kubernetes.repo<<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
EOF
#安装kubernetes工具
yum install -y kubeadm-1.23.7 kubelet-1.23.7 kubectl-1.23.7
##启动kubelet并开机自启
systemctl enable kubelet.service && systemctl start kubelet.service

先把上面这段复制成文本文件,然后保存成后缀是k8s-base.sh的文件,然后在系统中运行。

运行的命令是

sh k8s-base.sh

2.在master节点上操作

#导出一份配置文件,修改配置文件参数
kubeadm config print init-defaults > kubeadm-init.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: tq2jyy.7oh1b52342342n36pite
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 172.16.206.167
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  name: master1
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.23.7
networking:
  dnsDomain: cluster.local
  podSubnet: 172.29.0.0/16
  serviceSubnet: 172.28.0.0/16
scheduler: {}

上面这是kubeadm-init.yaml文件的内容,要注意修改的地方解释:

token:一定要改成你自己的

advertiseAddress:master节点IP

bindPort:节点端口

kubernetesVersion:版本号

podSubnet:pod地址段

serviceSubnet:service地址段

#拉取镜像
kubeadm config images pull --config kubeadm-init.yaml

查看镜像的命令

docker images

拉取完镜像以后再操作下面的

#在master上初始化安装
kubeadm init --config kubeadm-init.yaml  --upload-certs

看到以下的部分就说明安装完成了

#拷贝下面的配置文件备用

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 172.16.206.167:6443 --token tq2jyy.8222oh1b55cbn36pite \
    --discovery-token-ca-cert-hash sha256:819fd35d4652c2b3afsfsfsfasfafafafafa0762aef8a6ebd8fb9c2e91af17aa 

然后执行下面的命令安装好kubectl

在master上执行下面的命令配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
##设置master环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile

检查集群节点状态

##在master节点查看集群状态	
kubectl get nodes 

3.在node节点操作加入集群中

kubeadm join 172.16.206.167:6443 --token tq2jyy.7oh1b55cbn36pite \
    --discovery-token-ca-cert-hash sha256:819fd35d4652c2b3af5efa2ccae76d56565656762aef8a6ebd8fb9c2e91af17aa 

然后再检查集群节点状态。

总结

这篇文章除了技术点,还分享下我今天做了什么,有什么收获,有时候做事不只是技术上的突破,也要想想做了这事对自己有什么好的地方,多沉淀可能走的更顺利。

这次先到这里,下次分享网络安装。

有些地方为了让你不原封不动的复制,我故意弄错了,不知道你发现了没有?

如果你在安装中有什么问题可以发私信或者留言,我看到会第一时间回复的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Echo^?

你的关注是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值