K8S从Docker切换到Containnerd操作步骤

作者 : 木木 本文共3466个字,预计阅读时间需要9分钟 发布时间: 2022-01-12 共314人阅读

初学不知服务器好,错把女人当成宝!2*4*8服务器74/年,可以购买3年,新老用户不限 少帮助站街女人一次就可购买3年服务器   点我就对了


Kubernetes宣布在1.20版本弃用docker,选择containerd。然后大量的文章标题是【Kubernetes抛弃了Docker】让很多人产生了疑惑和些许担心。

在开始操作之前,首先我们需要先给docker正名,其实是Kubernetes直接使用containerd创建容器,而不经过docker,但并不能说是抛弃docker,因为containerd的主要贡献者就是docker。containerd是docker贡献给社区的行业标准级的容器运行时项目。


逐个替换Kubernetes Node操作步骤

手工的将一台Kubernetes Node节点,从Docker切换为Containerd需要6个步骤:

1. 将准备操作的节点设置为不可调度。

[root@linux-node1 ~]# kubectl cordon linux-node3.example.comnode/linux-node3.example.com cordoned[root@linux-node1 ~]# kubectl get nodeNAME                      STATUS                     ROLES    AGE    VERSIONlinux-node1.example.com   Ready                      master   2d3h   v1.19.6linux-node2.example.com   Ready                      <none>   2d3h   v1.19.6linux-node3.example.com   Ready,SchedulingDisabled   <none>   2d3h   v1.19.6

2. 驱逐该节点上面的所有Pod

[root@linux-node1 ~]# kubectl drain linux-node3.example.com --ignore-daemonsets --delete-local-data

3.停止Docker和Kubelet,并移除Docker安装。

[root@linux-node1 ~]# ssh linux-node3Last login: Thu Mar 25 06:49:56 2021 from linux-node1[root@linux-node3 ~]# systemctl stop kubelet docker[root@linux-node3 ~]# yum remove -y docker-ce docker-ce-cli

4. 创建并修改containerd配置

[root@linux-node3 ~]# mkdir -p /etc/containerd[root@linux-node3 ~]# containerd config default > /etc/containerd/config.toml

修改sandbox_image的镜像地址,也就是Pause容器的镜像地址,修改为国内阿里云的地址。

[root@linux-node3 ~]# vim /etc/containerd/config.tomlsandbox_image = "k8s.gcr.io/pause:3.2"修改为:sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.2"

5. 修改kubelet的启动参数并重启

[root@linux-node3 ~]# vim /etc/sysconfig/kubeletKUBELET_EXTRA_ARGS="--container-runtime=remote--container-runtime-endpoint=unix:///var/run/containerd/containerd.sock"[root@linux-node3 ~]# systemctl restart containerd kubelet

现在你就可以使用crictl替代docker进行一些基本容器管理,首先创建crictl的配置文件。

[root@linux-node3 ~]# vim /etc/crictl.yamlruntime-endpoint: unix:///run/containerd/containerd.sockimage-endpoint: unix:///run/containerd/containerd.socktimeout: 10debug: false

使用crictl查看镜像

[root@linux-node3 ~]# crictl imagesIMAGE                                                TAG                 IMAGE ID            SIZEdocker.io/library/traefik                            v1.7.20             96c63a7d3e502       24MBregistry.aliyuncs.com/google_containers/kube-proxy   v1.19.6             dbcc366449b06       49.3MBregistry.aliyuncs.com/google_containers/pause        3.2                 80d28bedfe5de       300kB

注意:crictl是面向Kubernetes来进行设计的,所以优点是它具备了很多Docker CLI并不具备的功能。

例如crictl还可以查看当前节点上的Pod。

[root@linux-node3 ~]# crictl pod

crictl也可以识别Namespace

[root@linux-node3 ~]# crictl pods --namespace default

crictl并不具备Docker CLI的丰富的命令集,仅用于在Kubernetes Node上做故障排除,如果你需要进行镜像的构建等操作,依然可以在集群外使用Docker CLI进行。

6. 将节点设置为可以调度,并查看验证

[root@linux-node1 ~]# kubectl uncordon linux-node3.example.comnode/linux-node3.example.com uncordoned[root@linux-node1 ~]# kubectl get node -o wideNAME                      STATUS   ROLES    AGE    VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION                CONTAINER-RUNTIMElinux-node1.example.com   Ready    master   2d4h   v1.19.6   192.168.56.11   <none>        CentOS Linux 7 (Core)   3.10.0-1127.18.2.el7.x86_64   docker://19.3.8linux-node2.example.com   Ready    <none>   2d3h   v1.19.6   192.168.56.12   <none>        CentOS Linux 7 (Core)   3.10.0-1127.18.2.el7.x86_64   docker://19.3.8linux-node3.example.com   Ready    <none>   2d3h   v1.19.6   192.168.56.13   <none>        CentOS Linux 7 (Core)   3.10.0-1127.18.2.el7.x86_64   containerd://1.4.4

创建Deployment进行测试:

[root@linux-node1 ~]# kubectl create deploy test-deploy --image nginx:1.14.2 -r 3deployment.apps/test-deploy created

查看Pod是否可以创建在更换Containerd的Node上,并进行访问测试。

[root@linux-node1 ~]# kubectl get pod -o wideNAME                           READY   STATUS    RESTARTS   AGE   IP          NODE                      NOMINATED NODE   READINESS GATEStest-deploy-587b69c956-hdt4x   1/1     Running   0          41s   10.2.1.38   linux-node2.example.com   <none>           <none>test-deploy-587b69c956-lpzvn   1/1     Running   0          41s   10.2.1.37   linux-node2.example.com   <none>           <none>test-deploy-587b69c956-mfkp6   1/1     Running   0          41s   10.2.2.37   linux-node3.example.com   <none>           <none>

在测试环境操作没问题,观察一段时间,接下来就可以在生产环境依次切换各个节点,也可以使用SaltStack、Ansible等工具来完成自动化操作。

END

优质免费资源分享站wordppt--全站内容均来源于网络,仅供学习交流使用。如有侵权内容请联系我们,我们会三个工作日内下架相关文章或资源。
购买云服务器请进:
《腾讯云》https://curl.qcloud.com/BZhPtRXX
《阿里云》https://www.aliyun.com/minisite/goods?taskCode=yds2021-09zy&recordId=null&userCode=d4m00na3
优质源码资源站最新网站源码游戏源码手游源码等免费资源下载 » K8S从Docker切换到Containnerd操作步骤

常见问题FAQ

源码下载地址出现付费网盘怎么处理?
联系客服即刻免费下载,留下链接地址,客服会在第一时间待下载资源。
源码可以商用吗?
本站素材均来自余网络,本站仅提供学习交流使用,商用版权请购买正版。
源码下载不会部署安装怎么办?
本站内容均有部署文档,参考文档操作即可。
楼主提供安装部署服务吗?
本站分享仅为学习使用,建议经量自己动手。
资源出现地址无效或无法下载怎么处理。
联系客服,客服会在第一时间处理资源链接问题或退款。
其他所有问题请看这里!!!!!
请保持素质,严禁因为任何问题攻击客服,所有问题客服均会在第一时间处理。无法处理或不满意请邮件投诉sw@51mimu.com

发表评论