目录
写在前面:
一、关闭docker,清除策略
二、Containerd部署
注意:如果曾经装过 docker ,那么 containerd 就存在与主机里修改 Containerd 配置文件,启动 Containerd
替代docker的指令
初始化集群
写在前面:
k8s 1.24将弃用 Dockershim ,替代适配器名为 cri-dockerd
上一篇博客中我们使用docker部署了一个集群,其中server1是master
接下来我们将使用Containerd部署k8s集群
参考文档:容器运行时 | Kubernetescontainer runtime into each node in the cluster so that Pods can run there. This page outlines what is involved and describes related tasks for setting up nodes. -- 你需要在集群内每个节点上安装一个 容器运行时 以使 Pod 可以运行在上面。本文概述了所涉及的内容并描述了与节点设置相关的任务。本文列出了在 Linux 上结合 Kubernetes 使用的几种通用容器运行时的详细信息: containerd CRI-O Docker Note: For other operating systems, look for documentation specific to your platform. -- 提示:对于其他操作系统,请查阅特定于你所使用平台的相关文档。Cgroup 驱动程序 控制组用来约束分配给进程的资源。当某个 Linux 系统发行版使用 systemd 作为其初始化系统时,初始化进程会生成并使用一个 root 控制组 (cgroup), 并充当 cgroup 管理器。 Systemd 与 cgroup 集成紧密,并将为每个 systemd 单元分配一个 cgroup。 你也可以配置容器运行时和 kubelet 使用 cgroupfs。 连同 systemd 一起使用 cgroupfs 意味着将有两个不同的 cgroup 管理器。https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/#containerd
一、关闭docker,清除策略
[root@server1 ~]# kubeadm reset ##确认删除,三台设备上都要做
[root@server1 ~]# iptables -L ##创建k8s时会有很多策略,会影响后面的初始化,所以直接重启主机清楚策略
[root@server1 ~]# reboot ##三台主机都做,当然也可以用命令行清除iptables策略
[root@server1 ~]# systemctl disable --now docker
[root@server1 ~]# systemctl disable --now docker.socket
[root@server1 ~]# ssh server2 systemctl disable --now docker
[root@server1 ~]# ssh server2 systemctl disable --now docker.socket
[root@server1 ~]# ssh server3 systemctl disable --now docker
[root@server1 ~]# ssh server3 systemctl disable --now docker.socket
[root@server1 ~]# docker ps ##此时可以看见docker已经没有运行了
二、Containerd部署
注意:如果曾经装过 docker ,那么 containerd 就存在与主机里
修改 Containerd 配置文件,启动 Containerd
[root@server1 ~]# cd /etc/containerd/
[root@server1 ~]# ls
config.toml ## containerd 的默认配置文件
[root@server1 containerd]# containerd config default ##列出defaul配置
[root@server1 containerd]# containerd config default > config.toml
[root@server1 containerd]# vim config.toml
将 56 sandbox_image = "k8s.gcr.io/pause:3.5" ##需要科学上网,我的网路条件下不了
62 systemd_cgroup = false ##
改为 56 sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.5"
##阿里云镜像仓库,如果有私有仓库更好
62 systemd_cgroup = true
[root@server1 containerd]# systemctl enable --now containerd.service
[root@server1 containerd]# ll /run/containerd/containerd.sock
[root@server1 containerd]# scp config.toml server2:/etc/containerd/
[root@server1 containerd]# scp config.toml server3:/etc/containerd/
[root@server1 containerd]# ssh server2 systemctl enable --now containerd.service
[root@server1 containerd]# ssh server3 systemctl enable --now containerd.service
[root@server1 containerd]# modprobe overlay ##加载overlay模块
[root@server1 containerd]# cd /etc/modules-load.d/
[root@server1 modules-load.d]# vim containerd.conf
br_netfilter
[root@server1 modules-load.d]# sysctl -a | grep ip_forward ##有 net.ipv4.ip_forward = 1,如果是ubuntu需要进入文件确认一下
[root@server1 modules-load.d]# vim /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1 ##默认有,可以不写进去
[root@server1 modules-load.d]# sysctl --system
[root@server1 modules-load.d]# scp containerd.conf server2:/etc/modules-load.d/
[root@server1 modules-load.d]# scp containerd.conf server3:/etc/modules-load.d/
[root@server1 modules-load.d]# scp /etc/sysctl.d/k8s.conf server2:/etc/sysctl.d/
[root@server1 modules-load.d]# scp /etc/sysctl.d/k8s.conf server3:/etc/sysctl.d/
[root@server1 modules-load.d]# ssh server2 sysctl --system
[root@server1 modules-load.d]# ssh server3 sysctl --system
替代docker的指令
注意:如果曾经装过 docker ,那么 containerd 就存在与主机里
修改 Containerd 配置文件,启动 Containerd
[root@server1 ~]# cd /etc/containerd/
[root@server1 ~]# ls
config.toml ## containerd 的默认配置文件
[root@server1 containerd]# containerd config default ##列出defaul配置
[root@server1 containerd]# containerd config default > config.toml
[root@server1 containerd]# vim config.toml
将 56 sandbox_image = "k8s.gcr.io/pause:3.5" ##需要科学上网,我的网路条件下不了
62 systemd_cgroup = false ##
改为 56 sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.5"
##阿里云镜像仓库,如果有私有仓库更好
62 systemd_cgroup = true
[root@server1 containerd]# systemctl enable --now containerd.service
[root@server1 containerd]# ll /run/containerd/containerd.sock
[root@server1 containerd]# scp config.toml server2:/etc/containerd/
[root@server1 containerd]# scp config.toml server3:/etc/containerd/
[root@server1 containerd]# ssh server2 systemctl enable --now containerd.service
[root@server1 containerd]# ssh server3 systemctl enable --now containerd.service
[root@server1 containerd]# modprobe overlay ##加载overlay模块
[root@server1 containerd]# cd /etc/modules-load.d/
[root@server1 modules-load.d]# vim containerd.conf
br_netfilter
[root@server1 modules-load.d]# sysctl -a | grep ip_forward ##有 net.ipv4.ip_forward = 1,如果是ubuntu需要进入文件确认一下
[root@server1 modules-load.d]# vim /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1 ##默认有,可以不写进去
[root@server1 modules-load.d]# sysctl --system
[root@server1 modules-load.d]# scp containerd.conf server2:/etc/modules-load.d/
[root@server1 modules-load.d]# scp containerd.conf server3:/etc/modules-load.d/
[root@server1 modules-load.d]# scp /etc/sysctl.d/k8s.conf server2:/etc/sysctl.d/
[root@server1 modules-load.d]# scp /etc/sysctl.d/k8s.conf server3:/etc/sysctl.d/
[root@server1 modules-load.d]# ssh server2 sysctl --system
[root@server1 modules-load.d]# ssh server3 sysctl --system
替代docker的指令
下载crictl,解压后放到 /usr/local/bin/ 下可以了
crictl config runtime-endpoint unix:///run/contaiberd/contaiberd.sock 会在 /etc/ 生成 crictl.yml 文件 systemctl restart containerd.service ##所有节点都要执行



