AWS EKS故障排除常见问题

AWS EKS故障排除常见问题

只有当您已在Applications Manager中添加了Amazon监控器时,才能配置AWS EKS监控器。
在Applications Manager中监控Elastic Kubernetes Service之前,请确保您已满足Amazon监控的先决条件

如何验证是否满足所有先决条件?
  1. 要检查是否安装了aws-cli,请执行以下命令:aws --version
    示例输出 (对于Windows 10):aws-cli/2.1.29 Python/3.8.8 Windows/10 exe/AMD64 prompt/off
  2. 要检查是否安装了kubectl,请执行命令:kubectl version --short --client
    示例输出:客户端版本:v1.19.15-eks-ad4801
  3. 登录AWS控制台并检查在Applications Manager中使用其凭证的IAM用户是否有权访问先决条件中列出的所有API 。

何时为EKS监视器填充数据?

  1. 我们只在EKS集群处于活动状态时才启动数据收集。 

          可能的状态:创建、活动、删除、失败、更新

如果集群处于创建/更新状态,我们只会更新“概览”选项卡中的“集群信息”组


如果您的AWS EKS监视器中未填充数据 (无数据/无UI消息),可能是由于以下任何原因所导致:
  1. 您尚未满足在Applications Manager中监控AWS EKS所需的先决条件 。
  2. 通过验证上述先决条件,检查已安装APM的用户是否具有访问已安装kubectl/aws-cli的权限。
  3. EKS集群未处于活动状态 。
     注意: Applications Manager仅在EKS集群处于活动状态时启动数据收集。如果集群处于创建/更新状态,则只会在概览选项卡中的集群信息组中更新数据。
如果未填充容器Insights数据:
  1. 通过使用上述方法验证您是否满足所有先决条件
  2. 确保amazon-cloudwatch pod是否处于运行状态。如果处于运行状态并且AWS控制台的cloudwatch中仍然没有数据,请确保CloudWatchAgentServerPolicy已附加到运行 amazon-cloudwatch pod的节点 (EC2实例)。欲了解更多信息请点击此处
如果要禁用代理服务器:
  1. 在Applications Manager中,导航到管理 > 产品设置 > 连接 > 代理服务器。
  2. 首先验证是否已配置代理服务器。
  3. 如果已配置,则需要在使用代理服务器中排除kubectl,请导航到EKS监控页面 > 概览选项卡 > 集群信息并获取集群端点 信息。在没有协议的情况下,不要对以地址开头的地址使用代理 (http/https) 字段中提供端点信息
 注意: 只有kubectl 1.19及以上版本支持代理。

如果要禁用特定节点条件的自动告警

通过导航到管理 > 性能轮询 > 优化数据手机 > Elastic Kubernetes Service 禁用特定条件



注意:如果一个节点没有处于准备就绪状态,它的运行情况会自动受到影响。

EKS监视器中可能出现的错误及其故障排除

无法从 'eks:DescribeCluster' API获取数据 (或) 
'eks:DescribeCluster' API 的访问被拒绝(或)
无法收集 <SERVICE_NAME> 的数据。<API_NAME> 的访问被拒绝。
  1. 确保您已满足在Applications Manager中发现和监控Elastic Kubernetes Service集群的先决条件
  2. 登录AWS控制台并验证在Applications Manager中使用凭证的IAM用户是否有先决条件中API的访问权限。
由于未安装kubectl/aws-cli,数据收集已停止。
  1. 确保您已遵循并完成了所有的先决条件
  2. 通过执行上述步骤来验证您是否已完成先决条件
数据收集已停止。无法通过kubectl连接到EKS集群端点。

    1. 如果您使用的是私有EKS端点并遇到此错误,请参阅此处 以使用私有端点访问运行 kubectl 命令。

      1. 如果您想单独为特定的IP地址添加对Kubernetes API服务器的访问权限,请参阅此处

    2. 确保在EKS集群的VPC中启用DNS主机名。要启用DNS主机名DNS解析,请参阅此处

    3. 确保安全组的入站策略配置正确。

数据收集已停止。用户无权通过kubectl获取数据。
    1. 确保其用于添加EKS监视器的用户凭证具有根权限

    2. 需要解决未经授权的错误,请参阅此处

    3. 需要添加IAM用户以启用对EKS集群的访问,请参阅此处


执行kubectl命令时超时。

    1. 增加超时值 (超时的默认值和最小值是30秒)。如果需要增加该值,请转到EKS监控页面,监控操作 -> 编辑监视器 -> 提供适当的值并更新。

    2. 确保您的系统具有稳定的网络连接。

    3. 运行以下kubectl命令可以了解接收响应所需的大致时间。

      1. kubectl get nodes

      2. kubectl get pods --all-namespaces

APM中使用的kubectl命令列表

  1. 所有命令都将附加  --kubeconfig <FILEPATH>.
  2. kubectl config set clusters.%s.proxy-url %s
  3. kubectl version -o json
  4. kubectl get namespaces -o json
  5. kubectl get componentstatuses -o json --all-namespaces
  6. kubectl get nodes -o json
  7. kubectl get pods -o json --all-namespaces
  8. kubectl get services -o json --all-namespaces
  9. kubectl get deployments -o json --all-namespaces
  10. kubectl get persistentvolumes -o json --all-namespaces
  11. kubectl get persistentvolumeclaims -o json --all-namespaces
  12. kubectl describe nodes

使用的 aws 命令列表

  1. aws configure set aws_access_key_id {access_key}
  2. aws configure set aws_secret_access_key {secret_access_key}
  3. aws configure set default.region {region}
  4. aws eks --region {region} update-kubeconfig --name {cluster_name} --kubeconfig <FILEPATH>