Ubuntu 集成 Kubernetes 工具的标准流程
一 环境准备
- 系统建议:使用 Ubuntu 20.04/22.04 LTS,至少 2 核 CPU、4 GB 内存、20 GB 磁盘(生产建议更高规格)。
- 基础配置(所有节点执行):
- 更新系统并安装常用工具:
sudo apt update && sudo apt upgrade -y && sudo apt install -y curl apt-transport-https ca-certificates gnupg2 software-properties-common
- 关闭 Swap:
sudo swapoff -a,并在 /etc/fstab 中注释 swap 行,避免重启后恢复。
- 主机名与解析:设置唯一 hostname,并在 /etc/hosts 中完成节点 IP-主机名 映射。
- 防火墙与安全组:开放 6443(API Server)、10250(kubelet)、10251/10252(kube-scheduler/controller-manager)、以及 8472(Flannel VXLAN) 等端口;如用 firewalld/ufw,请按需放行。
- 时间同步:安装并启动 chrony 或 systemd-timesyncd,保证节点间时间一致。
- 内核参数(可选但推荐):启用桥接流量与 ipv4 转发,例如:
sudo sysctl -p 加载 /etc/sysctl.d/k8s.conf,内容含 net.bridge.bridge-nf-call-iptables=1、net.ipv4.ip_forward=1。
二 安装容器运行时与 Kubernetes 组件
- 容器运行时选型:
- 使用 Docker(Kubernetes ≥ v1.24 需配合 cri-dockerd 垫片,因为内置的 dockershim 已被移除)。
- 或直接使用 containerd(更简洁,官方推荐路线)。
- 安装 Docker(示例):
- 添加仓库与密钥,安装 docker-ce/docker-ce-cli/containerd.io,启动并设置开机自启:
sudo systemctl start docker && sudo systemctl enable docker。
- 安装 cri-dockerd(仅在使用 Docker 时):
- 从 Mirantis/cri-dockerd 发布页下载对应系统版本,安装后将服务设置为开机自启,并确保 cri-dockerd.service 处于 Running。
- 安装 kubeadm、kubelet、kubectl(所有节点):
- 添加 Kubernetes APT 源(可用国内镜像源),执行:
sudo apt update && sudo apt install -y kubelet kubeadm kubectl
- 建议执行:
sudo apt-mark hold kubelet kubeadm kubectl,避免被系统自动升级导致版本不一致。
- 配置要点:
- 若使用 Docker,确保其 cgroup driver 与 kubelet 一致(推荐 systemd);kubelet 未显式设置时,自 v1.22 起默认即为 systemd。
三 初始化控制平面与网络插件
- 初始化控制平面(Master):
- 选择 Pod 网段(与所选网络插件匹配),例如 Flannel 常用 10.244.0.0/16:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
- 初始化完成后按提示配置 kubectl:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 部署网络插件(二选一,按 Pod 网段匹配):
- Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- Calico:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
- 验证:
kubectl get nodes 应显示 Ready;kubectl get pods -A 查看系统组件与网络插件 Pod 状态。
四 加入工作节点与常用运维
- 加入工作节点:
- 在 Master 上生成加入命令:
kubeadm token create --print-join-command
- 在 Worker 上执行输出的
kubeadm join ... 命令完成入群。
- 常用运维:
- 重置节点(异常或重建时使用):
sudo kubeadm reset
- 版本与组件一致性:保持 kubelet/kubeadm/kubectl 版本一致,避免跨小版本引发兼容性问题。
- 镜像加速与私有仓库:为 Docker/containerd 配置镜像仓库加速,便于拉取 kube-apiserver、kube-controller-manager、kube-scheduler、pause、coredns、calico/flannel 等镜像。
五 本地开发与替代方案
- 本地单节点体验:
- 使用 Minikube:
sudo snap install minikube --classic,适合开发/测试与学习。
- 使用 kind(Kubernetes in Docker):在容器中运行 K8s 集群,轻量快捷。
- IDE 与工具链:
- 安装 Visual Studio Code 并配合 Kubernetes 扩展、kubectl 插件,获得资源可视化与快捷命令支持。