温馨提示×

Ubuntu Kubernetes环境如何配置

小樊
42
2025-12-04 19:35:59
栏目: 智能运维

Ubuntu 上搭建与配置 Kubernetes 集群

一 环境准备与前置条件

  • 系统要求:64 位 Ubuntu,建议至少 2 核 CPU、4GB 内存、20GB 磁盘;所有节点(Master 与 Node)保持 时间同步(如安装并启用 chrony)。
  • 主机名与解析:为各节点设置唯一 hostname,并在 /etc/hosts 中写入集群内解析,便于组件通信。
  • 关闭 Swap:执行 swapoff -a,并在 /etc/fstab 中注释 swap 行,避免 kubelet 启动失败。
  • 内核与网络:加载 overlay、br_netfilter 模块;开启桥接流量进入 iptables 与 IPv4 转发,确保容器网络连通。
  • 容器运行时:Kubernetes 支持 containerd、CRI-O、Docker Engine(通过 cri-dockerd 适配) 等;如使用 Docker,建议将 cgroup 驱动设为 systemd 以与 kubelet 一致。
  • 防火墙与安全组:放通 6443(API Server)10250(kubelet)10251/10252(kube-scheduler/controller-manager) 等端口,或在内网环境按需关闭防火墙以便排障。

二 安装容器运行时与 Kubernetes 组件

  • 安装 containerd(推荐,CRI 原生)

    1. 安装与生成默认配置:
      sudo apt-get update && sudo apt-get install -y containerd
      containerd config default | sudo tee /etc/containerd/config.toml
    2. 配置 systemd cgroup 驱动:
      sudo sed -i ‘s/SystemdCgroup = false/SystemdCgroup = true/g’ /etc/containerd/config.toml
    3. 重启服务:
      sudo systemctl restart containerd && sudo systemctl enable containerd
  • 安装 Docker(可选,需 cri-dockerd)

    1. 安装与启动:
      sudo apt-get update && sudo apt-get install -y docker.io
      sudo systemctl start docker && sudo systemctl enable docker
    2. 配置 systemd cgroup 驱动(/etc/docker/daemon.json):
      { “exec-opts”: [“native.cgroupdriver=systemd”], “log-driver”: “json-file”, “log-opts”: { “max-size”: “100m” }, “storage-driver”: “overlay2” }
    3. 重启 Docker:
      sudo systemctl daemon-reload && sudo systemctl restart docker
  • 安装 kubeadm、kubelet、kubectl(所有节点)

    1. 添加 Kubernetes APT 源(使用签名密钥环方式):
      sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl
      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
    2. 安装并锁定版本:
      sudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectl
      sudo apt-mark hold kubelet kubeadm kubectl
    3. 启用 kubelet:
      sudo systemctl enable --now kubelet

三 初始化控制平面与网络插件

  • 初始化 Master(示例)

    1. 拉取所需镜像(可选,提前缓存以加速 init):
      kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers
    2. 执行初始化(按需替换参数):
      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
    3. 若 init 异常或中断,先执行 kubeadm reset 再重试。
    4. 配置 kubectl(普通用户):
      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 安装网络插件(以 Flannel 为例)
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    如使用其他网段,请确保与 –pod-network-cidr 一致。

四 加入工作节点与验证

  • 加入 Node
    在 Master 初始化成功后,使用输出的 kubeadm join 命令在各 Node 上执行,例如:
    sudo kubeadm join <MASTER_IP>:6443 --token --discovery-token-ca-cert-hash <SHA256_HASH>
    如令牌过期,可在 Master 上执行:
    kubeadm token create --print-join-command

  • 基础验证
    kubectl get nodes
    kubectl get pods -A
    看到节点状态为 Ready、核心系统 Pod 为 Running 即表示集群可用。

五 常见问题与优化建议

  • 镜像拉取慢或失败:使用国内镜像仓库(如 registry.aliyuncs.com/google_containers)预拉取镜像,或在 containerd 配置镜像加速。
  • cgroup 驱动不一致:容器运行时与 kubelet 必须一致(推荐 systemd);修改后重启容器运行时与 kubelet。
  • 初始化失败排查:先执行 kubeadm reset 清理状态;检查 /var/log/syslog、kubelet 日志与端口占用。
  • 控制平面高可用:生产环境建议部署 多 Master + 负载均衡,并使用 kubeadm init --control-plane-endpoint 方式引导。
  • 安全加固:启用 RBACPod Security、网络策略(如 Calico NetworkPolicy)、镜像签名与镜像仓库鉴权。

0