温馨提示×

Debian上Kubernetes部署有哪些步骤

小樊
39
2025-12-07 04:27:04
栏目: 智能运维

在 Debian 上部署 Kubernetes 的标准流程

一 环境与前置准备

  • 节点规划:至少准备1 台控制平面1 台工作节点;推荐 Debian 12,各节点具备≥2 核 CPU、≥2GB 内存、≥20GB 磁盘,并配置静态 IP稳定互通网络
  • 主机名与解析:为每台机器设置唯一主机名,并在所有节点的 /etc/hosts 中添加 IP 与主机名映射,便于内网解析。
  • 时间同步:安装并启用 NTP/chrony,保证节点间时间一致(避免证书校验与组件异常)。
  • 关闭 Swap:执行 sudo swapoff -a,并在 /etc/fstab 中注释 swap 行,Kubelet 要求无 Swap 运行。
  • 内核与网络参数:加载模块并设置桥接与转发,执行:
    • sudo modprobe overlay && sudo modprobe br_netfilter
    • 写入 /etc/sysctl.d/99-kubernetes-k8s.conf
      • net.bridge.bridge-nf-call-iptables = 1
      • net.ipv4.ip_forward = 1
    • 应用:sudo sysctl --system
  • 防火墙放行(如使用 ufw):
    • 控制平面放行:6443、2379、2380、10250、10251、10252、10255/TCP
    • 工作节点放行:10250/TCPNodePort 范围 30000–32767/TCP
  • 唯一性校验:确保各节点 MAC 地址product_uuid 唯一,避免克隆环境导致冲突。

二 安装容器运行时

  • 方案 A Containerd(推荐,与 kubeadm 配合更简洁)
    • 安装:sudo apt update && sudo apt install -y containerd
    • 生成默认配置并启用:containerd config default | sudo tee /etc/containerd/config.toml && sudo systemctl restart containerd && sudo systemctl enable containerd
  • 方案 B Docker(亦可)
    • 安装 Docker 源与组件:
      • curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
      • echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
      • sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
      • sudo systemctl start docker && sudo systemctl enable docker

三 安装 kubeadm kubelet kubectl

  • 添加 Kubernetes APT 源并安装:
    • curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    • echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    • sudo apt update && sudo apt install -y kubelet kubeadm kubectl
    • 锁定版本:sudo apt-mark hold kubelet kubeadm kubectl(避免被系统升级干扰)

四 初始化控制平面与配置 kubectl

  • 初始化命令(按需调整参数):
    • 单控制平面常用:
      • sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    • 指定 API 地址与高可用入口(示例):
      • sudo kubeadm init --apiserver-advertise-address=<MASTER_IP> --control-plane-endpoint=<MASTER_IP>:6443 --pod-network-cidr=10.244.0.0/16
    • 国内镜像加速(可选):
      • --image-repository registry.aliyuncs.com/google_containers
  • 配置 kubectl:
    • mkdir -p $HOME/.kube
    • sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    • sudo chown $(id -u):$(id -g) $HOME/.kube/config

五 安装网络插件与工作节点加入及验证

  • 安装 Pod 网络插件(二选一,与上面 Pod CIDR 保持一致):
    • Flannel:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    • Calico:kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  • 加入工作节点:在主节点初始化完成后,使用输出的 kubeadm join ... --token <token> --discovery-token-ca-cert-hash sha256:<hash> 在各 Worker 上执行。
  • 验证:
    • kubectl cluster-info
    • kubectl get nodes
    • kubectl get pods -A
  • 常见问题速查:
    • 节点 NotReady:多因网络插件未就绪或 Pod CIDR 不匹配,检查插件 Pod 状态与 kubelet 日志。
    • 加入失败:确认 token 未过期6443/10250 等端口放行、时间同步正常、各节点 MAC/product_uuid 唯一。

0