在Ubuntu上安装Kubernetes,我推荐以下版本选择策略:
🎯 推荐版本选择
| 使用场景 |
推荐版本 |
理由 |
| 生产环境 |
Kubernetes 1.32 |
首个提供12年LTS的版本,稳定性最高 |
| 测试/开发环境 |
Kubernetes 1.33 或 1.34 |
体验最新特性,Ubuntu 22.04 LTS支持良好 |
| 学习环境 |
与教程保持一致 |
避免兼容性问题 |
🔧 必需的支持环境
1. 容器运行时(必须)
推荐选择:
- containerd(当前主流选择)
- CRI-O(轻量级替代方案)
- Docker(已弃用,不推荐新安装)
1 2 3 4 5 6 7 8 9
| sudo apt-get update sudo apt-get install -y containerd
sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml sudo systemctl restart containerd sudo systemctl enable containerd
|
2. 网络插件(必须)
推荐选择:
- Calico(功能丰富,生产环境首选)
- Flannel(简单易用,适合学习)
- Weave Net(替代选择)
1 2
| kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
|
3. 包管理工具
创建keyrings目录(修复问题)
sudo mkdir -p /etc/apt/keyrings/
1 2 3 4 5 6 7 8 9 10
| sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/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.32/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
|
📋 完整安装准备清单
系统要求
- Ubuntu版本:20.04 LTS 或 22.04 LTS
- 内存:至少2GB(推荐4GB+)
- CPU:至少2核心
- 磁盘:至少20GB可用空间
- 网络:稳定的网络连接
前置配置步骤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab sudo sed -i '/\/swap\.img/s/^/# /' /etc/fstab
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
sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
|
🚀 快速安装脚本示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #!/bin/bash
set -e
echo "开始安装Kubernetes..."
sudo swapoff -a sudo sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab
sudo apt-get update sudo apt-get install -y containerd sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml sudo systemctl restart containerd sudo systemctl enable containerd
sudo mkdir -p /etc/apt/keyrings/
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/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.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update sudo apt-get install -y kubelet=1.32.* kubeadm=1.32.* kubectl=1.32.* sudo apt-mark hold kubelet kubeadm kubectl
echo "Kubernetes组件安装完成!" echo "使用 'sudo kubeadm init' 初始化集群"
|
⚠️ 重要注意事项
- 版本兼容性:确保kubelet、kubeadm、kubectl版本一致
- 防火墙配置:确保所需端口(6443、2379-2380等)开放
- 时间同步:安装chrony或ntp确保时间同步
- 主机名解析:确保主机名能够正确解析
🔍 验证安装
1 2 3 4 5 6 7 8 9
| systemctl status kubelet
crictl ps
kubeadm version kubectl version --client
|
对于生产环境,我强烈建议使用Kubernetes 1.32 LTS版本,它提供了最长的支持周期。如果你是Kubernetes新手,可以从单节点集群开始学习,熟悉后再扩展到多节点生产环境。
使用阿里云镜像初始化集群
sudo kubeadm init
–image-repository registry.aliyuncs.com/google_containers
–kubernetes-version v1.32.9
–cri-socket unix:///var/run/containerd/containerd.sock
–pod-network-cidr=10.244.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
kubeadm join 192.168.31.57:6443 –token wfifqc.aigjd8dlh3u2ai3n
–discovery-token-ca-cert-hash sha256:16257331753666b2beb5c9a9b800ecd538e770826656485df52bb14bea1331ac
# 安装 Flannel 网络插件
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml