确保Debian节点满足Kubernetes最低配置:至少2核CPU、2GB内存、20GB可用磁盘空间。若资源不足,可通过free -h(内存)、df -h(磁盘)、lscpu(CPU)命令核查,升级硬件或调整节点配置。
ping <节点IP>测试。ufw防火墙,需允许Kubernetes关键端口:sudo ufw allow 6443/tcp # API服务器端口
sudo ufw allow 2379:2380/tcp # etcd集群端口
sudo ufw allow 10250/tcp # kubelet端口
sudo ufw allow 10255/tcp # 只读kubelet端口
sudo ufw reload
Kubernetes不支持启用Swap,需在所有节点执行以下命令永久关闭:
sudo swapoff -a # 立即关闭Swap
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 注释fstab中的Swap条目
验证是否关闭:free -h(Swap行应为0)。
sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https curl
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 # 锁定版本避免自动升级
解决常见问题:
E: Unable to locate package kubeadm,需重新执行依赖安装和仓库添加步骤;sudo apt -f install修复依赖关系。确保Kubernetes组件版本与Debian版本兼容(如Debian 11适配Kubernetes 1.28+)。参考Kubernetes官方文档的版本兼容性矩阵,避免跨大版本安装。
所有安装命令需用sudo或root用户执行。若遇到Permission denied错误,检查当前用户是否在sudoers文件中(sudo visudo),或使用sudo -i切换至root用户。
若因网络问题无法拉取镜像(如国内镜像源延迟),可手动拉取所需镜像并标记:
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.0
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.28.0
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.28.0
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.28.0
docker pull registry.aliyuncs.com/google_containers/pause:3.9
docker pull registry.aliyuncs.com/google_containers/etcd:3.5.7-0
# 标记镜像(名称需与kubeadm配置一致)
docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.0 k8s.gcr.io/kube-apiserver:v1.28.0
# 重复标记其他镜像...
或在kubeadm init时指定国内镜像仓库:
sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers ...
若安装过程报错,通过以下命令查看组件日志定位问题:
sudo journalctl -u kubelet -f # 实时查看kubelet日志(最常用)
sudo journalctl -u kube-apiserver
sudo journalctl -u kube-controller-manager
sudo journalctl -u kube-scheduler
根据日志中的具体错误(如failed to start container runtime、certificate signing request failed)进一步处理。
execvp: /usr/bin/env: Argument list too long,清理GOPATH中的临时文件(rm -rf ~/.cache/go-build),或设置GOPATH环境变量:export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
kubeadm init预检查提示swap is enabled,重复关闭Swap步骤;若提示port is in use,用sudo lsof -i :<端口号>查找占用进程并终止(kill -9 <PID>)。通过以上步骤逐一排查,可解决Debian上Kubernetes安装的大部分常见问题。若仍无法解决,建议提供具体错误信息至Kubernetes官方论坛或Stack Overflow寻求社区帮助。