1. 系统版本与内核要求
选择Debian稳定版(如Debian 11 Bullseye、Debian 12 Bookworm),避免使用测试版或不稳定版,以确保系统稳定性和兼容性。内核版本需≥5.10(Debian 11/12默认满足),以支持Kubernetes的网络(如iptables转发)和存储(如overlay文件系统)功能。
2. 硬件资源配置
每个节点需满足最低硬件要求:至少2核CPU、2GB RAM、20GB可用磁盘空间(生产环境建议4核CPU、8GB RAM以上)。资源不足会导致kubelet频繁崩溃、Pod调度失败或etcd数据库性能下降。
3. 关闭Swap分区
Kubernetes要求所有节点(包括主节点和工作节点)永久关闭Swap分区,否则kubelet无法正常启动(会报“kubelet has disk pressure”错误)。操作步骤:sudo swapoff -a(临时关闭),sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab(永久注释swap行)。
4. 安装与配置Containerd运行时
Kubernetes推荐使用containerd作为容器运行时(替代Docker)。安装前需加载必要内核模块并配置系统参数:
sudo tee /etc/modules-load.d/containerd.conf <<EOF overlay br_netfilter EOF;sudo modprobe overlay && sudo modprobe br_netfilter;sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf <<EOF net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF;sudo sysctl --system;sudo apt install -y containerd;sudo containerd init;sudo systemctl enable --now containerd。5. 添加Kubernetes官方APT仓库
通过官方仓库安装最新稳定版本的Kubernetes组件(kubelet、kubeadm、kubectl),避免第三方仓库的兼容性问题。操作步骤:
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 install -y kubelet kubeadm kubectl;sudo apt-mark hold kubelet kubeadm kubectl。6. 配置系统内核参数
Kubernetes需要特定的内核参数支持网络功能(如iptables转发、bridge调用)。除上述containerd配置中的br_netfilter和ip_forward外,还需确保以下参数生效:
sudo tee /etc/modules-load.d/k8s.conf <<EOF overlay br_netfilter EOF;sudo modprobe overlay && sudo modprobe br_netfilter;sudo sysctl --system。7. 防火墙端口放行
若启用防火墙(如UFW),需允许Kubernetes关键端口通信,确保主节点与工作节点之间的连接正常。需放行的端口包括:
sudo ufw allow 6443/tcp && sudo ufw allow 2379:2380/tcp && sudo ufw allow 10250/tcp && sudo ufw allow 10251/tcp && sudo ufw allow 10252/tcp && sudo ufw allow 10255/tcp && sudo ufw reload。8. 使用kubeadm初始化集群
在主节点上使用kubeadm init命令初始化集群,需指定以下关键参数:
--apiserver-advertise-address:主节点IP地址(确保集群节点可访问);--pod-network-cidr:Pod网络CIDR(如10.244.0.0/16,适配Flannel等网络插件);--service-cidr:Service网络CIDR(如10.96.0.0/12,用于集群内部服务通信)。kubeadm join命令(包含token和CA证书哈希),用于工作节点加入集群。9. 配置网络插件
Kubernetes需要网络插件(如Calico、Flannel)实现Pod之间的通信。安装插件前需确保containerd和内核参数已正确配置。以Calico为例,操作步骤:kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml(官方YAML文件)。安装后需验证网络连通性(如kubectl run test-pod --image=busybox --rm -it --restart=Never -- sh,进入Pod后ping其他节点的Pod IP)。
10. 主机名与hosts文件配置
在所有节点上设置主机名(如master-node、worker-node-1),并在/etc/hosts文件中添加节点IP与主机名的映射(如192.168.1.10 master-node、192.168.1.11 worker-node-1),确保节点之间可通过主机名解析(避免DNS问题导致的通信故障)。
11. 版本兼容性检查
确保Debian版本与Kubernetes版本兼容。例如:
12. 监控与日志配置
安装后需配置监控和日志系统,及时发现集群问题。常用工具组合: