Debian上K8s安装的最佳实践
导读:Debian 上 Kubernetes 安装最佳实践 一 环境与规划 操作系统与版本:优先选择 Debian 12(Bookworm),内核与驱动支持更好,容器生态兼容性强。 硬件基线:控制平面建议至少 2 核 CPU / 4 GB RA...
Debian 上 Kubernetes 安装最佳实践
一 环境与规划
- 操作系统与版本:优先选择 Debian 12(Bookworm),内核与驱动支持更好,容器生态兼容性强。
- 硬件基线:控制平面建议至少 2 核 CPU / 4 GB RAM / 20 GB 磁盘;工作节点按业务负载适当提升。
- 网络与互通:所有节点间需 IP 可达,规划好 Pod 网络 CIDR 与 Service CIDR,避免与现有网段冲突;多网卡环境明确 API Server 广告地址。
- 主机名与解析:为每个节点设置清晰主机名(如 master、worker1),并在 /etc/hosts 或 DNS 中维护解析,减少因解析异常导致的组件异常。
- 时间同步:安装并启用 NTP/chrony,确保证书校验、日志与调度稳定。
二 系统准备与内核参数
- 系统更新与依赖:执行 apt update & & apt upgrade -y,安装 apt-transport-https、ca-certificates、curl、gnupg 等基础工具。
- 禁用 Swap:执行 swapoff -a 并注释 /etc/fstab 中的 swap 行,避免 kubelet 调度与稳定性受影响。
- 内核模块与转发:加载 overlay、br_netfilter 并开启桥接与转发。
- sysctl 网络参数:开启桥接流量进入 iptables、启用 IPv4 转发,确保 Pod 间与服务流量正常。
- 参考命令
- 模块加载
sudo tee /etc/modules-load.d/containerd.conf < < EOF overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter - sysctl 配置
sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf < < EOF net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF sudo sysctl --system
- 模块加载
三 容器运行时选择与安装
- 运行时选型:生产环境优先 containerd(与 K8s 原生集成、维护简单);如需 Docker,也可使用其内置的 containerd。
- containerd 安装与配置
- 安装与启用
sudo apt-get update sudo apt-get 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
- 安装与启用
- Docker 安装(可选)
sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io sudo systemctl enable --now docker
四 安装 kubeadm kubelet kubectl 与初始化集群
- 添加仓库与安装组件(锁定版本避免滚动升级引发不一致)
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-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl - 初始化控制平面(按网络规划设置参数)
sudo kubeadm init \ --pod-network-cidr=10.244.0.0/16 \ --service-cidr=10.0.0.0/16 \ --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 - 安装网络插件(与 Pod CIDR 保持一致)
- 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 init 输出中的 kubeadm join 命令在各 Worker 上执行,加入完成后在 Master 上执行 kubectl get nodes 检查状态。
五 防火墙端口 安全与运维
- 防火墙放行(示例为 UFW;如使用 firewalld/iptables 请放行等价端口)
sudo ufw allow 6443/tcp # API Server sudo ufw allow 2379:2380/tcp # etcd sudo ufw allow 10250/tcp # kubelet API sudo ufw allow 10251/tcp # kube-scheduler sudo ufw allow 10252/tcp # kube-controller-manager sudo ufw allow 10255/tcp # kubelet read-only(可选) sudo ufw reload - 安全与稳定
- 全程 禁用 Swap;按需最小化开放端口;使用 密钥登录 替代口令;为 kubelet 配置合适的 cgroup 驱动(与容器运行时一致)。
- 备份与升级
- 定期备份 etcd(如使用外部 etcd,建议定期快照);升级前在测试环境验证,采用 滚动升级 策略,先升级控制平面再升级工作节点,保持 kubelet/kubeadm/kubectl 版本一致。
- 监控与合规
- 部署监控告警(如节点资源、Pod 状态)、审计日志与基线检查(如 kube-bench),持续验证集群安全与合规状态。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian上K8s安装的最佳实践
本文地址: https://pptw.com/jishu/783259.html
