温馨提示×

Debian Kubernetes安装最佳实践

小樊
43
2025-11-15 11:15:34
栏目: 智能运维

Debian 上部署 Kubernetes 的最佳实践

一 环境与规划

  • 操作系统与版本:优先选择 Debian 12(Bookworm),内核保持最新稳定版,以获得更好的容器与网络栈支持。
  • 硬件基线:控制平面建议至少 2 核 CPU / 4GB 内存 / 20GB 磁盘;工作节点按业务负载提升规格。
  • 网络与互通:所有节点间需 IP 互通,规划好 Pod CIDRService CIDR,避免与现有网段冲突。
  • 主机名与解析:为每个节点设置唯一 hostname,并在 /etc/hosts 或 DNS 中维护解析,便于故障排查与组件通信。
  • 时间同步:启用 NTP/chrony,保证节点时间一致,避免证书校验与调度异常。

二 系统加固与内核参数

  • 关闭 Swap:Kubelet 不支持 Swap,需永久关闭并重启验证。
  • 加载内核模块:启用容器网络所需模块。
  • 内核网络参数:开启桥接流量到 iptables、启用转发。
  • 防火墙与安全组:仅放通必要端口(如 6443 API Server 等),遵循最小暴露原则。
  • 容器运行时:生产推荐使用 containerd(稳定、与 kubelet 集成度高);如使用 Docker,确保使用其内置的 containerd。
  • 系统加固:最小安装、关闭不必要服务、启用自动安全更新(unattended-upgrades)。

三 安装与初始化步骤

  • 更新与基础工具:安装 apt-transport-https、ca-certificates、curl 等。
  • 安装 containerd:配置模块与 sysctl 后启动服务。
  • 添加 Kubernetes APT 源并安装组件:安装 kubelet、kubeadm、kubectl,并标记为 hold 防止意外升级。
  • 初始化控制平面:使用 kubeadm init 指定 Pod CIDR(如 10.244.0.0/16),完成后按提示配置 kubectl
  • 安装 CNI 网络插件:如 CalicoFlannel,确保 Pod 间与节点间网络连通。
  • 加入工作节点:使用 kubeadm join 命令将节点加入集群。
  • 验证:检查节点 Ready 状态、系统 Pod Running 状态与集群信息。

四 网络与安全加固

  • CNI 选择与规划:
    • Flannel:简单易用,适合入门与通用场景。
    • Calico:支持 NetworkPolicy,适合对网络隔离有要求的环境。
    • Cilium:基于 eBPF,在可观测性与网络性能方面更优,适合中大型与高性能场景。
  • 网络策略:为关键业务启用 NetworkPolicy,实现命名空间与服务间的最小权限访问。
  • 访问控制:启用 RBAC,按最小权限分配角色与绑定;对外暴露通过 Service/Ingress 结合认证授权与 WAF。
  • 镜像与运行时安全:使用可信基础镜像、镜像扫描、非 root 运行、Seccomp/AppArmor 等。

五 验证与运维优化

  • 基础验证:
    • 节点状态:kubectl get nodes(应为 Ready)。
    • 系统组件:kubectl get pods -A(核心组件 Running)。
    • 连通性测试:部署 Nginx 示例应用并验证访问。
  • 资源与调度:为工作负载设置合理的 requests/limits,结合 亲和/反亲和 提升可用性与资源利用率。
  • 可观测性:部署 Prometheus + Grafana 监控与 日志收集(如 EFK/ Loki),设置告警。
  • 高可用与升级:生产建议 3 控制平面 + 3 工作节点 的“3x3”架构;使用 kubeadm 进行版本升级与证书轮换,定期备份 etcd
  • 存储与性能:为 PV/PVC 规划 StorageClass 与备份策略;IO 密集场景可考虑 Local PV 或高性能云盘。

0