第三步:容器运行时环境部署

  1. 安装Docker组件

    • 执行命令:apt-get install -y docker-ce=5:20.10.12~3-0~ubuntu-focal docker-ce-cli=5:20.10.12~3-0~ubuntu-focal containerd.io=1.5.9-1 docker-compose-plugin=2.3.3-0~ubuntu-focal
    • 添加阿里云镜像加速:mkdir -p /etc/docker && echo '{"registry-mirrors":["https://<your-id>.mirror.aliyuncs.com"]}' > /etc/docker/daemon.json
    • 验证安装:docker --version && docker-compose --version
  2. CRI-Docker部署

    • 下载适配1.24+版本的CRI-Dockerd(如v0.3.1)
    • 编译安装:make all && make install
    • 配置systemd服务:修改/usr/lib/systemd/system/cri-docker.service中的--network-plugin=cni参数

第四步:Kubernetes组件安装

  1. 系统预处理

    • 永久关闭Swap:swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
    • 加载内核模块:
      modprobe br_netfilter
      echo "br_netfilter" >> /etc/modules-load.d/k8s.conf
      

  2. 安装K8s组件

    • 添加仓库源:apt-get install -y apt-transport-https ca-certificates curl && curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
    • 安装指定版本(如1.24.3):
      apt-get install -y kubeadm=1.24.3-00 kubelet=1.24.3-00 kubectl=1.24.3-00
      

  3. CRI集成

    • 修改kubelet配置:echo "KUBELET_EXTRA_ARGS=--container-runtime=remote --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock" > /etc/default/kubelet

第五步:集群初始化

  1. Master节点准备

    • 生成配置文件模板:kubeadm config print init-defaults > kubeadm.yaml
    • 关键配置修改:
      apiVersion: kubeadm.k8s.io/v1beta3
      kind: InitConfiguration
      nodeRegistration:
        criSocket: unix:///var/run/cri-dockerd.sock
      networking:
        podSubnet: 192.168.0.0/16
      

  2. 集群初始化

    • 执行初始化:kubeadm init --config=kubeadm.yaml --upload-certs | tee init.log
    • 记录关键信息:grep -A2 "kubeadm join" init.log
  3. 节点加入

    • Worker节点执行:kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash> --cri-socket unix:///var/run/cri-dockerd.sock

第六步:网络插件部署

  1. Calico安装

    • 下载对应版本manifest:curl https://docs.projectcalico.org/manifests/calico.yaml -O
    • 修改CIDR配置:sed -i 's/192.168.0.0/192.168.0.0/g' calico.yaml
    • 部署网络插件:kubectl apply -f calico.yaml
  2. 集群验证

    • 检查节点状态:kubectl get nodes -o wide
    • 测试DNS解析:kubectl run busybox --image=busybox:1.28 --restart=Never --rm -it -- nslookup kubernetes.default
    • 检查网络连通性:kubectl get pods -n kube-system -l k8s-app=calico-node
Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐