温馨提示×

如何顺利在Debian上安装K8s

小樊
36
2025-11-29 08:40:50
栏目: 智能运维

在 Debian 上用 kubeadm 安装 Kubernetes 的简明步骤

一 环境准备

  • 系统建议:使用 Debian 12(Bookworm),每个节点至少 2 核 CPU、2GB 内存、20GB 磁盘,并确保节点间 互通网络
  • 主机名与解析:为每个节点设置唯一 hostname,并在所有节点的 /etc/hosts 中添加解析,便于组件通信。
  • 关闭交换分区:执行 sudo swapoff -a,并在 /etc/fstab 中注释掉 swap 行,避免 kubelet 异常。
  • 时间同步:安装并启用 NTP/chrony,保证节点时间一致。
  • 防火墙放行:如使用 UFW,在主控节点放行 6443、2379、2380、10250、10251、10252、10255;在工作节点放行 1025030000–32767(NodePort 范围)。

二 安装容器运行时 containerd

  • 安装软件包:sudo apt update && sudo apt install -y containerd
  • 启用模块与内核参数:
    sudo tee /etc/modules-load.d/containerd.conf <<EOF
    overlay
    br_netfilter
    EOF
    sudo modprobe overlay
    sudo modprobe br_netfilter
    sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf <<EOF
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    EOF
    sudo sysctl --system
    
  • 生成默认配置并启用服务:
    sudo mkdir -p /etc/containerd
    containerd config default | sudo tee /etc/containerd/config.toml
    sudo systemctl enable --now containerd
    

说明:Kubernetes 官方推荐 containerd 作为容器运行时;如使用 Docker,需额外配置其 cgroup 驱动systemd 管理。

三 安装 kubeadm kubelet kubectl

  • 添加 Kubernetes APT 源并安装组件:
    sudo apt update
    sudo apt install -y apt-transport-https curl
    curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor | sudo tee /usr/share/keyrings/kubernetes-archive-keyring.gpg >/dev/null
    echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] 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
    sudo systemctl enable --now kubelet
    

提示:如遇 GPG 兼容性,可使用 signed-by 方式导入密钥;保持 kubelet 为最新稳定版即可。

四 初始化控制平面并加入工作节点

  • 在主控节点初始化(按需调整 –pod-network-cidr–service-cidr):
    sudo kubeadm init \
      --pod-network-cidr=10.244.0.0/16 \
      --service-cidr=10.96.0.0/12
    
  • 配置 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-network-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 init 输出中的完整命令):
    sudo kubeadm join <MASTER_IP>:6443 \
      --token <TOKEN> \
      --discovery-token-ca-cert-hash sha256:<HASH>
    
  • 验证:
    kubectl cluster-info
    kubectl get nodes
    kubectl get pods -A
    

说明:若镜像拉取缓慢,可在 kubeadm init 时使用 –image-repository=registry.aliyuncs.com/google_containers 加速。

五 常见问题与快速排查

  • 节点 NotReady:检查 Pod 网络插件是否已成功部署(如 Flannel/CalicoDaemonSet 是否 Running)。
  • kubelet 反复重启:确认已 关闭 Swap、内核参数生效、容器运行时 containerd 正常运行。
  • 镜像拉取失败:更换为国内镜像源(如 registry.aliyuncs.com/google_containers),或手动 crictl pull
  • 端口不通:核对 UFW/安全组 是否放行 6443、10250、30000–32767 等必要端口。
  • 加入节点失败:在主控节点执行 kubeadm token create --print-join-command 重新生成 join 命令。

0