Debian与Kubernetes的集成方式研究
导读:一 总体架构与集成思路 在 Debian 上集成 Kubernetes 通常采用“控制平面 + 工作节点”的标准集群形态,借助 kubeadm 完成集群引导,配合容器运行时(如 containerd 或 Docker)与网络插件(如 Fl...
一 总体架构与集成思路
- 在 Debian 上集成 Kubernetes 通常采用“控制平面 + 工作节点”的标准集群形态,借助 kubeadm 完成集群引导,配合容器运行时(如 containerd 或 Docker)与网络插件(如 Flannel/Calico)提供 Pod 网络与跨节点通信。该路径在 Debian 12 等稳定版本上已被广泛验证,适合从单机实验到生产分级的渐进式落地。
二 标准集成流程
- 基础准备
- 硬件建议:每节点至少 2 核 CPU、2 GB RAM、20 GB 磁盘;节点间网络互通,主机名唯一,必要时配置静态 IP 与 /etc/hosts 映射。
- 系统设置:关闭 Swap(执行
sudo swapoff -a并注释 /etc/fstab 中的 swap 行),保持系统与安全补丁为最新。
- 安装容器运行时
- 方案 A(推荐)containerd:安装
containerd.io并启用服务(sudo systemctl enable --now containerd)。 - 方案 B Docker:安装
docker-ce docker-ce-cli containerd.io,并启动 Docker 服务。
- 方案 A(推荐)containerd:安装
- 安装 Kubernetes 组件
- 添加 Kubernetes APT 仓库并安装
kubelet、kubeadm、kubectl,随后执行sudo apt-mark hold kubelet kubeadm kubectl防止意外升级。
- 添加 Kubernetes APT 仓库并安装
- 初始化控制平面
- 在主节点执行
sudo kubeadm init,常用参数包括:--pod-network-cidr=10.244.0.0/16(与 Flannel 默认网段匹配)--apiserver-advertise-address=< Master-IP>--service-cidr=10.100.0.0/16- 可选:指定镜像仓库(如国内镜像)与 Kubernetes 版本。
- 在主节点执行
- 配置 kubectl
- 拷贝 admin.conf 到用户目录:
mkdir -p $HOME/.kube & & sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config & & sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 拷贝 admin.conf 到用户目录:
- 安装网络插件
- 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 token create --print-join-command - 在工作节点执行输出的
kubeadm join ...命令完成入群。
- 在主节点生成并打印加入命令:
- 验证
kubectl get nodes、kubectl get pods -A检查节点与系统 Pod 状态。
三 网络与安全配置
- 端口与防火墙
- 常见需要放行的端口(以 UFW 为例):控制面 6443/TCP,etcd 2379-2380/TCP,kubelet 10250/TCP,调度器 10251/TCP,控制器管理器 10252/TCP,以及 10255/TCP(只读端口,按需)。生产环境建议基于 nftables/firewalld 做最小化放行策略。
- 内核与系统参数
- 关闭 Swap(已在上文说明),按需配置内核网络参数(如 ipv4 转发、桥接相关 sysctl),确保容器网络与 kube-proxy 正常工作。
- 运行时选择
- 生产环境优先使用 containerd(与 kubelet 原生集成、镜像与运行时开销更优);若使用 Docker,需确保其与 kubelet 的 cgroup 驱动一致(常见为 systemd)。
四 自动化与运维实践
- 自动化部署
- 使用 Shell/Ansible 脚本封装“安装运行时 → 安装组件 → 初始化控制面 → 安装网络插件 → 输出 Join 命令”的流程,便于批量交付与一致性保障。
- 自动化运维
- 引入 Prometheus + Grafana 进行指标观测,使用 ELK/EFK 进行日志收集与分析;结合 Jenkins/GitLab CI 实现应用的 CI/CD 自动部署与滚动升级。
- 版本与升级
- 通过
apt-mark hold固定 kubelet/kubeadm/kubectl 版本,结合 kubeadm 的升级流程分阶段升级控制面与工作节点,降低业务中断风险。
- 通过
五 常见问题与排查要点
- 节点 NotReady
- 常见原因为网络插件未就绪或 Pod CIDR 与插件配置不匹配;检查
kubectl get pods -n kube-system,确认 Flannel/Calico 已 Running,并核对--pod-network-cidr与插件网段一致。
- 常见原因为网络插件未就绪或 Pod CIDR 与插件配置不匹配;检查
- 节点无法加入集群
- 检查 Token 是否过期(默认 24 小时),必要时
kubeadm token create --print-join-command重新生成;确认 6443 与 10250 等端口在防火墙放行,时间同步正常(NTP)。
- 检查 Token 是否过期(默认 24 小时),必要时
- kubectl 权限或配置错误
- 确认 $HOME/.kube/config 来自主节点的 admin.conf 且权限正确(
chown到当前用户);必要时重新拷贝并测试kubectl cluster-info。
- 确认 $HOME/.kube/config 来自主节点的 admin.conf 且权限正确(
- 镜像拉取缓慢或失败
- 可使用国内镜像仓库(如
registry.aliyuncs.com/google_containers)或在kubeadm init中通过--image-repository指定,加速控制面临时镜像拉取。
- 可使用国内镜像仓库(如
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian与Kubernetes的集成方式研究
本文地址: https://pptw.com/jishu/759862.html
