Ubuntu 安装 Kubernetes 步骤
一 环境准备
- 准备至少 2 核 CPU、4GB 内存、20GB 磁盘 的 64 位 Ubuntu 主机,建议使用 Ubuntu 20.04+。规划好 Master 与 Worker 节点,并固定 主机名 与 /etc/hosts(便于解析)。示例:
- sudo hostnamectl set-hostname k8s-master
- echo “192.168.1.10 k8s-master” | sudo tee -a /etc/hosts
- 安装基础工具:sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common。
二 安装容器运行时
- 推荐容器运行时为 containerd(与 kubelet 的 systemd cgroup 驱动配合更稳定)。
- 安装与配置 containerd:
- 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 sed -i ‘s/SystemdCgroup = false/SystemdCgroup = true/g’ /etc/containerd/config.toml
- sudo systemctl restart containerd && sudo systemctl enable containerd
- 如使用 Docker(非默认推荐),可:sudo apt-get install -y docker.io;如使用 cri-o 等,请按对应文档启用 CRI 兼容。
三 安装 kubeadm kubelet kubectl
- 添加 Kubernetes APT 源并安装组件(示例使用签名密钥环方式):
- 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
- sudo apt-get update
- sudo apt-get install -y kubelet kubeadm kubectl
- sudo apt-mark hold kubelet kubeadm kubectl
- 可选:设置 crictl(调试容器运行时常用):
- VERSION=$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)
- curl -LO “https://storage.googleapis.com/kubernetes-release/release/$VERSION/bin/linux/amd64/crictl”
- chmod +x crictl && sudo mv crictl /usr/local/bin
四 初始化控制平面 Master
- 内核与网络前置(所有节点):
- 关闭 Swap:sudo swapoff -a;sudo sed -i ‘/ swap / s/^/#/’ /etc/fstab
- 加载模块:echo -e “overlay\nbr_netfilter” | sudo tee /etc/modules-load.d/k8s.conf && 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
- 初始化命令(在 Master 节点执行,按需替换参数):
- kubeadm init
–apiserver-advertise-address=<MASTER_IP>
–pod-network-cidr=10.244.0.0/16
–service-cidr=10.96.0.0/12
–image-repository=registry.aliyuncs.com/google_containers
- 初始化完成后按提示配置 kubectl:
- mkdir -p $HOME/.kube
- sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
- chown $(id -u):$(id -g) $HOME/.kube/config
- 如初始化异常或中断,先执行 kubeadm reset 再重试。
五 安装网络插件与加入节点
- 安装网络插件(Pod 间通信必需,二选一或按需求选择):
- Flannel:kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
- Calico:kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
- 加入 Worker 节点(在 Master 初始化输出中找到完整命令,形如):
- kubeadm join <MASTER_IP>:6443 --token --discovery-token-ca-cert-hash sha256:
- 验证:
- kubectl get nodes
- kubectl get pods -A
- 备注:若使用 containerd,无需额外安装 Docker;若使用 Docker,需确保与 kubelet 的 cgroup 驱动一致(常见为 systemd)。