- 首页 >
- 问答 >
-
智能运维 >
- Ubuntu系统如何配置Kubernetes环境
Ubuntu系统如何配置Kubernetes环境
小樊
35
2025-12-16 15:00:37
Ubuntu 配置 Kubernetes 环境
一 环境准备与前置条件
- 准备至少 2 核 CPU、4GB 内存、20GB 磁盘 的 64 位 Ubuntu 主机若干(至少一台作为控制平面,其他作为工作节点)。
- 建议统一主机名并配置 /etc/hosts,便于集群内解析。
- 安装并启动时间同步服务(如 chrony),保证节点时间一致。
- 关闭 Swap(临时与永久),避免 kubelet 异常。
- 加载内核模块 overlay、br_netfilter,并开启桥接流量转发所需的 sysctl 参数。
- 如使用 UFW,建议测试环境先关闭或放行 6443、10250、10251、10252、30000-32767 等端口;生产环境请按需精细化放行。
二 安装容器运行时与 Kubernetes 组件
- 容器运行时建议选择 containerd(CRI 兼容、稳定易维护)。如使用 Docker,需确保其与 kubelet 的 cgroup 驱动一致(推荐 systemd)。
- 安装 kubelet、kubeadm、kubectl,并锁定版本,避免意外升级。
- 使用国内镜像源(如 registry.aliyuncs.com/google_containers)可加速组件镜像拉取。
三 初始化控制平面与加入工作节点
- 在控制平面节点执行 kubeadm init,指定 apiserver-advertise-address(本机管理网 IP)、pod-network-cidr(与所选 CNI 匹配,如 Flannel 常用 10.244.0.0/16)、以及镜像仓库。
- 初始化成功后按提示拷贝 admin.conf 到 $HOME/.kube/config,以便使用 kubectl。
- 在工作节点执行 kubeadm join 加入集群;若丢失 token,可在控制平面用 kubeadm token create --print-join-command 重新生成。
四 安装网络插件与验证
- 部署 Flannel 网络插件(适用于大多数入门与测试场景):kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml。
- 等待片刻后检查节点状态为 Ready,并部署测试应用(如 nginx)验证集群连通与服务暴露。
五 常见问题与快速排查
- 初始化失败或异常中断:先执行 kubeadm reset 清理后再初始化。
- kubelet 启动失败:查看日志 journalctl -f -u kubelet,常见原因包括 cgroup 驱动不一致、镜像拉取失败、Swap 未关闭等。
- 节点 NotReady:确认 CNI 已安装、内核参数与模块加载正确、网络策略未阻断 Pod 网段。
- 组件镜像拉取慢或失败:使用 image-repository=registry.aliyuncs.com/google_containers 或提前拉取并重新打标。
附 常用命令清单
- 内核与 sysctl
- sudo modprobe overlay;sudo modprobe br_netfilter
- echo -e “net.bridge.bridge-nf-call-iptables=1\nnet.bridge.bridge-nf-call-ip6tables=1\nnet.ipv4.ip_forward=1” | sudo tee /etc/sysctl.d/k8s.conf && sudo sysctl --system
- 关闭 Swap
- sudo swapoff -a && sudo sed -i ‘/ swap / s/^/#/’ /etc/fstab
- containerd 配置 systemd cgroup
- 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 apt-get update && sudo apt-get install -y kubelet kubeadm kubectl && sudo apt-mark hold kubelet kubeadm kubectl
- 初始化控制平面(示例)
- sudo kubeadm init --apiserver-advertise-address=192.168.1.200 --pod-network-cidr=10.244.0.0/16 --image-repository=registry.aliyuncs.com/google_containers
- 配置 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/flannel-io/flannel/master/Documentation/kube-flannel.yml
- 加入节点
- kubeadm join 192.168.1.200:6443 --token --discovery-token-ca-cert-hash