基于kubeadm安装k8s1.26高可用集群(下)
时间:2024-4-3 16:42 作者:Anglei 分类: 虚拟化
接《基于kubeadm安装k8s1.26高可用集群(上)》, 初始化集群环境已经准备就绪,下面我们就开始安装部署k8s了。
1.安装containerd
[root@master1 ~]#yum install containerd.io-1.6.6 -y
接下来生成 containerd 的配置文件:
[root@master1 ~]#mkdir -p /etc/containerd
[root@master1 ~]#containerd config default > /etc/containerd/config.toml
改配置文件:
打开/etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri"]
①.把SystemdCgroup = false修改成SystemdCgroup = true
②.把sandbox_image = "k8s.gcr.io/pause:3.6"修改成sandbox_image="registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7" (或者:registry.aliyuncs.com/google_containers/pause:3.7)
③.把[plugins."io.containerd.grpc.v1.cri".containerd.default_runtime]中的runtime_type 置为 "io.containerd.runtime.v1.linux"
配置 containerd 开机启动,并启动 containerd
[root@master1 ~]#systemctl enable containerd --now
[root@node1 ~]#yum install containerd.io-1.6.6 -y
接下来生成 containerd 的配置文件:
[root@node1 ~]#mkdir -p /etc/containerd
[root@node1 ~]#containerd config default > /etc/containerd/config.toml
修改配置文件:
打开/etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri"]
①.把SystemdCgroup = false修改成SystemdCgroup = true
②.把sandbox_image = "k8s.gcr.io/pause:3.6"修改成sandbox_image="registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7"
配置 containerd 开机启动,并启动 containerd
[root@node1 ~]#systemctl enable containerd --now
修改/etc/crictl.yaml文件
[root@master1 ~]#cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
[root@master1 ~]#systemctl restart containerd
[root@node1 ~]#cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
[root@node1 ~]#systemctl restart containerd
配置containerd镜像加速器,k8s所有节点均按照以下配置:
编辑vim /etc/containerd/config.toml文件
找到config_path = "",修改成如下目录:
config_path = "/etc/containerd/certs.d"
保存退出
mkdir /etc/containerd/certs.d/docker.io/ -p
vim /etc/containerd/certs.d/docker.io/hosts.toml
写入如下内容:
[host."https://vh3bm52y.mirror.aliyuncs.com",host."https://registry.docker-cn.com"]
capabilities = ["pull"]
重启containerd:
systemctl restart containerd
备注:docker也要安装,docker跟containerd不冲突,安装docker是为了能基于dockerfile构建镜像
[root@master1 ~]#yum install docker-ce -y
[root@master1 ~]#systemctl enable docker --now
[root@node1 ~]#yum install docker-ce -y
[root@node1 ~]#systemctl enable docker --now
配置docker镜像加速器,k8s所有节点均按照以下配置
vim /etc/docker/daemon.json
#写入如下内容:
{
"registry-mirrors":["https://vh3bm52y.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com"]
}
重启docker
systemctl restart docker
2.安装初始化k8s需要的软件包
[root@master1 ~]# yum install -y kubelet-1.26.0 kubeadm-1.26.0 kubectl-1.26.0
[root@master1 ~]# systemctl enable kubelet
[root@node1 ~]# yum install -y kubelet-1.26.0 kubeadm-1.26.0 kubectl-1.26.0
[root@node1 ~]# systemctl enable kubelet
注:每个软件包的作用
Kubeadm: kubeadm是一个工具,用来初始化k8s集群的
kubelet: 安装在集群所有节点上,用于启动Pod的,kubeadm安装k8s,k8s控制节点和工作节点的组件,都是基于pod运行的,只要pod启动,就需要kubelet
kubectl: 通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件
3.kubeadm初始化k8s集群
#设置容器运行时
[root@master1~]# crictl config runtime-endpoint unix:///run/containerd/containerd.sock
[root@node1~]# crictl config runtime-endpoint unix:///run/containerd/containerd.sock
#使用kubeadm初始化k8s集群
[root@master1 ~]# kubeadm config print init-defaults > kubeadm.yaml
根据我们自己的需求修改配置,比如修改 imageRepository 的值,kube-proxy 的模式为 ipvs,需要注意的是由于我们使用的containerd作为运行时,所以在初始化节点的时候需要指定cgroupDriver为systemd
在文件最后,插入以下内容,(复制时,要带着---):
……
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
……
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
基于kubeadm.yaml初始化k8s集群
[root@master1 ~]# ctr -n=k8s.io images import k8s_1.26.0.tar.gz
[root@node1 ~]# ctr -n=k8s.io images import k8s_1.26.0.tar.gz
#使用ctr命令指定命名空间导入镜像
ctr -n=k8s.io images import k8s_1.26.0.tar.gz
#查看镜像,可以看到查询到了
crictl images
[root@master1 ~]# kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification
注:mode: ipvs 表示kube-proxy代理模式是ipvs,如果不指定ipvs,会默认使用iptables,但是iptables效率低,所以我们生产环境建议开启ipvs,阿里云和华为云托管的K8s,也提供ipvs模式。
配置kubectl的配置文件config,相当于对kubectl进行授权,这样kubectl命令可以使用这个证书对k8s集群进行管理
[root@master1 ~]# mkdir -p $HOME/.kube
[root@master1 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master1 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@master1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master1 NotReady control-plane 2m25s v1.26.0
4.扩容k8s集群-添加第一个工作节点
在master1上查看加入节点的命令:
[root@master1 ~]# kubeadm token create --print-join-command
显示如下:
kubeadm join 192.168.1.180:6443 --token vulvta.9ns7da3saibv4pg1 --discovery-token-ca-cert-hash sha256:72a0896e27521244850b8f1c3b600087292c2d10f2565adb56381f1f4ba7057a
把node1加入k8s集群:
[root@node1~]# kubeadm join 192.168.1.180:6443 --token vulvta.9ns7da3saibv4pg1 --discovery-token-ca-cert-hash sha256:72a0896e27521244850b8f1c3b600087292c2d10f2565adb56381f1f4ba7057a --ignore-preflight-errors=SystemVerification
看到上面说明node1节点已经加入到集群了,充当工作节点
在master1上查看集群节点状况:
[root@master1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master1 Ready control-plane,master 49m v1.26.0
node1 Ready <none> 39s v1.26.0
可以对node1打个标签,显示work
[root@master1 ~]# kubectl label nodes node1 node-role.kubernetes.io/work=work
[root@master1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master1 NotReady control-plane 10m v1.26.0
node1 NotReady work 27s v1.26.0
5.安装kubernetes网络组件-Calico
把安装calico需要的镜像calico.tar.gz传到master1和node1节点,手动解压:
[root@master1 ~]# ctr -n=k8s.io images import calico.tar.gz
[root@node1 ~]# ctr -n=k8s.io images import calico.tar.gz
上传calico.yaml到master1上,使用yaml文件安装calico 网络插件
[root@master1 ~]# kubectl apply -f calico.yaml
注:在线下载配置文件地址是: https://docs.projectcalico.org/manifests/calico.yaml
[root@master1 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master1 Ready control-plane 36m v1.26.0
node1 Ready work 21m v1.26.0

本文完结,相关标签: k8s kubernetes kubeadm
推荐阅读:
![]() 路过(0) |
![]() 雷人(0) |
![]() 握手(2) |
![]() 鲜花(0) |
![]() 鸡蛋(0) |