1. 系统版本与内核要求
选择Debian稳定版(如Debian 11 Bullseye、Debian 12 Bookworm),避免使用测试版或不稳定版,以确保系统稳定性和兼容性。内核版本需≥5.10(Debian 11/12默认满足),以支持Kubernetes的网络(如iptables转发)和存储功能。
2. 硬件资源配置
每个节点需满足最低硬件要求:至少2核CPU、2GB RAM、20GB可用磁盘空间(生产环境建议4核CPU、8GB RAM以上)。资源不足会导致kubelet频繁崩溃、Pod调度失败等问题。
3. 关闭Swap分区
Kubernetes要求所有节点永久关闭Swap分区(临时关闭可使用sudo swapoff -a,但重启后会恢复)。需编辑/etc/fstab文件,注释掉包含“swap”的行,否则kubelet无法正常运行。
4. 安装与配置Containerd运行时
Kubernetes推荐使用containerd作为容器运行时。安装前需加载overlay、br_netfilter内核模块(sudo tee /etc/modules-load.d/containerd.conf <<EOF overlay br_netfilter EOF; sudo modprobe overlay; sudo modprobe br_netfilter),并配置内核参数(net.bridge.bridge-nf-call-iptables=1、net.ipv4.ip_forward=1)。安装containerd后,通过containerd init初始化配置并启动服务(sudo systemctl enable --now containerd),确保版本与kubelet兼容。
5. 添加Kubernetes官方APT仓库
通过以下命令添加Kubernetes官方仓库,确保安装最新稳定版本:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt update 添加后需锁定版本(避免自动升级导致兼容性问题):sudo apt-mark hold kubelet kubeadm kubectl。
6. 配置系统内核参数
Kubernetes需要特定的内核参数支持网络功能,需创建配置文件/etc/sysctl.d/99-kubernetes-k8s.conf,添加以下内容:
net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 然后执行sudo sysctl --system使配置生效,所有节点均需配置,否则会导致Pod网络不通。
7. 防火墙端口放行
若启用防火墙(如UFW),需允许Kubernetes关键端口通信,避免集群通信失败:
sudo ufw allow 6443/tcp # kube-apiserver端口 sudo ufw allow 2379:2380/tcp # etcd集群端口 sudo ufw allow 10250/tcp # kubelet API端口 sudo ufw allow 10251/tcp # kube-controller-manager端口 sudo ufw allow 10252/tcp # kube-scheduler端口 sudo ufw reload ```。 **8. 主机名与hosts文件配置** 在所有节点上设置**简短、唯一的主机名**(如master、worker1),并编辑`/etc/hosts`文件,添加节点IP与主机名的映射(如`192.168.1.10 master`、`192.168.1.11 worker1`),确保节点间可通过主机名互相解析。 **9. 时间同步** 确保所有节点的时区一致(如设置为UTC或Asia/Shanghai),并启用NTP服务(如`sudo timedatectl set-ntp true`),避免因时间不同步导致认证失败(如TLS证书过期)或集群状态异常。 **10. 版本兼容性** 选择Kubernetes稳定版本(如v1.26+),并参考官方文档确认与Debian版本的兼容性(如Debian 12兼容Kubernetes v1.26及以上)。同时,确保Docker/containerd版本与Kubernetes版本匹配(如Kubernetes v1.26支持Docker 20.10+、containerd 1.6+)。 **11. 网络插件部署** Kubernetes默认不提供Pod网络,需选择并部署网络插件(如Calico、Flannel)。以Calico为例,可通过`kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml`安装,确保Pod间能正常通信(若使用Flannel,需调整`--pod-network-cidr`参数与插件要求一致)。 **12. 固定组件版本** 安装kubelet、kubeadm、kubectl后,使用`sudo apt-mark hold kubelet kubeadm kubectl`锁定版本,避免系统自动升级导致组件不兼容(如Kubernetes升级后,旧版本的kubelet可能无法与新版本的kube-apiserver通信)。