«

基于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

 版权所有:Anglei
 文章标题:基于kubeadm安装k8s1.26高可用集群(下)
 除非注明,本站文章如未特殊说明均为 MAXADA社区知识库 原创,且版权所有,请勿用于任何商业用途。

推荐阅读:

看完后感想如何?

路过(0)

雷人(0)

握手(2)

鲜花(0)

鸡蛋(0)
分享到: