You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Ubuntu 20.04 LTS虚拟机安装Kubernetes集群并解决kubelet报错

报错原因说明

该报错本质是kubelet服务无法正常启动,绝大多数场景是swap未关闭、容器运行时与kubelet的cgroup驱动不匹配、内核参数未正确配置三类原因导致,按以下步骤执行即可在Azure Ubuntu 20.04 LTS虚拟机上完成Kubernetes集群部署:


所有节点通用前置配置(主节点、工作节点都需执行)

  • 关闭swap分区
    Kubernetes强制要求关闭swap分区,否则kubelet无法正常启动,执行如下命令:
# 临时关闭swap
sudo swapoff -a
# 永久禁用swap开机挂载
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

执行完成后运行free -h验证,Swap行的total值为0即配置成功。

  • 加载Kubernetes所需内核模块
sudo modprobe overlay
sudo modprobe br_netfilter

# 配置开机自动加载内核模块
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
  • 配置系统内核参数
# 开启网桥流量过滤、IP转发能力
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# 立即生效内核参数
sudo sysctl --system
  • 安装containerd容器运行时
# 安装基础依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

# 添加软件源GPG密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 添加containerd软件源
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装containerd
sudo apt update
sudo apt install -y containerd.io

# 生成默认配置并修改cgroup驱动为systemd,与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
sudo systemctl enable containerd
  • 安装kubeadm、kubelet、kubectl
# 添加Kubernetes软件源
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.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

# 安装指定版本组件,这里以1.27.3为例,可替换为你需要的版本
sudo apt update
sudo apt install -y kubelet=1.27.3-00 kubeadm=1.27.3-00 kubectl=1.27.3-00

# 锁定组件版本,避免意外更新导致集群异常
sudo apt-mark hold kubelet kubeadm kubectl

# 配置kubelet使用systemd作为cgroup驱动
cat <<EOF | sudo tee /etc/default/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
EOF

# 重启kubelet生效配置
sudo systemctl daemon-reload
sudo systemctl restart kubelet

Azure虚拟机专属配置

  • 登录Azure控制台,打开主节点绑定的网络安全组入站规则,放开以下端口:6443、2379-2380、10250、10259、10257,源地址可配置为集群所有节点的内网IP段。
  • kubeadm init命令中的--apiserver-advertise-address参数必须填写主节点的内网IP,不要填写公网IP,避免网络连通问题。

集群初始化操作(仅主节点执行)

  • 先重置之前初始化失败的残留配置:
sudo kubeadm reset -f
  • 重新执行初始化命令,替换为你的主节点内网IP:
sudo kubeadm init --apiserver-advertise-address=你的主节点内网IP --pod-network-cidr=192.168.0.0/16
  • 初始化成功后,执行如下命令配置普通用户的集群访问权限:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 安装Pod网络插件,选择与192.168.0.0/16 CIDR匹配的Calico插件,搜索对应版本的官方部署yaml执行安装即可,安装完成后等待所有kube-system命名空间下的Pod转为Running状态,集群即可正常使用。

问题排查

如果仍出现报错,执行journalctl -u kubelet -f查看kubelet实时运行日志,可定位具体错误原因。


内容的提问来源于stack exchange,提问作者Pradeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 19:15:01