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来代替cgroupfs
    cat <<eof > /etc/docker/daemon.json
    {
    "storage-driver": "devicemapper",
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": [ "https://f633c540bf7445e6b69d3a41fa95b3da.mirror.swr.myhuaweicloud.com" ]
    }
    eof
    复制代码
    cat << eof > /etc/sysconfig/docker
    OPTIONS='--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 <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
  • 安装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 <<eof > /etc/sysconfig/kubelet
    KUBELET_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的ip
      kubeadm 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/.kube
      cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      chown $(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 nodes
    NAME     STATUS     ROLES    AGE     VERSION
    master   NotReady   master   12m     v1.17.4
    node1    NotReady   <none>   2m11s   v1.17.4
    node2    NotReady   <none>   10s     v1.17.4