Debian与Kubernetes部署的集成方案
导读:Debian 与 Kubernetes 集成部署方案 一 架构与准备 目标环境:在 Debian 12(Bookworm) 上部署生产可用的 Kubernetes 集群,采用 containerd 作为容器运行时,使用 kubeadm 完...
Debian 与 Kubernetes 集成部署方案
一 架构与准备
- 目标环境:在 Debian 12(Bookworm) 上部署生产可用的 Kubernetes 集群,采用 containerd 作为容器运行时,使用 kubeadm 完成初始化与节点加入,网络插件选用 Flannel 或 Calico。
- 节点与硬件:建议至少 2 核 CPU / 4GB RAM / 20GB 磁盘(控制平面可适当提高),所有节点间可互通,具备 静态 IP 或稳定的 DNS。
- 基础要求:
- 关闭 Swap:
sudo swapoff -a并注释 /etc/fstab 中的 swap 行。 - 主机名与 /etc/hosts 映射,便于集群内解析。
- 启用 时间同步(如 NTP/chrony),避免证书与调度异常。
- 防火墙放行 6443(API Server)、10250(kubelet)、8472(Flannel VXLAN)、179(BGP,Calico) 等必要端口,或测试环境可临时关闭防火墙。
- 关闭 Swap:
二 标准部署流程
- 1 安装与配置 containerd
- 安装:
sudo apt-get update & & sudo apt-get install -y containerd - 启用模块与内核参数:
sudo modprobe overlay & & sudo modprobe br_netfilter- 写入:
/etc/modules-load.d/containerd.conf→overlay、br_netfilter - 写入:
/etc/sysctl.d/99-kubernetes-k8s.conf→net.bridge.bridge-nf-call-iptables = 1、net.ipv4.ip_forward = 1 - 生效:
sudo sysctl --system
- 生成默认配置并启用 Systemd:
sudo containerd config default | sudo tee /etc/containerd/config.toml & & sudo systemctl enable --now containerd
- 安装:
- 2 安装 kubeadm、kubelet、kubectl
- 添加仓库并安装:
sudo apt-get update & & sudo apt-get install -y kubelet kubeadm kubectl - 锁定版本:
sudo apt-mark hold kubelet kubeadm kubectl
- 添加仓库并安装:
- 3 初始化控制平面(Master)
- Flannel 网络:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 - Calico 网络:
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
- Flannel 网络:
- 4 配置 kubectl
mkdir -p $HOME/.kube & & sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config & & sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 5 安装网络插件
- 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:
- 6 加入工作节点(Worker)
- 获取命令:
kubeadm token create --print-join-command - 在 Worker 执行:
sudo kubeadm join < master-ip> :6443 --token < token> --discovery-token-ca-cert-hash sha256:< hash>
- 获取命令:
- 7 验证
kubectl get nodes、kubectl cluster-info检查节点 Ready 与组件状态。
三 自动化与批量部署
- Ansible 方案
- 使用 Ansible Playbook 批量化执行系统准备、containerd、kubelet/kubeadm/kubectl 安装、kubeadm init/join、网络插件部署等步骤,适合多节点与多环境复用。
- KubeKey 方案
- KubeKey 支持一键拉起集群,可指定 Kubernetes 版本、容器运行时(如 containerd)、附加组件等,适合快速交付与演练环境。
四 高可用与网络规划
- 高可用控制平面
- etcd 部署为奇数个节点(如 3/5),通过 Raft 复制保障一致性。
- API Server 前置 LVS/HAProxy 等负载均衡,实现 VIP/域名漂移。
- Controller Manager 与 Scheduler 启用 leader election,多实例冗余。
- 网络要点
- 选择兼容的 Pod CIDR 与 Service CIDR,避免与宿主机网段冲突;如 Flannel 10.244.0.0/16、Calico 192.168.0.0/16。
- 确认 VXLAN(8472/UDP) 或 BGP(179/TCP) 等端口在节点与边界设备放行,保障跨节点 Pod 通信。
五 验证与运维要点
- 快速验证
- 节点状态:
kubectl get nodes -o wide - 系统组件:
kubectl get pods -n kube-system - 集群信息:
kubectl cluster-info
- 节点状态:
- 常见问题与处理
- Swap 未关闭:kubelet 将拒绝启动,需
swapoff -a并持久化。 - 时间不同步:证书校验与控制器异常,启用 NTP/chrony 同步。
- CNI 未就绪:未安装网络插件或 Pod CIDR 不匹配,检查
kubectl apply -f < cni.yaml>与kubeadm init参数。 - 端口未放行:API Server、kubelet、Flannel/Calico 端口被防火墙拦截,按需放通或临时停用防火墙验证。
- Swap 未关闭:kubelet 将拒绝启动,需
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian与Kubernetes部署的集成方案
本文地址: https://pptw.com/jishu/753744.html
