• kubernetes集群部署:node节点部署和cri-docker运行时安装(四)


    安装前准备

    同《kubernetes集群部署:环境准备及master节点部署(二)

    安装cri-docker

    在 Kubernetes 1.20 版本之前,Docker 是 Kubernetes 默认的容器运行时。然而,Kubernetes 社区决定在 Kubernetes 1.20 及以后的版本中逐步淘汰对 Docker 的直接支持,一直到Kubernetes 1.24版本彻底不再支持Docker作为kubernetes的默认容器运行时,原因如下:

    1. CRI 标准化:Kubernetes 团队推出了 CRI(Container Runtime Interface),旨在标准化容器运行时的接口,使 Kubernetes 能够与不同的容器运行时(如 containerd、CRI-O)无缝集成。
    2. Docker Shim:为了使 Kubernetes 能够与 Docker 一起工作,Kubernetes 需要一个称为 "dockershim" 的组件,充当 Kubernetes 和 Docker 之间的桥梁。这增加了额外的复杂性和维护负担。

    为了解决这一问题,并让仍然依赖 Docker 的用户继续使用,cri-dockerd 项目应运而生。

    什么是 cri-dockerd

    cri-dockerd 是一个外部的开源项目,目的是提供一个兼容 Kubernetes CRI 的 Docker 运行时。它是 Docker 和 Kubernetes 之间的桥梁,使 Kubernetes 可以使用 Docker 作为容器运行时,同时符合 CRI 标准。

    功能和特点

    1. 兼容性cri-dockerd 保持与现有 Docker 工作流程和工具的兼容性,用户可以继续使用熟悉的 Docker CLI 和生态系统。
    2. 标准化接口:通过实现 CRI 接口,cri-dockerd 确保 Kubernetes 可以与 Docker 一起无缝工作。
    3. 开源项目cri-dockerd 是一个社区驱动的开源项目,保证了其可持续性和社区支持。

    安装Docker

    1、配置第三方镜像源

    ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    2、安装Docker

    dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

    3、修改Docker配置文件,修改私有仓库地址。

    1. tee /etc/docker/daemon.json<<-'EOF'
    2. {
    3. "registry-mirrors": [
    4. "https://mirror.ccs.tencentyun.com"
    5. ],
    6. "insecure-registries": ["192.168.XX.101"]
    7. }
    8. EOF

    4、启动并设置开机启动项

    1. systemctl start docker
    2. systemctl enable docker.service

    安装 cri-dockerd

    1、下载cri-dockerd软件包

    wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.14/cri-dockerd-0.3.14-3.el8.x86_64.rpm

    2、安装cri-dockerd

    1. ~]# rpm -ivh cri-dockerd-0.3.14-3.el8.x86_64.rpm 
    2. ~]# cri-dockerd --version
    3. cri-dockerd 0.3.14 (683f70f)

    3、修改cri-dockerd服务文件,增加红色字体配置(配置网络插件和pause image),否则~~哼哼

    ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=192.168.XX.101/kubeadm/pause:3.9

    4、启动并配置开机启动项

    1. systemctl enable cri-docker
    2. systemctl enable --now cri-docker.socket
    3. systemctl start cri-docker

    安装kubeadm、kubelet、kubectl

    同《kubernetes集群部署:环境准备及master节点部署(二)

    Node加入集群

    同《kubernetes集群部署:node节点部署和CRI-O运行时安装(三)

    但是初始化启动文件需要改一下:

    ~]# cat kubeadm-join.default.yaml 
    apiVersion: kubeadm.k8s.io/v1beta3
    caCertPath: /etc/kubernetes/pki/ca.crt
    discovery:
      bootstrapToken:
        apiServerEndpoint: k8s130-node190:6443
        token: abcdef.0123456789abcdef
        unsafeSkipCAVerification: true
      timeout: 5m0s
      tlsBootstrapToken: abcdef.0123456789abcdef
    kind: JoinConfiguration
    nodeRegistration:
      criSocket: unix:///run/cri-dockerd.sock
      imagePullPolicy: IfNotPresent
      name: k8s130-node189
      taints: null

    安装之后处理

    同《kubernetes集群部署:node节点部署和CRI-O运行时安装(三)

    集群搭建完成后联调

    1、启动1个mysql,然后启动3个myweb,可看到均衡调度到了2个Node上了。

    2、分别创建了mysql的svc和myweb的svc,并将myweb的8080端口映射到Node上的30080,通过如下URL访问效果如下:

    至此,我们部署的1master+2node的集群环境,分别尝试使用了Containerd、CRI-O、Docker三种运行时,其中Docker比较特殊,需要额外部署一个CRI(cri-docker)作为桥梁。本人不禁感叹一声:昔日的小甜甜 现在的牛夫人。

  • 相关阅读:
    Android学习笔记 37. OKhttp自定义配置
    与六年测试工程师促膝长谈,他分享的这些让我对软件测试工作有了全新的认知~
    牛客网 ACM 模式 输入输出
    【动手学深度学习】CNN浅记
    Springboot中上一个定时任务没执行完,是否会影响下一个定时任务执行分析及结论
    java-net-php-python-ssm大学英语阅读大赛管理系统计算机毕业设计程序
    OpenSIPS2.4 修改from和to
    B/B+树索引和哈希索引
    git 命令总结
    二维矩阵乘法的意义
  • 原文地址:https://blog.csdn.net/avatar_2009/article/details/140228737