正文


一、安装 containerd


kubernetes 1.24 版之后,就正式移除 dockershim 了,因此,这里第一步就是安装另一个容器运行时: containerd


二、基于过往教程调整


去年我写过一个系列的 二进制文件方式安装 kubernetes 集群 的文章,可以参考以往的文章,链接见文章末。


这次只说调整的地方:


  1. 原先安装的 docker 改成现在的 containerd.
  2. 原先安装 kubelet 时写的配置文件中,去除 --network-plugin 参数,加上 --container-runtime --container-runtime-endpoint 参数,详细操作接着往下看。
  3. 原先添加cni 插件时拉取镜像和给镜像打标签的两条命令改一下:改成: nerdctl -n k8s.io pull registry.aliyuncs.com/google_containers/pause:3.6 nerdctl -n k8s.io tag registry.aliyuncs.com/google_containers/pause:3.6 registry.k8s.io/pause:3.6
  4. [2022-11-25更新] 原先配置 kubelet 的systemd 服务时用的 /usr/lib/systemd/system/kubelet.service 里的 After=docker.service 改成 containerd.service


三、验证


76.webp.jpg

验证安装成功


可以看到,安装的 kubernetes版本是 v1.25.4 ,节点数是 3 ,还成功运行了一个 mysql pod。


附加1: 原先教程的 kubelet 报错


报错信息:

Nov 19 08:35:12 k8s_master kubelet[3041]: E1118 16:35:12.786441    3041 run.go:74] "command failed" err="failed to parse kubelet flag: unknown flag: --network-plugin"
Nov 19 08:35:12 k8s_master systemd[1]: kubelet.service: main process exited, code=exited, status=1/FAILURE
Nov 19 08:35:12 k8s_master systemd[1]: Unit kubelet.service entered failed state.
Nov 19 08:35:12 k8s_master systemd[1]: kubelet.service failed.

77.webp.jpg

报错截图


解决步骤


修改 /etc/kubernetes/kubelet 配置文件,将里面的 --network-plugin=cni \ 一行删掉,增加两行 --container-runtime=remote \ --container-runtime-endpoint=unix:///run/containerd/containerd.sock \


下面是我用的最新的配置文件:

KUBELET_ARGS="--kubeconfig=/etc/kubernetes/kubeconfig \
--config=/etc/kubernetes/kubelet.config \
--hostname-override=192.168.0.200 \
--container-runtime=remote \
--container-runtime-endpoint=unix:///run/containerd/containerd.sock \
--v=0"


每台计算机都应该运行一个支持 Kubernetes 的 Linux 操作系统,如 CentOS 7。 每台计算机都应该有一个静态 IP 地址,并且您需要为每台计算机选择一个主机名。 每台计算机上都需要安装 Docker。 扩展你的Kubernetes集群:理解水平扩展与垂直扩展
Kubernetes是一个用于管理容器化应用程序的开源平台。它提供了自动化部署、扩展和操作应用程序所需的资源,并对容器的运行状态进行监控和修复。Kubernetes 能够节省大量时间和精力,让开发人员能够专注于应用程序的开发和部署。
全栈研发工程师,五年经验,简书平台优质作者,曾经从0到1成功主导“线上北京电视节目交易会平台”的研发工作,擅长数据库(关系型)、运维(Linux,kubernetes)。 有需要技术沟通的同学可以通过微信公众号:七镜全栈成长