一 环境准备与系统基线
- 节点基线:建议每个节点至少具备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 上执行,例如:sudo kubeadm join <MASTER_IP>:6443 \ --token <TOKEN> \ --discovery-token-ca-cert-hash sha256:<HASH>加入成功后,回到 Master 执行
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 流程进行交付与回滚。
- 定期升级集群与节点组件,遵循官方支持周期。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1486688.html