温馨提示×

Kubernetes安装过程中Debian需要注意什么

小樊
37
2025-12-21 01:12:42
栏目: 智能运维

Debian 上安装 Kubernetes 的关键注意事项

一 系统与资源准备

  • 选择稳定的操作系统版本,优先使用 Debian 12(Bookworm) 或更高版本,内核与驱动支持更好。
  • 资源基线建议:每节点至少 2 核 CPU、2GB 内存、20GB 磁盘,并确保节点间网络稳定、互通。
  • 主机名与解析:为每个节点设置唯一 hostname,如无内网 DNS,需在 /etc/hosts 中配置节点 IP–主机名 映射,避免组件通信异常。
  • 基础环境:系统更新到最新补丁;确保 systemd 正常运行;如使用云盘或虚拟化,确认驱动与挂载选项稳定。

二 内核与系统参数

  • 禁用 Swap:Kubernetes 要求关闭 Swap。执行 sudo swapoff -a 临时关闭,并在 /etc/fstab 中注释含 “swap” 的行以永久生效。
  • 开启桥接与转发:确保加载 overlay/br_netfilter 模块,并开启桥接流量进入 iptables 与 IPv4 转发。示例:
    • 模块:sudo modprobe overlay && sudo modprobe br_netfilter
    • Sysctl:net.bridge.bridge-nf-call-iptables = 1net.bridge.bridge-nf-call-ip6tables = 1net.ipv4.ip_forward = 1
  • 持久化:sudo sysctl --system 使配置生效。

三 容器运行时与组件安装

  • 运行时选择:自 v1.24 起,Kubernetes 移除内置 dockershim,推荐使用 containerd(或 CRI-O)。如使用 Docker,需通过 cri-dockerd 适配。
  • 安装 containerd(示例):sudo apt install -y containerd && sudo systemctl enable --now containerd,并按需生成默认配置与镜像仓库加速。
  • 安装 kubeadm/kubelet/kubectl:添加 Kubernetes APT 源,安装后将 kubelet/kubeadm/kubectl 标记为 hold,避免被系统升级干扰:sudo apt-mark hold kubelet kubeadm kubectl
  • 版本策略:避免跨多版本跳跃升级,先小版本验证再滚动升级,确保组件版本匹配与控制平面/节点组件兼容。

四 网络与安全配置

  • 防火墙放行:若启用 UFW,需放行关键端口(示例)
    • 控制平面:6443/TCP(API)2379–2380/TCP(etcd)10250/TCP(kubelet)10251/TCP(kube-scheduler)10252/TCP(kube-controller-manager)10255/TCP(kubelet 只读)
    • 工作节点:10250/TCP30000–32767/TCP(NodePort 范围)
  • 网络插件:集群必须安装 CNI 插件后才能调度 Pod。常见选择:
    • Flannelkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    • Calicokubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  • 节点互通:确认节点间 IP 互通时间同步(NTP/chrony)、以及云厂商 安全组/ACL 已放通上述端口与 Pod CIDR。

五 初始化与验证及常见坑

  • 初始化控制平面:
    • 指定 Pod CIDR(与所选网络插件匹配),如 Flannel 常用 10.244.0.0/16sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    • 如使用 Calico,按其文档设置 Pod 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
  • 加入工作节点:使用 kubeadm join ... 命令(由 init 输出),确保 token 未过期CA 哈希一致
  • 验证:kubectl cluster-infokubectl get nodes(状态应为 Ready)。
  • 常见问题速查:
    • 镜像拉取失败:配置 镜像仓库镜像/代理,或提前 kubeadm config images pull
    • Pod 启动失败/环境变量过多:在 Pod spec 中设置 enableServiceLinks: false
    • 节点 NotReady:检查 CNI 是否安装Pod CIDR 是否匹配kubelet 是否 Running防火墙/安全组是否放通。

0