温馨提示×

Kubernetes部署在Debian上要注意什么

小樊
34
2025-12-07 04:28:02
栏目: 智能运维

在 Debian 上部署 Kubernetes 的关键注意事项

一 系统与内核准备

  • 使用受支持的 Debian 12(Bookworm),并满足最低资源:每节点至少 2 核 CPU、2GB 内存、20GB 磁盘,保证网络与时钟同步正常。
  • 关闭 Swap:临时执行 sudo swapoff -a,并注释 /etc/fstab 中的 swap 行以永久生效。
  • 加载必要内核模块并开启转发与桥接相关参数:
    • 模块:overlaybr_netfilter
    • sysctl:net.bridge.bridge-nf-call-iptables=1net.bridge.bridge-nf-call-ip6tables=1net.ipv4.ip_forward=1
  • 主机名与解析:为每个节点设置唯一 hostname,并在 /etc/hosts 中维护 IP–主机名 映射,避免解析异常。
  • 安全模块与防火墙:Debian 默认使用 AppArmor;若未专门配置策略,建议先停止并禁用 apparmor 以免干扰容器运行。生产环境不建议直接关闭防火墙,应改为按需放行端口。

二 容器运行时与依赖

  • 运行时选择:自 v1.24 起,Kubernetes 移除内置 dockershim,推荐使用 containerd(或 CRI-O)。如必须使用 Docker,需通过 cri-dockerd 适配。
  • 安装与启用 containerd:
    • 安装包:containerd.io
    • 生成默认配置:containerd config default | sudo tee /etc/containerd/config.toml
    • 启用并启动:sudo systemctl enable --now containerd
  • 基础依赖包:apt-transport-httpsca-certificatescurlgnupg2software-properties-commonlibseccomp2 等,确保仓库与签名校验可用。

三 Kubernetes 组件安装与初始化

  • APT 源与 GPG:导入 Kubernetes APT 仓库 的 GPG 公钥,添加源(如 deb https://apt.kubernetes.io/ kubernetes-xenial main),更新索引后安装 kubelet、kubeadm、kubectl,并用 sudo apt-mark hold kubelet kubeadm kubectl 固定版本。
  • 初始化控制平面:在 Master 节点执行 sudo kubeadm init,常见参数包括:
    • --pod-network-cidr(如 10.244.0.0/16 配合 Flannel,或 192.168.0.0/16 配合 Calico)
    • --apiserver-advertise-address(控制平面对外地址)
    • 国内环境可指定镜像仓库(如 registry.aliyuncs.com/google_containers
  • 配置 kubectl:复制 /etc/kubernetes/admin.conf$HOME/.kube/config 并修正属主。
  • 加入工作节点:使用 kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

四 网络与安全配置

  • 安装 CNI 网络插件:集群就绪后必须安装 Pod 网络插件,否则节点 NotReady。常见选择:
    • Flannelkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    • Calicokubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  • 防火墙与端口:不要直接 ufw disable,而是按需放行 6443(APIServer)10250(kubelet)2379–2380(etcd)10251/10252(kube-scheduler/controller-manager)、以及 8472(Flannel VXLAN) 等端口。
  • 安全基线:启用 AppArmorSELinux 的容器合规策略;为 kubelet 配置合适的 cgroupssystemd 驱动;对外暴露服务优先使用 Service: LoadBalancer/NodePort 并配合网络策略(NetworkPolicy)。

五 常见问题与运维建议

  • Pod 启动失败排查:优先查看 Pod 事件与容器日志;若因环境变量过多导致问题,可在 Pod spec 中设置 enableServiceLinks: false
  • 节点不可调度:检查 污点(Taints)容忍(Tolerations) 是否匹配;必要时使用 kubectl taint nodes --all node-role.kubernetes.io/control-plane- 临时去除控制平面污点用于调试。
  • 版本与升级:Kubernetes 跨版本升级兼容性较弱,建议采用灰度与多集群策略,先升级非核心业务;为 kubelet/kubeadm/kubectl 使用版本一致的软件包。
  • 可观测性:部署 监控与日志(如 Prometheus + GrafanaELK/EFK),并建立 节点与组件健康检查 与告警。

0