> 技术文档 > cri-docker部署高版本k8s

cri-docker部署高版本k8s


1.安装docker

  • 添加docker镜像到本地:

    wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 然后输入命令:

    yum install -y --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 
  • 修改配置文件:

    mkdir /etc/docker# Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes推荐使用systemd来代替cgroupfscat < /etc/docker/daemon.json{\"storage-driver\": \"devicemapper\",\"exec-opts\": [\"native.cgroupdriver=systemd\"],\"registry-mirrors\": [ \"https://f633c540bf7445e6b69d3a41fa95b3da.mirror.swr.myhuaweicloud.com\" ]}eof
    cat < /etc/sysconfig/dockerOPTIONS=\'--selinux-enabled --log-driver=journald --signature-verification=false\'eof
  • 重启,并设置开机自启:

    systemctl restart docker && systemctl enable docker

2.安装cri-Dockerd:

  • 下载:

    wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.2/cri-dockerd-0.3.2-3.el7.x86_64.rpm
  • 安装:

    yum install -y cri-dockerd-0.3.2-3.el7.x86_64.rpm
  • 修改配置文件:

    vi /usr/lib/systemd/system/cri-docker.service# 修改10行的ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
  • 重启,并设置开机自启:

    systemctl restart cri-docker && systemctl enable cri-docker

3.安装k8s组件:

  • 配置k8syum仓库:

    cat < /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF
  • 安装kubeadm、kubelet和kubectl

    组件 说明 kubeadm 搭建kubernetes集群的工具 kubelet 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器 kubectl 用来与集群通信的命令行工具。
    yum install --setopt=obsoletes=0 kubelet-1.27.6 kubeadm-1.27.6 kubectl-1.27.6 -y
  • 编辑/etc/sysconfig/kubelet,配置kubelet的cgroup

    cat < /etc/sysconfig/kubeletKUBELET_CGROUP_ARGS=\"--cgroup-driver=systemd\"KUBE_PROXY_MODE=\"ipvs\"eof
  • 设置kubelet开机自启

    systemctl enable kubelet

4.准备集群镜像:

  • 在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看

    kubeadm config images list
  • 下载镜像:此镜像在kubernetes的仓库中,由于网络原因,无法连接,下面提供了一种替代方案下载这些镜像

    kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers

5.集群初始化:

  • 在 master 节点

    • 创建集群

      # --apiserver-advertise-address:集群入口master的ipkubeadm init \\--apiserver-advertise-address=192.168.235.131 \\--image-repository registry.aliyuncs.com/google_containers \\--service-cidr=10.96.0.0/16 \\--pod-network-cidr=10.244.0.0/16 \\--kubernetes-version v1.27.6 \\--cri-socket=unix:///var/run/cri-dockerd.sock
      # 如果出现报错,可以清理集群初始化产生的文件重新尝试rm -rf /etc/kubernetes/*rm -rf /var/lib/etcd/*rm -rf ~/.kube/*
      # 如果忘记添加节点密钥,可以选择重新生成kubeadm token create --print-join-command
      # 成功执行后将给出将node节点加入集群的命令kubeadm join 192.168.235.131:6443 --token 4u7bkb.edx2uq5d27biwg2u \\ --discovery-token-ca-cert-hash sha256:62e2cec9f1db27ff2ec5b579f01fad00c6fb8cb56f6e749c80dfcb4cbb5c5a28
    • 创建必要文件(创建后用户可使用kubectl命令

      mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/config
  • 在 node 节点,将node节点加入集群(命令各不相同,需要在住master节点创建集群后获取命令

    kubeadm join 192.168.235.131:6443 --token 4u7bkb.edx2uq5d27biwg2u \\ --discovery-token-ca-cert-hash sha256:62e2cec9f1db27ff2ec5b579f01fad00c6fb8cb56f6e749c80dfcb4cbb5c5a28
  • 在 master 节点,在查看集群状态 此时的集群状态为NotReady,这是因为还没有配置网络插件

    [root@master ~]# kubectl get nodesNAME     STATUS     ROLES   AGE     VERSIONmaster   NotReady   master   12m     v1.17.4node1   NotReady      2m11s   v1.17.4node2   NotReady      10s     v1.17.4