K8s 部署(基于v1.22.0 + containerd)

最近在研究K8s的部署方式,参考官方Document进行部署测试,中间也遇到了一些问题,总结做为自己学习、记录,如果有错误欢迎大家指出。

准备工作

      准备三台机器:(os:ubuntu  kernel-version : 4.15.0-142-generic)

                master:172.17.18.237

                node1 : 172.17.122.216

                node2 : 172.17.130.191

       对环境进行初始化:

        进行必要的设置:

        1:关闭swap,看网上说是避免对性能产生影响

                sudo swapoff -a
        2:关闭禁用各防火墙:(根据系统不同,执行命令不同,自己可以查询对应系统的命令)
                systemctl stop firewalld.service
        3: 关闭各节点的selinux  编辑/etc/selinux/config 文件并设置 SELINUX 的值为 disabled。
       

        4: 给各节点添加kubernetes的apt-get源码,由于使用的阿里云的虚机,因此添加了阿里云的                 apt-get镜像,执行如下命令:

                curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 

                sudo vim /etc/apt/sources.list.d/kubernetes.list

                # 将下面的阿里源加入文件中 deb                 

                 https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
  

基于Kubeadm搭建集群

           1: 执行完上述第四步后,可以安装最新的kubectl kubelet kubeadm

                 apt update && apt install  kubectl kubelet kubeadm -y

                注意:如果之前安装了相关的的组件,请先移除掉

            2:  选择相应的 container runtime,我选择使用的是containerd,参考官方指导

                                Container runtimes | Kubernetes

                注意除修改cgroup driver,还要修改一个地方,默认pod启动的时候,会拉去pause镜像,初始化sandbox container,默认使用的是ks8.gcr.io的镜像仓库,但是国内无法访问,因此需要修该,否则无法正常启动k8s-master以及node相关组件服务

 修改上述sandbox_image为上述阿里云的镜像仓库中的pause:3.5

然后执行service containerd restart重新启动containerd服务

        3:安装crictl,默认使用containerd需要使用crictl进行调试,以及执行exec等相关调试命令,通过kubeadm启动时,会检测,这个去github下载加压后,放到/usr/local/bin下就可以.

修改或者创建/etc/crictl.yaml 写入以下内容:

  runtime-endpoint: unix:///run/containerd/containerd.sock
  image-endpoint: unix:///run/containerd/containerd.sock
  timeout: 10
  debug: false

上述步骤在master和node上都要执行。

        4:通过kubeadm生成默认config文件

                kubeadm config print init-defaults --kubeconfig ClusterConfiguration > kubeadm.yml

                修改kubeadm.yml文件,修改后如下(根据个人环境不同,可能不太一样)

          1)修改 criSocket:默认使用docker做为runtime,修改为containerd.sock,使用containerd        做为runtime

          2)修改imageRepository,改为aliyun的镜像仓库地址

          3)修改podSubnet以及serviceSubnet,根据的自己的环境进行设置

          4)设置cgroupDriver为systemd

              

 5:查看、拉取相关镜像(可跳过,建议使用本地镜像,因为coredns镜像的原因,kubeadm init会拉取失败,参考第6步)

            kubeadm config images list --image-repository registry.aliyuncs.com/google_containers

            kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers

           拉取后,如果使用本地镜像,请修改kubeadm.yml中的镜像拉取策略:imagePullPolicy,        

6:准备好相关配置后,执行如下命令,初始化master集群

        kubeadm init --config=kubeadm.yml --upload-certs --ignore-preflight-errors=ImagePull

        --ignore-preflight-errors因为我使用的是默认imagePullPolicy, coredns会拉取失败,所以选择忽略

        建议还是先执行第5步,将所有镜像拉取到本地,使用本地镜像,初始化时间差不多

        到这一步基本配置完成,如果没有特殊问题,master集群应该正常启动

        通过crictl可以看到相关的pod已经启动

 通过kubeadm join加入master时,要加上参数 --cri-socket  /run/containerd/containerd.sock

指定使用containerd做为container runtime

命令如下,master地址及token cert,master执行完Kubeadm init后,会有提示,在后面追加

--cri-socket  /run/containerd/containerd.sock执行

kubeadm join 172.17.18.237:8080 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:f63893c3540a5b5032ba25c86293d54f118728476a6544478a93e8d051984c55 --cri-socket /run/containerd/containerd.sock

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值