Debian与Kubernetes部署指南
导读:Debian 12 上部署 Kubernetes 的标准流程 一 环境准备 节点规划:至少准备 1 台控制平面(Master) 与 1 台工作节点(Worker);建议 2 核 CPU、2GB RAM、20GB 磁盘 以上,节点间可互通,...
Debian 12 上部署 Kubernetes 的标准流程
一 环境准备
- 节点规划:至少准备 1 台控制平面(Master) 与 1 台工作节点(Worker);建议 2 核 CPU、2GB RAM、20GB 磁盘 以上,节点间可互通,最好使用 静态 IP。
- 系统设置:
- 关闭 Swap:
sudo swapoff -a,并在/etc/fstab中注释 Swap 行。 - 内核与转发:加载模块
overlay、br_netfilter,开启桥接与转发。 - 时间同步:安装并启用 NTP/chrony,避免证书与调度异常。
- 主机名与解析:为各节点设置唯一 hostname,必要时在
/etc/hosts配置解析。 - 防火墙:放通 6443(API Server)、10250(kubelet)、8472(Flannel VXLAN)、30000–32767(NodePort) 等端口,或临时关闭防火墙用于测试。
- 关闭 Swap:
二 安装容器运行时 containerd
- 安装与启用:
sudo apt update & & sudo apt install -y containerd sudo systemctl enable --now containerd - 配置 SystemdCgroup(与 kubelet 一致):
sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml sudo systemctl restart containerd - 说明:本指南采用 containerd 作为运行时(更符合当前主流实践);如需使用 Docker,可改为安装
docker-ce并配置其cri-dockerd适配器。
三 安装 kubeadm kubelet kubectl
- 添加 Kubernetes APT 源并安装组件:
sudo apt update & & sudo apt install -y apt-transport-https 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 sudo systemctl enable --now kubelet - 提示:保持 kubelet 为最新稳定版,避免与控制平面版本偏差过大。
四 初始化控制平面与网络
- 初始化(示例网段可按需调整):
sudo kubeadm init \ --pod-network-cidr=10.244.0.0/16 \ --service-cidr=10.96.0.0/12 \ --apiserver-advertise-address=< MASTER_IP> - 配置 kubectl:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config - 安装网络插件(Flannel,与上面 Pod CIDR 匹配):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml - 可选镜像加速(国内环境):
sudo kubeadm init \ --image-repository registry.aliyuncs.com/google_containers \ --pod-network-cidr=10.244.0.0/16 \ --apiserver-advertise-address=< MASTER_IP> - 验证:
kubectl cluster-info kubectl get nodes kubectl get pods -n kube-system
五 加入工作节点与验证
- 在 Worker 节点执行
kubeadm init完成后输出的 kubeadm join 命令,例如:sudo kubeadm join < MASTER_IP> :6443 \ --token < TOKEN> \ --discovery-token-ca-cert-hash sha256:< HASH> - 在 Master 上验证:
kubectl get nodes kubectl get pods -n kube-system - 部署测试应用(验证网络与服务发布):
kubectl create deployment nginx-app --image=nginx --replicas=2 kubectl expose deployment nginx-app --name=nginx-web-svc --type=NodePort --port=80 --target-port=80 kubectl get svc nginx-web-svc # 访问 http://< 任一节点IP> :< NodePort>
六 常见问题与优化
- 节点 NotReady:多因 CNI 未就绪 或 kubelet 未启动;检查
kubectl get pods -n kube-system、确认 Flannel/其他 CNI 已 Running,查看journalctl -u kubelet。 - Swap 未关闭:Kubelet 要求关闭 Swap,执行
sudo swapoff -a并注释/etc/fstab中的 Swap 行。 - 镜像拉取慢/失败:使用国内镜像仓库或在
kubeadm init中指定--image-repository。 - 端口未放通:确保 6443/10250/8472/30000–32767 等端口在防火墙放行。
- 时间不同步:部署 NTP/chrony 并校准时间。
- 自动化部署:可使用 Ansible 编排上述步骤,或使用 KubeKey 一键部署(适合快速交付与测试)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian与Kubernetes部署指南
本文地址: https://pptw.com/jishu/758252.html
