Debian系统与Kubernetes的集成实践
导读:一 环境准备与系统基线 节点基线:建议每个节点至少具备2 核 CPU、2 GB 内存、20 GB 磁盘,并确保节点间网络互通;操作系统建议使用Debian 12或更高版本。 主机名与解析:为各节点设置唯一主机名,并在所有节点的**/etc...
一 环境准备与系统基线
- 节点基线:建议每个节点至少具备2 核 CPU、2 GB 内存、20 GB 磁盘,并确保节点间网络互通;操作系统建议使用Debian 12或更高版本。
- 主机名与解析:为各节点设置唯一主机名,并在所有节点的**/etc/hosts**中完成解析,便于集群内通信与排障。
- 关闭 Swap:Kubelet 要求关闭 Swap,执行:
sudo swapoff -a,并在**/etc/fstab**中注释或移除 swap 条目,避免重启后恢复。 - 容器运行时:生产环境优先使用containerd;若使用 Docker,需确保其与 Kubernetes 版本兼容并正确配置 cgroup 驱动。
- 防火墙与端口:放行控制面与工作节点通信所需端口,例如6443(API Server)、10250(kubelet)等,避免节点 NotReady 或组件异常。
二 安装容器运行时与Kubernetes组件
- 安装 containerd(推荐):
- 安装与启用:
sudo apt install -y containerd - 生成默认配置:
sudo mkdir -p /etc/containerd & & containerd config default | sudo tee /etc/containerd/config.toml - 按需调整 cgroup 驱动(与 kubelet 保持一致,常见为 systemd),然后:
sudo systemctl daemon-reload & & sudo systemctl enable --now containerd
- 安装与启用:
- 安装 Docker(可选):
- 添加仓库并安装:
sudo apt update & & sudo apt install -y docker-ce docker-ce-cli containerd.io - 启动与开机自启:
sudo systemctl start docker & & sudo systemctl enable docker
- 添加仓库并安装:
- 添加 Kubernetes APT 仓库并安装组件:
- 导入 GPG 与仓库(示例为 Debian 12 “bookworm”):
sudo apt update sudo apt install -y apt-transport-https ca-certificates curl gnupg curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] 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 - 说明:Kubernetes 官方 APT 仓库当前仍使用发行代号xenial,在Debian 12上可用;安装后将 kubelet 设为开机自启:
sudo systemctl enable --now kubelet。
- 导入 GPG 与仓库(示例为 Debian 12 “bookworm”):
三 初始化控制平面与网络插件
- 初始化控制平面(单主示例):
sudo kubeadm init \ --apiserver-advertise-address < MASTER_IP> \ --control-plane-endpoint < MASTER_IP> :6443 \ --pod-network-cidr 10.244.0.0/16 \ --service-cidr 10.100.0.0/16 \ --image-repository registry.aliyuncs.com/google_containers- 常见参数说明:
- –pod-network-cidr:与所选 CNI 插件规划保持一致(如 Flannel 常用10.244.0.0/16)。
- –service-cidr:集群 Service 网段,避免与宿主机/内网网段冲突。
- –image-repository:在受限网络环境下可指定国内镜像仓库以加速拉取。
- 常见参数说明:
- 配置 kubectl:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config - 安装 CNI 网络插件(二选一):
- 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:
- 验证:
kubectl cluster-info、kubectl get nodes应显示控制平面节点状态为Ready。
四 加入工作节点与日常运维
- 加入工作节点:在 Master 初始化完成后,使用输出的
kubeadm join ...命令在各 Worker 上执行,例如:
加入成功后,回到 Master 执行sudo kubeadm join < MASTER_IP> :6443 \ --token < TOKEN> \ --discovery-token-ca-cert-hash sha256:< HASH>kubectl get nodes查看节点状态。 - 节点管理与资源:
- 使用节点标签进行调度:
kubectl label node < node> disktype=ssd - 为工作负载设置资源请求/限制,提升稳定性与密度。
- 如需 GPU:安装对应驱动与设备插件,并在 Pod 中请求
nvidia.com/gpu。
- 使用节点标签进行调度:
- 监控与可视化:
- 部署 Prometheus + Grafana(可用 Operator/Helm),监控集群与应用指标。
- 使用 Kubernetes Dashboard 或终端工具 K9s 进行日常巡检与快速排障。
五 常见问题与优化建议
- 节点 NotReady:优先检查Swap 是否彻底关闭、CNI 是否已安装并 Running、容器运行时是否就绪、以及防火墙/安全组端口是否放行。
- 镜像拉取失败:在受限网络中使用
--image-repository registry.aliyuncs.com/google_containers或配置私有镜像仓库/镜像代理。 - 版本与兼容性:保持 kubelet/kubeadm/kubectl 版本一致;选择与 Kubernetes 版本匹配的 containerd/Docker 版本。
- 生产建议:
- 采用多控制平面与高可用拓扑(如 kubeadm HA)。
- 启用 RBAC、网络策略、Pod 安全准入与审计日志。
- 使用 Helm 管理常用应用与组件,结合 GitOps 流程进行交付与回滚。
- 定期升级集群与节点组件,遵循官方支持周期。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian系统与Kubernetes的集成实践
本文地址: https://pptw.com/jishu/789751.html
