[英]My nodes got deleted in EKS, how can I recover
我正在开始在机器上使用AWS-EKS演示。 我创建了一个EKS集群,Worker节点,然后将这些节点附加到集群,并在这些节点上部署了nginx服务。 第一次尝试,我可以成功完成此演示,并且能够访问负载均衡器url,并在上面部署了nginx服务。 现在,在播放实例时,我的两个节点都说node1和node2被以下命令删除了
kubectl delete node <node-name>
node "ip-***-***-***-**.ap-south-1.compute.internal" deleted
为了恢复这一点,我花了更多时间,发现负载均衡器URL为ACTIVE,两个相应的EC2实例(或工作程序节点)运行良好。 但是,下面的命令给出了这个结果
PS C:\k8s> kubectl get nodes
No resources found.
PS C:\k8s>
我尝试从入门指南中复制步骤3,但最终只能重新创建相同的工作程序节点
当我尝试在同一EC2实例或辅助节点上再次创建Pod时,它说STATUS正在等待Pod
PS C:\k8s> kubectl create -f .\aws-pod-nginx.yaml
deployment.apps/nginx created
PS C:\k8s> kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-76b782ee75-n6nwv 0/1 Pending 0 38s
nginx-76b78dee75-rcf6d 0/1 Pending 0 38s
PS C:\k8s> kubectl get pods
当我描述吊舱错误如下:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 52s (x5 over 4m11s) default-scheduler no nodes available to schedule pods
我有两个EC2实例(或工作程序节点)正在运行,我尝试将它们手动附加到ELB url,但这些EC2实例的服务状态为“ OutOfService”
我想获得以下命令的结果,该节点具有可以从ELB进行访问的工作节点,但是以下命令“未找到资源”的结果:
kubectl get nodes
您说您使用kubectl delete node <node-name>
命令kubectl delete node <node-name>
。 我想你不想那样做。 您已从Kubernetes删除了节点,但是两个EC2实例仍在运行。 Kubernetes无法安排Pod在从集群中删除的EC2实例上运行。 将实例重新连接到群集非常困难。 您将需要具有ssh或SSM会话管理器访问权限才能登录到实例并运行命令以加入集群。
实际上,只删除旧的EC2实例并创建新的实例会容易得多。 如果您遵循AWS EKS文档来创建集群,则会创建一个ASG(Auto Scaling组或节点组),并且该ASG将创建EC2实例。 通过ASG,您可以扩展和缩小群集中EC2实例的数量。 检查是否由ASG使用AWS控制台创建了EC2实例。 使用“ EC2实例”页面,选择集群中的一个实例,然后选择“标签”选项卡以查看附加到该实例的标签。 如果实例是由ASG创建的,则将看到一个名为aws:autoscaling:groupName
的标签。
如果EC2实例是由ASG创建的,则只需终止该实例,ASG就会创建一个新实例来替换它。 当新的出现时,其UserData将定义一个cloud-init脚本,该脚本会将实例加入kubernetes集群。 对使用kubectl delete node命令删除的所有节点执行此操作。
当新的EC2实例加入集群时,您将通过kubectl get nodes
命令看到它们。 此时,kubernetes将能够调度pod在那些实例上运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.