1
0

Ubuntu 24.04 单节点 Kubernetes(k8s)安装教程

2026-08-04 21:26:00
2026-08-04 17:26:10
文章摘要
|

Ubuntu 24.04 单节点 Kubernetes(k8s)安装教程

本教程适用于在 Ubuntu 24.04 上搭建单节点 k8s 实验环境,基于 kubeadm 官方方式。

环境说明

  • OS:Ubuntu 24.04 LTS
  • Kubernetes:v1.30(当前最新稳定版)
  • CNI:Calico
  • 架构:单节点(Master + Worker 合一)

1. 前置条件

关闭 Swap

k8s 要求关闭 swap:

sudo swapoff -a
# 永久关闭,注释掉 /etc/fstab 中的 swap 行
sudo sed -i '/swap/s/^/#/' /etc/fstab

允许 iptables 桥接流量

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

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

开放防火墙端口(单节点)

协议 端口 说明
TCP 6443 Kubernetes API Server
TCP 2379-2380 etcd
TCP 10250 kubelet
TCP 10259 kube-scheduler
TCP 10257 kube-controller-manager
TCP 30000-32767 NodePort 范围
sudo ufw allow 6443/tcp
sudo ufw allow 2379:2380/tcp
sudo ufw allow 10250/tcp
sudo ufw allow 10259/tcp
sudo ufw allow 10257/tcp
sudo ufw allow 30000:32767/tcp

2. 安装容器运行时(containerd)

# 安装 containerd
sudo apt-get update
sudo apt-get install -y containerd

# 生成默认配置
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml

# 修改 cgroup 驱动为 systemd
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml

# 重启 containerd
sudo systemctl restart containerd
sudo systemctl enable containerd

3. 安装 kubeadm、kubelet、kubectl

# 添加 Kubernetes APT 源
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gpg

# 下载签名密钥
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

# 安装
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

4. 初始化集群

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

初始化成功后会输出 kubeadm join 命令,记得保存好

然后配置 kubectl:

mkdir -p ~/.kube
sudo cp /etc/kubernetes/admin.conf ~/.kube/config
sudo chown 0:0 ~/.kube/config

5. 安装 Calico CNI

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

6. 验证集群状态

kubectl get nodes
kubectl get pods -A

所有 pods 状态为 Running 即表示安装成功。

7. 允许 Master 节点调度 Pod(单节点必做)

kubectl taint nodes --all node-role.kubernetes.io/control-plane-

常见问题

Q:kubelet 启动失败?

检查 containerd 是否正常运行,systemctl status containerd

Q:crictl 连接失败?

containerd 使用的是 crictl,不是 docker,配置文件:

sudo crictl config runtime-endpoint unix:///var/run/containerd/containerd.sock
sudo crictl config image-endpoint unix:///var/run/containerd/containerd.sock

Q:Node 一直是 NotReady?

等待 CNI 插件完全启动,通常 1-2 分钟后自动恢复。


有问题欢迎在评论区留言交流!🦉

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

评论