Kubespray节点管理指南:节点添加与替换操作详解

Kubespray节点管理指南:节点添加与替换操作详解

kubespray 一个基于Ansible的Kubernetes集群部署工具,提供自动化部署、集群管理等功能。 - 功能:Kubernetes集群部署、节点管理、容器管理、存储管理、网络管理等。 - 特点:基于Ansible;支持多种Kubernetes版本;支持离线安装;易于上手。 kubespray 项目地址: https://gitcode.com/gh_mirrors/ku/kubespray

前言

在Kubernetes集群的日常运维中,节点的添加和替换是常见的操作场景。本文将基于Kubespray这一流行的Kubernetes部署工具,详细介绍如何安全高效地执行各类节点的添加和替换操作。

节点操作基础概念

在开始具体操作前,需要理解几个关键概念:

  1. 控制平面节点(Control Plane Node):运行kube-apiserver、kube-controller-manager和kube-scheduler等核心组件的节点
  2. 工作节点(Worker Node):运行实际工作负载的节点
  3. etcd节点:存储集群状态的分布式键值存储节点

工作节点的添加与替换

添加新工作节点

  1. 更新清单文件:在inventory文件中添加新节点的信息
  2. 执行扩展操作:运行scale.yml剧本,可使用--limit参数限制操作范围
  3. 刷新节点信息:在执行--limit前,建议先运行facts.yml更新所有节点的信息缓存

移除旧工作节点

  1. 执行移除操作:保持节点在清单中,运行remove-node.yml并指定-e node=NODE_NAME
  2. 处理离线节点:对于已离线节点,需添加额外参数:
    -e reset_nodes=false -e allow_ungraceful_removal=true
    
  3. 清理清单文件:操作完成后从清单中移除该节点

控制平面节点的替换

常规控制平面节点替换

  1. 添加新节点:更新清单后运行cluster.yml(注意不能使用scale.yml)
  2. 重启nginx-proxy:在所有节点上重启nginx-proxy容器以更新API Server代理配置
    # Docker环境
    docker ps | grep k8s_nginx-proxy | awk '{print $1}' | xargs docker restart
    
    # Containerd环境
    crictl ps | grep nginx-proxy | awk '{print $1}' | xargs crictl stop
    
  3. 移除旧节点:使用remove-node.yml并指定节点名称

首个控制平面节点的特殊处理

由于Kubespray当前限制,不能直接移除清单中第一个控制平面节点,需要特殊处理:

  1. 调整节点顺序:在清单中将首个节点调整到非首位
    # 调整前
    kube_control_plane:
      hosts:
        node-1:
        node-2:
        node-3:
    
    # 调整后
    kube_control_plane:
      hosts:
        node-2:
        node-3:
        node-1:
    
  2. 执行集群升级:运行upgrade-cluster.ymlcluster.yml使顺序变更生效
  3. 移除旧节点:现在可以正常执行移除操作
  4. 更新集群信息:修改kube-public命名空间下的cluster-info ConfigMap
  5. 添加新节点:更新清单后运行cluster.yml --limit=kube_control_plane

etcd节点的管理

etcd集群需要保持奇数节点数以维持仲裁能力,因此etcd节点的操作通常是成对进行的。

添加etcd节点

  1. 执行添加操作:更新清单后运行:
    cluster.yml --limit=etcd,kube_control_plane -e ignore_assert_errors=yes
    
  2. 升级集群配置:运行:
    upgrade-cluster.yml --limit=etcd,kube_control_plane -e ignore_assert_errors=yes
    
  3. 处理批量添加:添加多个节点时可增加重试次数:
    -e etcd_retries=10
    
  4. 更新API Server配置:在所有控制平面节点更新/etc/kubernetes/manifests/kube-apiserver.yaml中的--etcd-servers参数

移除etcd节点

  1. 执行移除操作:使用remove-node.yml并指定节点名称
  2. 更新清单文件:确保只保留活跃的etcd节点
  3. 刷新集群配置:运行cluster.yml重新生成配置文件
  4. 更新API Server配置:同样需要更新--etcd-servers参数
  5. 关闭旧实例:完成所有操作后关闭旧节点

最佳实践与注意事项

  1. 操作顺序:始终先添加新节点,确认运行正常后再移除旧节点
  2. 变更窗口:选择业务低峰期执行节点变更操作
  3. 备份准备:重要操作前备份etcd数据和关键配置文件
  4. 监控观察:操作过程中密切监控集群状态和组件日志
  5. 验证测试:每个步骤完成后进行基本功能验证

通过遵循上述指南,您可以安全地在Kubespray部署的Kubernetes集群中执行各类节点的添加和替换操作,确保集群的稳定性和可用性。

kubespray 一个基于Ansible的Kubernetes集群部署工具,提供自动化部署、集群管理等功能。 - 功能:Kubernetes集群部署、节点管理、容器管理、存储管理、网络管理等。 - 特点:基于Ansible;支持多种Kubernetes版本;支持离线安装;易于上手。 kubespray 项目地址: https://gitcode.com/gh_mirrors/ku/kubespray

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甄旖昀Melanie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值