K8S从Docker切换到Containnerd操作步骤
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.com
node/linux-node3.example.com cordoned
[root@linux-node1 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
linux-node1.example.com Ready master 2d3h v1.19.6
linux-node2.example.com Ready <none> 2d3h v1.19.6
linux-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-node3
Last 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.toml
sandbox_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/kubelet
KUBELET_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.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
使用crictl查看镜像
[root@linux-node3 ~]# crictl images
IMAGE TAG IMAGE ID SIZE
docker.io/library/traefik v1.7.20 96c63a7d3e502 24MB
registry.aliyuncs.com/google_containers/kube-proxy v1.19.6 dbcc366449b06 49.3MB
registry.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.com
node/linux-node3.example.com uncordoned
[root@linux-node1 ~]# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
linux-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.8
linux-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.8
linux-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 3
deployment.apps/test-deploy created
查看Pod是否可以创建在更换Containerd的Node上,并进行访问测试。
[root@linux-node1 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
test-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–
购买云服务器请进:
《腾讯云》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