EKS相关的常见问题
节点,ASG相关
节点组启动模板的合并
在eks创建托管节点组使用模板的情况下,eks会为您创建一个新的启动模板,该模板会合并自己的启动模板里的配置和eks的配置,这个启动模板的创建规则遵循文档【1】中的描述,其中着重描述了以下内容:
不要在用户数据中指定任何启动或修改 kubelet 的命令。这是作为 Amazon EKS 合并的用户数据的一部分执行的。
*注 但是这个行为当您在启动模板中指定了ami之后不会自动合并,
【1】https://docs.amazonaws.cn/eks/latest/userguide/launch-templates.html#launch-template-custom-ami
节点组的多可用区自动平衡
因为节点组的后边放的是asg,所以会遵循asg规则,asg会自动平衡,描述如下:
实例启动时,如果您指定多个可用区,会为这些可用区分配所需容量。如果执行扩展操作,Amazon EC2 Auto Scaling 会自动保持您指定的所有可用区的平衡。
https://docs.amazonaws.cn/autoscaling/ec2/userguide/auto-scaling-groups.html
自管理节点组加入集群
自管理节点组加入集群因为缺少了asg的lifecycle hook 无法自动调用对应的sns后边的一系列函数导致不能够使用eks集群中的controller manager这个角色 创建/更新 对应的aws-configmap, 这会导致节点不能加入集群,对应的会在kubelet的日志中报错为 not authorized to list nodes啥的,这种
service
nlb的目标的健康检查有失败的
有可能是service 中的externalTrafficPolicy 写的local
在 Kubernetes 中,Service 是一种抽象的概念,它可以将应用程序的多个实例绑定到一个统一的 DNS 名称或 IP 地址上,并提供负载均衡和服务发现功能。externalTrafficPolicy 是 Kubernetes 中用于控制 Service 对外流量的负载均衡策略的一个字段,它可以取值为 “Cluster” 或 “Local”,具体含义如下:
externalTrafficPolicy=Cluster
当 externalTrafficPolicy 的值为 “Cluster” 时,Service 会将所有的外部流量发送到集群中的任意一个节点上,并由该节点上的 kube-proxy 进行负载均衡和转发。这种负载均衡策略适用于需要将外部流量均匀分布到整个集群中的场景,但可能会产生一些额外的网络负载和延迟。
externalTrafficPolicy=Local
当 externalTrafficPolicy 的值为 “Local” 时,Service 只会将流量发送到与请求最近的节点上,并由该节点上的 kube-proxy 进行负载均衡和转发。这种负载均衡策略适用于需要将外部流量尽可能快地转发到最近的节点上的场景,可以减少网络负载和延迟。
需要注意的是,externalTrafficPolicy 字段只对 Service 类型为 NodePort 和 LoadBalancer 的 Service 有效。对于 ClusterIP 类型的 Service,该字段没有任何作用。同时,externalTrafficPolicy 只针对外部流量有效,对于集群内部的流量,负载均衡策略由 kube-proxy 的默认规则决定。
总的来说,externalTrafficPolicy 是 Kubernetes 中用于控制 Service 对外流量的负载均衡策略的一个字段,可以根据实际需求选择合适的策略,提高网络性能和效率。