Kubernetes 集群扩展在 Ubuntu 上如何实现
导读:Kubernetes集群在Ubuntu上的扩展方法 在Ubuntu系统上扩展Kubernetes集群主要分为添加Worker节点(横向扩展计算资源)和添加Control Plane节点(纵向扩展集群管理能力)两类场景,以下是具体实现步骤及注...
Kubernetes集群在Ubuntu上的扩展方法
在Ubuntu系统上扩展Kubernetes集群主要分为添加Worker节点(横向扩展计算资源)和添加Control Plane节点(纵向扩展集群管理能力)两类场景,以下是具体实现步骤及注意事项:
一、前提准备
无论是添加Worker还是Control Plane节点,均需确保新节点满足以下基础条件:
- 系统环境:Ubuntu 20.04及以上版本,系统已更新(
sudo apt update & & sudo apt upgrade -y
); - 容器运行时:安装Docker(或其他兼容运行时,如containerd),并配置
native.cgroupdriver=systemd
(参考Ubuntu安装K8s的Docker配置步骤); - Kubernetes组件:安装
kubeadm
、kubelet
、kubectl
(通过apt
添加Kubernetes源安装,安装后执行sudo apt-mark hold kubelet kubeadm kubectl
锁定版本); - 网络连通性:所有节点(包括Master)之间能通过SSH互相访问,且防火墙开放Kubernetes组件端口(如6443、10250等);
- 关闭Swap:执行
sudo swapoff -a
临时关闭,编辑/etc/fstab
注释swap行永久关闭(Swap会影响Kubernetes性能)。
二、添加Worker节点(横向扩展计算资源)
Worker节点用于运行容器化应用Pod,是最常见的扩展方式。步骤如下:
- 在Master节点获取Join命令:
若Master节点未保存初始Join命令,可通过以下命令重新生成:
输出结果类似:kubeadm token create --print-join-command
kubeadm join < Master节点IP> :6443 --token < 随机Token> --discovery-token-ca-cert-hash sha256:< 证书哈希>
- 在Worker节点执行Join命令:
将Master节点生成的Join命令复制到Worker节点,以sudo
权限执行。执行成功后,Worker节点会自动向Master注册。 - 验证节点状态:
在Master节点执行以下命令,查看Worker节点是否处于Ready
状态:
若Worker节点状态显示为kubectl get nodes
Ready
,则表示扩展成功。
三、添加Control Plane节点(纵向扩展管理能力)
Control Plane节点负责集群管理(如调度、API服务、数据存储),适用于需要提升集群管理能力或实现高可用的场景。步骤如下:
- 在Master节点备份etcd数据:
etcd是Kubernetes的核心数据存储,备份可防止数据丢失:ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot save /tmp/etcd-snapshot.db
- 在新增Control Plane节点安装组件:
参考Ubuntu安装K8s的步骤,在新增节点安装kubeadm
、kubelet
、kubectl
,并确保系统环境满足要求。 - 在Master节点生成Join命令(带证书哈希):
执行以下命令生成包含etcd证书哈希的Join命令:
内容类似:kubeadm token create --certificate-key $(kubeadm certs certificate-key) | sudo tee /tmp/join-command.sh
kubeadm join < Master节点IP> :6443 --token < Token> --discovery-token-ca-cert-hash sha256:< 哈希> --control-plane --certificate-key < 证书Key>
- 在新增Control Plane节点执行Join命令:
将生成的Join命令复制到新增节点,以sudo
权限执行。执行后,新增节点会成为Control Plane节点。 - 验证Control Plane状态:
在Master节点执行以下命令,查看Control Plane节点是否处于Ready
状态:
若所有Control Plane节点状态正常,则扩展成功。kubectl get nodes kubectl get componentstatuses
四、扩展后的验证与优化
- 验证集群状态:
执行kubectl get nodes
确认所有节点状态为Ready
;执行kubectl get componentstatuses
检查Master组件(如API Server、Controller Manager)是否正常。 - 监控集群性能:
使用kubectl top nodes
查看节点资源使用情况,通过Prometheus+Grafana等工具监控集群指标(如CPU、内存、网络)。 - 配置高可用(可选):
若需提升集群可用性,可部署多个Control Plane节点,并配置负载均衡(如Nginx、HAProxy)将API请求分发到多个Master节点。
注意事项
- 版本一致性:所有节点的Kubernetes版本需保持一致(建议使用相同大版本,如1.28.x),避免兼容性问题;
- 网络插件:若集群已部署网络插件(如Calico、Flannel),添加节点后无需重新部署,插件会自动为新节点配置网络;
- 自动扩展:如需根据负载自动调整节点数量,可配置Cluster Autoscaler(需配合云服务商或裸金属集群使用)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Kubernetes 集群扩展在 Ubuntu 上如何实现
本文地址: https://pptw.com/jishu/716349.html