1. 系统版本与内核要求
选择Debian稳定版(如Debian 11 Bullseye、Debian 12 Bookworm),避免使用测试版或不稳版,以确保系统稳定性和兼容性。内核版本需≥5.10(Debian 11/12默认满足),以支持Kubernetes的网络和存储功能。
2. 硬件资源配置
每个节点需满足最低硬件要求:至少2核CPU、2GB RAM、20GB可用磁盘空间(生产环境建议4核CPU、8GB RAM以上)。资源不足会导致kubelet频繁崩溃、Pod调度失败等问题。
3. 关闭Swap分区
Kubernetes要求所有节点关闭Swap分区,否则kubelet无法正常运行。执行以下命令永久关闭:
sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab 临时关闭可使用sudo swapoff -a,但重启后会恢复,需修改fstab确保永久生效。
4. 安装与配置Containerd运行时
Kubernetes推荐使用containerd作为容器运行时。安装步骤:
sudo apt install -y containerdsudo mkdir -p /etc/containerd && sudo containerd initsudo systemctl enable --now containerdkubeadm config images list查看所需版本)。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需要特定的内核参数支持网络功能(如iptables转发、bridge调用)。创建配置文件:
cat << EOF | sudo tee /etc/modules-load.d/containerd.conf overlay br_netfilter EOF cat << EOF | sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF sudo modprobe overlay sudo modprobe br_netfilter 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端口 sudo ufw allow 10251/tcp # kube-controller-manager端口 sudo ufw allow 10252/tcp # kube-scheduler端口 sudo ufw reload 确保主节点与工作节点之间的端口互通,否则集群无法正常通信。
8. 使用kubeadm初始化集群
在主节点上执行kubeadm init初始化集群,需指定Pod网络CIDR(如--pod-network-cidr=10.244.0.0/16,适配Flannel等插件)和服务CIDR(如--service-cidr=10.96.0.0/12)。初始化完成后,保存输出的kubeadm join命令(用于工作节点加入)。
9. 配置kubectl工具
将主节点的kubeconfig文件复制到当前用户目录,以便使用kubectl管理集群:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config 验证配置是否生效:kubectl cluster-info。
10. 安装网络插件
Kubernetes需要网络插件实现Pod间通信(如Calico、Flannel)。以Calico为例,执行:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml 安装后验证网络:kubectl get pods -n kube-system(所有网络插件Pod需处于Running状态)。
11. 版本兼容性检查
确保Kubernetes版本与Debian版本兼容(如Kubernetes 1.28+支持Debian 11/12)。避免跨大版本升级(如从1.25直接升级到1.30),建议逐步升级(每次升级0.5-1个小版本),并参考官方升级文档处理API变更。
12. 安全加固措施
/etc/kubernetes/kubelet.conf,添加--anonymous-auth=false。kubectl create clusterrolebinding命令创建角色绑定,限制用户权限。