温馨提示×

Ubuntu如何配置Kubernetes环境

小樊
34
2025-11-30 20:37:07
栏目: 智能运维

Ubuntu 配置 Kubernetes 环境

一 环境准备与前置检查

  • 系统建议:Ubuntu 20.04/22.04/24.042 核 CPU4 GB 内存20 GB 磁盘以上。
  • 主机名与解析:为各节点设置唯一主机名,并在 /etc/hosts 中做好解析,便于集群内通信。
  • 时间同步:安装并启用 chrony 保证节点时间一致。
  • 唯一性校验:确保各节点 MAC 地址product_uuid 唯一,避免 kubelet 识别异常。
  • 网络互通:确认节点间 ICMP/SSH 可达,规划好管理网与控制面网段。
  • 端口与防火墙:放行 6443、10250、2379/2380、10251/10252 等端口,或临时关闭 ufw 以便部署。
  • 交换分区:临时与永久关闭 swap,避免 kubelet 异常。
  • 内核与 sysctl:加载 overlay、br_netfilter 模块,开启桥接流量转发。
  • 容器运行时:推荐 containerd(CRI 兼容),也可使用 Docker(需 cri-dockerd 适配)。

二 安装容器运行时 containerd

  • 安装与启动:
    • sudo apt-get update && sudo apt-get install -y containerd
    • sudo systemctl enable --now containerd
  • 生成默认配置并启用 systemd cgroup:
    • containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
    • sudo sed -i ‘s/SystemdCgroup = false/SystemdCgroup = true/g’ /etc/containerd/config.toml
    • sudo systemctl restart containerd
  • 验证:
    • sudo crictl version
    • sudo systemctl status containerd
  • 说明:如使用 Docker,需额外安装 cri-dockerd 并配置 kubelet 使用其 CRI 端点。

三 安装 kubeadm kubelet kubectl

  • 添加 Kubernetes APT 源(新版签名方式):
    • sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
    • curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.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
  • 版本建议:保持 kubelet/kubeadm/kubectl 版本一致;控制面与 kubelet 允许 相差一个次要版本,但 kubelet 版本不可高于 API Server

四 初始化控制平面与加入工作节点

  • 控制平面初始化(在 master 节点执行,按需替换参数):
    • 建议先拉取镜像以加速初始化:sudo kubeadm config images pull
    • 初始化命令示例:
      • sudo 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(在 master 节点执行):
    • mkdir -p $HOME/.kube
    • sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    • sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 安装网络插件(以 Flannel 为例,在 master 节点执行):
    • kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  • 加入工作节点(在 worker 节点执行,使用 kubeadm init 成功输出的 join 命令):
    • sudo kubeadm join <MASTER_IP>:6443 --token --discovery-token-ca-cert-hash
  • 验证:
    • kubectl get nodes
    • kubectl get pods -A

五 常见问题与排错要点

  • 初始化失败或异常中断:先执行 kubeadm reset 清理后再初始化。
  • cgroup 驱动不一致:确保 containerd 使用 systemd cgroup,否则 kubeadm init 可能失败。
  • 镜像拉取慢或失败:使用 –image-repository=registry.aliyuncs.com/google_containers 或提前执行 kubeadm config images pull
  • 节点 NotReady:检查 CNI 网络插件是否安装成功、Pod 网段是否与控制面配置一致(如 10.244.0.0/16)。
  • 端口被占用:核对 6443/10250/2379-2380/10251-10252 等端口占用情况并释放。
  • 防火墙/安全模块:部署阶段可临时 disable ufw,或按需放行端口;如使用 AppArmor,必要时调整策略。
  • 节点唯一性:再次确认 MAC 地址product_uuid 唯一,避免节点识别冲突。

0