温馨提示×

Debian安装K8s步骤有哪些

小樊
46
2025-11-23 10:09:03
栏目: 智能运维

在 Debian 上使用 kubeadm 安装 Kubernetes 的标准流程

一 环境准备

  • 建议系统为 Debian 12(Bookworm),每个节点至少 2 核 CPU、2GB 内存、20GB 磁盘,并保证节点间网络互通。
  • 设置主机名并完善 /etc/hosts(便于解析与控制平面高可用),例如:
    • 主节点:sudo hostnamectl set-hostname k8s-master01.test.local
    • 工作节点:sudo hostnamectl set-hostname k8s-worker01.test.local
    • /etc/hosts 示例:
      192.168.1.100 k8s-master01.test.local k8s-master01
      192.168.1.101 k8s-worker01.test.local k8s-worker01
      192.168.1.102 k8s-worker02.test.local k8s-worker02
      
  • 关闭交换分区(Kubelet 要求):
    • 临时:sudo swapoff -a
    • 永久:sudo sed -i '/ swap / s/^/#/g' /etc/fstab
  • 时间同步:安装并启用 NTP(如 sudo apt install -y ntp),避免证书校验与组件异常。
  • 防火墙放行(如使用 UFW):
    • 主节点放行:6443/tcp、2379-2380/tcp、10250-10252/tcp、10255/tcp
    • 工作节点放行:10250/tcp、30000:32767/tcp(NodePort 范围)
      以上准备可显著提升初始化成功率与后续网络连通性。

二 安装容器运行时 containerd

  • 安装 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 containerd config default | sudo tee /etc/containerd/config.toml
    • 将 SystemdCgroup 设为 true(可选,视环境而定):在 [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] 下添加 SystemdCgroup = true
    • sudo systemctl enable --now containerd
      说明:Kubernetes 官方已转向 containerd 作为推荐运行时;如使用 Docker,也需确保其内置的 containerd 正常工作。

三 安装 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
    
  • 可选:指定版本(示例为 v1.23.6
    • sudo apt-get install -y kubelet=1.23.6-00 kubeadm=1.23.6-00 kubectl=1.23.6-00
      锁定版本有助于生产环境的可控与可复现。

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

  • 在主节点初始化(按需调整参数):
    • 使用 Flannel:sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    • 指定服务网段与镜像仓库(国内环境常用镜像加速):
      sudo kubeadm init --apiserver-advertise-address=<MASTER_IP> --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.10.0.0/16 --pod-network-cidr=172.16.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
    
  • 安装 Pod 网络插件(二选一,保持与 --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
      以上步骤完成控制平面部署与节点加入,网络插件就绪后节点状态将变为 Ready

五 常见问题与排错要点

  • 镜像拉取慢或失败:在 kubeadm init 中使用 --image-repository registry.aliyuncs.com/google_containers 加速;或提前在各节点 docker pull/crictl 拉取所需镜像。
  • 节点 NotReady:确认已安装并生效 CNI 网络插件,且 --pod-network-cidr 与插件配置一致;检查 10250 等端口连通性。
  • 端口被占用或防火墙拦截:核对 6443/10250/30000-32767 等端口策略;云厂商安全组同样需要放行。
  • 虚拟克隆环境异常:确保各节点 MAC 地址product_uuid 唯一,避免 kubelet 误判为同一节点。
  • 时间与证书问题:启用 NTP 同步,避免因时间漂移导致组件异常。
    这些要点覆盖镜像、网络、端口、虚拟化与时间的常见故障面。

0