ubuntu安装k8s—完整.md

在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
# 安装containerd
sudo apt-get update
sudo apt-get install -y containerd

# 配置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
# 安装Calico示例(在kubeadm init后执行)
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
# 添加Kubernetes官方源
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

# 安装kube组件
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
# 1. 关闭swap
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo sed -i '/\/swap\.img/s/^/# /' /etc/fstab

# 2. 配置内核参数
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# 3. 配置sysctl参数
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

# 4. 安装基础依赖
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
# Kubernetes Ubuntu 安装脚本

set -e

echo "开始安装Kubernetes..."

# 禁用swap
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

# 创建keyrings目录(修复问题)
sudo mkdir -p /etc/apt/keyrings/

# 安装kubeadm, kubelet, kubectl
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' 初始化集群"

⚠️ 重要注意事项

  1. 版本兼容性:确保kubelet、kubeadm、kubectl版本一致
  2. 防火墙配置:确保所需端口(6443、2379-2380等)开放
  3. 时间同步:安装chrony或ntp确保时间同步
  4. 主机名解析:确保主机名能够正确解析

🔍 验证安装

1
2
3
4
5
6
7
8
9
# 检查kubelet状态
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