Kubernetes集群Ubuntu节点如何配置
导读:Ubuntu 节点加入与管理 Kubernetes 集群实操指南 一 环境准备与系统要求 操作系统建议:Ubuntu 20.04/22.04 LTS(内核 ≥ 4.15),节点间网络互通,最好使用静态 IP或稳定的内网 DNS。 资源建议...
Ubuntu 节点加入与管理 Kubernetes 集群实操指南
一 环境准备与系统要求
- 操作系统建议:Ubuntu 20.04/22.04 LTS(内核 ≥ 4.15),节点间网络互通,最好使用静态 IP或稳定的内网 DNS。
- 资源建议:控制平面至少 2 核 CPU / 4GB 内存;工作节点至少 2 核 CPU / 2GB 内存。
- 主机名与解析:为每个节点设置唯一 hostname(如 master、node1、node2),并在所有节点配置 /etc/hosts 做主机名解析,便于组件通信与排障。
- 基础工具:安装 apt-transport-https、ca-certificates、curl、software-properties-common,用于添加软件源与证书校验。
二 所有节点通用配置
- 关闭 Swap(Kubernetes 要求):
- 临时关闭:
sudo swapoff -a - 永久关闭:注释 /etc/fstab 中的 swap 挂载行
- 临时关闭:
- 加载内核模块与网络转发:
- 模块:
overlay、br_netfilter - 转发与桥接:
net.bridge.bridge-nf-call-iptables = 1net.bridge.bridge-nf-call-ip6tables = 1net.ipv4.ip_forward = 1
- 使配置生效:
sudo sysctl --system
- 模块:
- 防火墙与安全组:测试环境可临时关闭 ufw;生产环境按需放行端口(如 6443、10250、10251、10252、30000–32767 等,具体取决于你的网络插件与控制平面组件)。
- 容器运行时(二选一,推荐 Containerd):
- Containerd(更通用,适配新版 K8s):
- 安装:
sudo apt-get update & & sudo apt-get install -y containerd.io - 生成默认配置并启用 SystemdCgroup:
sudo mkdir -p /etc/containerdcontainerd config default | sudo tee /etc/containerd/config.toml- 在
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]下设置SystemdCgroup = true sudo systemctl enable --now containerd
- 安装:
- Docker(如必须使用):
- 安装:
sudo apt-get update & & sudo apt-get install -y docker.io - 配置 cgroup 驱动为 systemd(编辑 /etc/docker/daemon.json):
{ "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" } , "storage-driver": "overlay2" }
sudo systemctl enable --now docker
- 安装:
- Containerd(更通用,适配新版 K8s):
- 安装 Kubernetes 组件(kubeadm、kubelet、kubectl):
- 添加 GPG 与源(示例为 xenial 仓库,适用于多版本 Ubuntu):
curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpgecho "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
- 安装指定版本(示例:1.28.2-00):
sudo apt-get update & & sudo apt-get install -y kubelet=1.28.2-00 kubeadm=1.28.2-00 kubectl=1.28.2-00 - 锁定版本:
sudo apt-mark hold kubelet kubeadm kubectl - 启动 kubelet:
sudo systemctl enable --now kubelet
- 添加 GPG 与源(示例为 xenial 仓库,适用于多版本 Ubuntu):
三 控制平面节点初始化
- 初始化命令(按需替换参数):
- 使用 Containerd(推荐):
sudo kubeadm init --pod-network-cidr=**10.244.0.0/16** - 使用 Docker:
sudo kubeadm init --pod-network-cidr=**10.244.0.0/16** --cri-socket=**unix:///var/run/dockershim.sock**
- 使用 Containerd(推荐):
- 配置 kubectl(仅在 master 执行):
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
- 安装网络插件(二选一,示例):
- Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml - Calico:
kubectl apply -f https://docs.projectcalico.org/v3.21/manifests/calico.yaml
- Flannel:
- 验证:
kubectl get nodes应看到 master 状态为 Ready。
四 工作节点加入集群
- 获取加入命令:在 master 上执行
kubeadm token create --print-join-command,输出形如:kubeadm join < control-plane-host> :< port> --token < token> --discovery-token-ca-cert-hash sha256:< hash>
- 在目标 worker 节点执行上述命令,完成后回到 master 执行
kubectl get nodes检查状态。 - 若 token 过期或丢失,可在 master 重新生成;网络插件未就绪时,节点会处于 NotReady,等待网络插件 Pod 就绪即可。
五 常见问题与验证
- 节点 NotReady:优先检查 kubelet 是否运行(
sudo systemctl status kubelet)、容器运行时是否健康、以及 CNI 网络插件 的 Pod 是否全部 Running。 - 镜像拉取慢或失败:可配置国内镜像源或使用
kubeadm config images pull预先拉取所需镜像(版本需与控制平面一致)。 - 端口与防火墙:确保 6443(API Server)、10250(kubelet)、以及 kube-proxy 与网络插件所需端口开放;云上需配置安全组规则。
- 版本一致性:控制平面与节点上的 kubelet/kubeadm/kubectl 版本尽量保持一致,避免因版本差异导致异常。
- 验证清单:
kubectl get nodes:所有节点 Readykubectl get pods -A:核心组件(如 coredns、kube-proxy)与网络插件 Runningkubectl describe node < node-name>:查看 Conditions 与 Allocatable/Allocated 资源信息,排查资源与污点问题。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Kubernetes集群Ubuntu节点如何配置
本文地址: https://pptw.com/jishu/757931.html
