如何检查、扩展、删除或耗尽 Amazon EKS 中的工作线程节点?
我使用 eksctl 或 AWS 管理控制台启动自己的 Amazon Elastic Kubernetes Service (Amazon EKS) 工作线程节点。现在我想检查、扩展、耗尽或删除自己的工作线程节点。
简短描述
根据您的需要完成相应章节中的步骤:
- 检查您的工作线程节点
- 扩展您的工作线程节点
- 耗尽您的工作线程节点
- 删除您的工作线程节点
解决方法
检查您的工作线程节点
要列出注册到 Amazon EKS 控制平面的工作线程节点,请运行以下命令:
kubectl get nodes -o wide
输出会返回工作线程节点的名称、Kubernetes 版本、操作系统和 IP 地址。
要获取关于单个工作线程节点的其他信息,请运行以下命令:
kubectl describe node/node_name
**注意:**将 node_name 替换为您的值。例如:ip-XX-XX-XX-XX.us-east-1.compute.internal
输出将显示关于工作线程节点的更多信息,包括标签、影响、系统信息和状态。
扩展您的工作线程节点
**注意:**如果您的节点组出现在 Amazon EKS 控制台中,则使用托管节点组。否则,使用非托管节点组。
(选项 1)要使用 eksctl 扩展您的托管或非托管工作线程节点,请运行以下命令:
eksctl scale nodegroup --cluster=clusterName --nodes=desiredCount --name=nodegroupName
**注意:**将 clusterName、desiredCount 和 nodegroupName 替换为您的值。
–或者–
(选项 2)要扩展托管工作线程节点而不使用 eksctl,请完成更新托管节点组的“编辑节点组配置”部分中的步骤。
–或者–
(选项 3)要使用 AWS CloudFormation 扩展您的非托管工作线程节点,请完成以下步骤:
1. 使用 CloudFormation 模板启动您的 Windows 或 Linux 工作线程节点。
2. 修改您的 CloudFormation 堆栈中的 NodeAutoScalingGroupDesiredCapacity、NodeAutoScalingGroupMinSize 或 NodeAutoScalingGroupMaxSize 参数。
耗尽您的工作线程节点
**重要提示:**耗尽操作可隔离工作线程节点,并告知 Kubernetes 停止在该节点上计划的任何新 Pod。在目标节点上运行的 Pod 被排除出耗尽节点操作,这意味着这些 Pod 将会停止。考虑这可能对您的生产环境产生的影响。
您可以耗尽整个节点组或单个工作线程节点。选择合适的选项。
(选项 1)耗尽整个节点组:
如果您使用 eksctl 来启动您的工作线程节点,则运行以下命令:
eksctl drain nodegroup --cluster=clusterName --name=nodegroupName
**注意:**将 clusterName 和 nodegroupName 替换为您的值。
要解锁节点组,请运行以下命令:
eksctl drain nodegroup --cluster=clusterName --name=nodegroupName --undo
**注意:**将 clusterName 和 nodegroupName 替换为您的值。
如果您不使用 eksctl 来启动您的工作线程节点,那么识别并耗尽特定 Kubernetes 版本的所有节点。例如:
#!/bin/bash K8S_VERSION=1.18.8-eks-7c9bda nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}") for node in ${nodes[@]} do echo "Draining $node" kubectl drain $node --ignore-daemonsets --delete-local-data done
要识别并解锁特定 Kubernetes 版本的所有节点,请使用以下代码:
#!/bin/bash K8S_VERSION=1.18.8-eks-7c9bda nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}") for node in ${nodes[@]} do echo "Uncordon $node" kubectl uncordon $node done
**注意:**要获取工作线程节点的版本,请运行以下命令:
$ kubectl get nodes NAME STATUS ROLES AGE VERSION ip-XXX-XXX-XX-XXX.ec2.internal Ready <none> 6d4h v1.18.8-eks-7c9bda ip-XXX-XXX-XX-XXX.ec2.internal Ready <none> 6d4h v1.18.8-eks-7c9bda
注意:版本号将显示在版本列中。
(选项 2)耗尽单个工作线程节点:
如果您不使用 eksctl 来启动您的工作线程节点,或者您想仅耗尽特定节点,则从容地隔离您的工作线程节点:
kubectl drain node_name --ignore-daemonsets
**注意:**将 node_name 替换为您的值。
要撤销隔离,请运行以下命令:
kubectl uncordon node_name
**注意:**将 node_name 替换为您的值。
要将现有应用程序迁移到新工作线程节点组,请参阅迁移到新节点组。
删除您的工作线程节点
**重要提示:**删除操作不可恢复。考虑这可能对您的生产环境产生的影响。
如果您使用 eksctl,则运行以下命令:
eksctl delete nodegroup --cluster=clusterName --name=nodegroupName
如果您有托管节点组,则完成删除托管节点组中的步骤。
如果您有非托管节点组,并且已使用 CloudFormation 模板启动了工作线程节点,则删除 CloudFormation 堆栈。必须删除为 Windows 或 Linux 的节点组创建的堆栈。
如果您有非托管节点组但未使用 CloudFormation 模板来启动您的工作线程节点,则删除为您的工作线程节点的 Auto Scaling 组。或者,如果您不使用 Auto Scaling 组,则直接终止实例。

相关内容
- 已提问 3 个月前lg...
- 已提问 4 个月前lg...
- 已提问 5 个月前lg...
- 已提问 4 个月前lg...
- 已提问 4 个月前lg...
- AWS 官方已更新 4 个月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 个月前
- AWS 官方已更新 7 个月前