Ubuntu 24.04 单节点 Kubernetes(k8s)安装教程
文章摘要
|
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 分钟后自动恢复。
有问题欢迎在评论区留言交流!🦉