centos k8s部署中节点如何管理
导读:CentOS环境下Kubernetes节点管理指南 在CentOS系统中,Kubernetes(k8s)节点的管理是集群运维的核心环节,涵盖节点部署、状态监控、调度控制、新增/删除等全生命周期操作。以下是具体流程与关键注意事项: 一、节点部...
CentOS环境下Kubernetes节点管理指南
在CentOS系统中,Kubernetes(k8s)节点的管理是集群运维的核心环节,涵盖节点部署、状态监控、调度控制、新增/删除等全生命周期操作。以下是具体流程与关键注意事项:
一、节点部署前准备(所有节点通用)
在添加或初始化节点前,需完成以下系统配置,确保节点符合Kubernetes要求:
- 关闭不必要的服务:
- 禁用SELinux(避免权限冲突):
setenforce 0;永久生效需修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled。 - 关闭Swap分区(Kubernetes要求):
swapoff -a;永久生效需注释/etc/fstab中的Swap行。 - 关闭防火墙(或放行Kubernetes端口,默认6443):
systemctl stop firewalld & & systemctl disable firewalld。
- 禁用SELinux(避免权限冲突):
- 配置网络与主机名:
- 设置静态IP(避免DHCP变动导致节点失联),编辑
/etc/sysconfig/network-scripts/ifcfg-eth0文件,配置BOOTPROTO=static、IP地址、子网掩码、网关等参数。 - 统一主机名(便于识别):
hostnamectl set-hostname < 节点名称>,并在/etc/hosts文件中添加节点IP与主机名的映射(如192.168.1.100 k8s-master)。
- 设置静态IP(避免DHCP变动导致节点失联),编辑
- 同步系统时间:
安装并配置NTP服务(如chronyd),确保所有节点时间一致,避免证书验证失败或调度异常:yum install -y chronyd & & systemctl enable chronyd & & systemctl start chronyd。
二、节点状态监控
使用kubectl命令可快速查看节点的运行状态、资源使用情况及详细信息:
- 查看节点列表:
kubectl get nodes:显示集群中所有节点的名称、状态(Ready表示正常,NotReady表示异常)、角色(Master/Worker)及Kubernetes版本。 - 查看节点详细信息:
kubectl describe node < 节点名称>:输出节点的IP地址、标签(Labels)、资源容量(CPU/内存)、分配情况(Allocatable)、条件状态(如DiskPressure磁盘压力、MemoryPressure内存压力)及事件(Events)。 - 查看节点指标:
结合Metrics Server(需提前部署)使用kubectl top nodes命令,查看节点的CPU、内存实时使用率,快速定位资源瓶颈。
三、节点调度控制
通过调度命令可实现节点的不可调度、Pod驱逐、恢复调度,确保维护或扩容时业务不受影响:
- 标记节点为不可调度:
kubectl cordon < 节点名称>:将节点标记为SchedulingDisabled(Ready,SchedulingDisabled状态),后续新Pod不会调度到该节点,但现有Pod继续运行。 - 驱逐节点上的Pod:
kubectl drain < 节点名称> --delete-local-data --ignore-daemonsets:- 将节点上的Pod驱逐至其他可用节点(自动处理Pod重建);
--delete-local-data:删除节点上的本地存储数据(如EmptyDir卷),若Pod无需持久化数据可添加;--ignore-daemonsets:忽略DaemonSet管理的Pod(如kube-proxy、flannel),避免影响集群基础服务。
注:kubectl drain会自动调用cordon命令,无需重复执行。
- 恢复节点调度:
kubectl uncordon < 节点名称>:将节点恢复为可调度状态(Ready状态),新Pod可正常调度至该节点。
四、新增节点到集群
新增Worker节点需完成环境准备→获取Join命令→执行Join操作三个步骤:
- 准备新节点:
按照“节点部署前准备”要求配置新节点(关闭SELinux、Swap,配置静态IP等),并安装Docker/containerd(容器运行时)、kubelet、kubeadm组件(版本需与Master节点一致)。 - 获取Join命令:
在Master节点上执行kubeadm token create --print-join-command,生成包含token(身份验证令牌)、discovery-token-ca-cert-hash(CA证书哈希值)的kubeadm join命令(如kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)。 - 执行Join操作:
在新节点上运行上述kubeadm join命令,等待命令执行完成(约1-2分钟)。 - 验证节点加入:
在Master节点上执行kubectl get nodes,若新节点状态为Ready,则表示加入成功。若状态为NotReady,需检查新节点的kubelet日志(journalctl -u kubelet -f)排查问题(如网络不通、证书错误)。
五、删除节点
删除节点需先驱逐Pod→再移除节点,确保数据安全与集群稳定:
- 驱逐节点上的Pod:
kubectl drain < 节点名称> --delete-local-data --ignore-daemonsets:将节点上的Pod迁移至其他节点(DaemonSet管理的Pod除外)。 - 删除节点:
kubectl delete node < 节点名称>:从Kubernetes集群中移除该节点(仅删除集群中的元数据,不影响节点本身的系统环境)。 - 清理节点环境(在被删除节点上执行):
kubeadm reset -f:重置节点的Kubernetes配置(清除kubelet、kubeadm数据),恢复节点至初始状态(需重新执行kubeadm join才能再次加入集群)。
六、注意事项
- 新增节点:
- 确保新节点的Kubernetes组件版本与集群版本一致(避免兼容性问题);
- 若节点无法加入集群,需检查网络连通性(Master节点与Worker节点之间能否访问6443端口)、token有效期(默认24小时,过期需重新生成)、CA证书哈希值是否正确。
- 删除节点:
- 删除Master节点需谨慎(会影响集群控制平面),若需删除Master节点,需先转移控制平面角色至其他节点(如使用
kubeadm upgrade或手动迁移Etcd数据); - 删除节点前,确保业务已迁移至其他节点,避免Pod丢失(尤其是有状态Pod,需提前备份数据)。
- 删除Master节点需谨慎(会影响集群控制平面),若需删除Master节点,需先转移控制平面角色至其他节点(如使用
- 日常维护:
- 定期检查节点状态(
kubectl get nodes),及时处理NotReady状态的节点; - 监控节点资源使用情况(
kubectl top nodes),避免资源耗尽导致Pod被驱逐; - 定期更新Kubernetes组件(使用
yum update),修复安全漏洞。
- 定期检查节点状态(
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos k8s部署中节点如何管理
本文地址: https://pptw.com/jishu/743857.html
