温馨提示×

Debian系统如何配置Kubernetes安装

小樊
34
2025-12-15 02:28:44
栏目: 智能运维

在 Debian 上使用 kubeadm 部署 Kubernetes 集群

一 环境准备与前置条件

  • 节点与网络
    • 至少准备 1 台 Master + 1 台 Worker,推荐 2 核 CPU、2GB 内存、20GB 磁盘 以上。
    • 各节点需 主机名唯一时间同步(如 NTP)、互通网络,并 关闭 Swap:执行 sudo swapoff -a,并在 /etc/fstab 中注释 swap 行。
  • 系统源与依赖
    • 更新系统:sudo apt update && sudo apt upgrade -y
    • 安装工具:sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
  • 容器运行时
    • 安装 containerd(推荐)或 Docker CE。下面分别给出两种常用方式,二选一即可。

二 安装容器运行时

  • 方案 A containerd(推荐)
    • 安装:sudo apt install -y containerd
    • 生成默认配置并启用 CRI:sudo mkdir -p /etc/containerd && containerd config default | sudo tee /etc/containerd/config.toml
    • 重启并开机自启:sudo systemctl restart containerd && sudo systemctl enable containerd
  • 方案 B Docker CE
    • 添加 GPG 与源并安装:
      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 均通过 CRI 与容器运行时交互。

三 安装 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
    sudo systemctl enable --now kubelet
    
  • 说明
    • 使用 apt-mark hold 防止组件被意外升级导致版本不一致。

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

  • 初始化 Master(将 替换为你的主节点 IP;如使用 Flannel,Pod CIDR 用 10.244.0.0/16;如使用 Calico,常见为 192.168.0.0/16
    sudo kubeadm init --apiserver-advertise-address=<master-ip> --pod-network-cidr=10.244.0.0/16
    # 或使用 Calico 时:
    # sudo kubeadm init --apiserver-advertise-address=<master-ip> --pod-network-cidr=192.168.0.0/16
    
  • 配置 kubectl(普通用户)
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  • 安装 CNI 网络插件(二选一)
    • 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
      # 或新版 Calico Operator 方式:
      # kubectl apply -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
      # kubectl apply -f https://docs.projectcalico.org/manifests/custom-resources.yaml
      
  • 验证
    kubectl get nodes
    kubectl cluster-info
    kubectl get pods -n kube-system
    
  • 说明
    • 初始化完成后,控制台会输出 kubeadm join ... 命令,用于 Worker 加入集群。

五 加入工作节点与常用运维

  • 加入 Worker
    • 使用 kubeadm init 输出中的完整命令,或重新生成:
      # 重新生成 join 命令(在 Master 上)
      kubeadm token create --print-join-command
      # Worker 上执行输出的命令,例如:
      sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
      
  • 防火墙与安全组(示例为 UFW)
    sudo ufw allow 6443/tcp
    sudo ufw allow 10250/tcp
    sudo ufw allow 10251/tcp
    sudo ufw allow 10252/tcp
    sudo ufw allow 10255/tcp
    sudo ufw reload
    
  • 常用维护
    • 重置节点(重装时使用):sudo kubeadm reset
    • 清理 CNI 残留:sudo rm -rf /etc/cni/net.d
    • 重置 iptables:sudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -X
  • 说明
    • 生产环境建议开放或放通 6443、10250、10251、10252 等端口,并按需配置 30000–32767 NodePort 范围。

0