Debian环境下Kubernetes部署的最佳实践分享
导读:一 环境与规划 操作系统与版本:优先选用 Debian 12(Bookworm),内核保持最新稳定版,以获得更好的容器与网络栈兼容性与安全修复。 硬件基线:控制平面建议至少 2 核 CPU / 4GB RAM / 20GB 磁盘;工作节点...
一 环境与规划
- 操作系统与版本:优先选用 Debian 12(Bookworm),内核保持最新稳定版,以获得更好的容器与网络栈兼容性与安全修复。
- 硬件基线:控制平面建议至少 2 核 CPU / 4GB RAM / 20GB 磁盘;工作节点视负载适当提升。
- 网络与互通:节点间需 稳定互通,规划好 Pod CIDR 与 Service CIDR,避免与现有网段冲突;示例:Pod 使用 10.244.0.0/16,Service 使用 10.96.0.0/12。
- 主机名与解析:为每个节点设置唯一 hostname,并在 /etc/hosts 或 DNS 中维护解析,便于故障排查与组件通信。
- 安全基线:统一使用 非 root 运维账户,SSH 密钥登录,最小化暴露面。
二 系统加固与内核参数
- 关闭 Swap:Kubelet 不支持 Swap,需永久关闭。
- 执行:
sudo swapoff -a - 持久化:
sudo sed -i '/ swap / s/^/#/' /etc/fstab
- 执行:
- 加载内核模块与开启桥接转发:
- 模块:
sudo modprobe overlay & & sudo modprobe br_netfilter - 开机加载:
echo -e "overlay\nbr_netfilter" | sudo tee /etc/modules-load.d/k8s.conf - 转发与网桥规则:
echo -e "net.bridge.bridge-nf-call-iptables=1\nnet.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-kubernetes.conf & & sudo sysctl --system
- 模块:
- 防火墙放行控制面与节点通信端口(示例为 UFW):
sudo ufw allow 6443/tcpsudo ufw allow 2379:2380/tcpsudo ufw allow 10250/tcpsudo ufw allow 10251/tcpsudo ufw allow 10252/tcpsudo ufw allow 10255/tcpsudo ufw reload
- 容器运行时:生产环境优先 containerd;如使用 Docker,需确保 containerd 组件一并安装并启用。
三 容器运行时与Kubernetes组件安装
- 安装 containerd(推荐):
- 安装包:
sudo apt-get update & & sudo apt-get install -y containerd - 生成默认配置:
sudo containerd config default | sudo tee /etc/containerd/config.toml - 启用并启动:
sudo systemctl enable --now containerd
- 安装包:
- 安装 kubeadm、kubelet、kubectl:
- 添加仓库与密钥(示例):
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor | sudo tee /usr/share/keyrings/kubernetes-apt-keyring.gpg > /dev/nullecho "deb [signed-by=/usr/share/keyrings/kubernetes-apt-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
- 安装与冻结版本:
sudo apt-get update & & sudo apt-get install -y kubelet kubeadm kubectl & & sudo apt-mark hold kubelet kubeadm kubectl
- 添加仓库与密钥(示例):
- 说明:Debian 12 仓库代号通常为 bookworm,但 Kubernetes APT 源目前仍使用代号 kubernetes-xenial,属正常现象。
四 集群初始化与网络插件
- 初始化控制平面(示例):
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12- 配置 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 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
- Flannel:
- 加入工作节点:在主节点
kubeadm init成功后输出 kubeadm join 命令,在工作节点执行以加入集群。 - 验证:
kubectl get nodes与kubectl get pods -A检查节点与系统 Pod 状态。
五 安全加固与运维建议
- 运行时安全:容器以 非 root 用户运行,镜像保持 最小化 与及时更新;定期升级 Kubernetes 组件 与节点补丁。
- 访问控制:为 kubeconfig 设置最小权限,使用 RBAC 精细授权;对外暴露仅必要的 6443 等端口,内部组件端口限制为节点间访问。
- 可观测性:部署 监控与日志(如节点与容器指标、日志采集与告警),便于快速定位故障与容量评估。
- 网络策略:启用 NetworkPolicy 实现命名空间与服务间隔离,减少横向移动风险。
- 镜像与仓库:优先使用可信 镜像仓库 与 签名的容器镜像,避免运行不受信任来源镜像。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian环境下Kubernetes部署的最佳实践分享
本文地址: https://pptw.com/jishu/755893.html
