kubernetes AWS EKS - kubectl logs [pod name]

ego6inou  于 2023-06-05  发布在  Kubernetes
关注(0)|答案(2)|浏览(347)

我在us-east-1的AWS上运行了一个EKS集群。我在us-east上运行了三个工作节点,分别是1a、1b、1c。us-east-1a中运行的所有pod都允许我登录和检查日志,但其他区域中的pod不断抛出错误:

Error from server: no preferred addresses found; known addresses: []

任何帮助感激不尽。基本上使用此设置在各个区域中对mongodb进行分片。

63lcw9qa

63lcw9qa1#

所有工人

1)编辑文件:

/etc/systemd/system/kubelet.service.d/10-kubeadm.conf

添加或更新:

Environment="KUBELET_EXTRA_ARGS=--node-ip='private-ip-value'"
  • 例如:Environment="KUBELET_EXTRA_ARGS=--node-ip=172.31.55.201"*

2)systemctl daemon-reload
3)systemctl restart kubelet

nwlls2ji

nwlls2ji2#

您遇到的错误消息Error from server: no preferred addresses found; known addresses: []通常发生在Kubernetes API服务器无法为请求的pod确定适当的地址时。如果pod的IP地址未正确注册或集群中存在网络问题,则可能会发生这种情况。
要排除故障并解决此问题,您可以执行以下步骤:
1.检查节点状态:验证可用区us-east-1b和us-east-1c中的工作节点是否处于健康状态。您可以使用以下命令检查节点状态:
确保所有节点都处于“就绪”状态,并分配了适当的IP地址。
1.验证Pod计划:检查可用区us-east-1b和us-east-1c的Pod是否调度成功并运行。使用以下命令验证pod状态:
确保这些可用区中的Pod运行正常。

  • 检查网络配置:确保正确设置了EKS群集中的网络配置。具体而言,请检查以下内容:
  • 验证您的EKS集群关联的私有网络、子网、安全组配置正确,允许不同可用区的节点和Pod通信。
  • 确保EKS集群的网络组件(如VPC CNI)正常运行。您可以查看EKS群集的网络配置,并按照AWS文档对任何网络问题进行故障排除。
  • 查看群集日志:检查EKS群集的日志(包括控制平面日志),以确定任何潜在错误或网络相关问题。您可以使用AWS管理控制台或AWS CLI访问日志。
  • 对于AWS CLI,您可以使用以下命令检索控制平面日志:
aws eks describe-cluster --name <cluster-name> --region <region> --query "cluster.logging.clusterLogging[?enabled==\`true\`].types[]" --output text
  • 确定启用的日志类型后,您可以使用适当的AWS CLI命令检索日志。例如,要获取控制平面日志:
aws eks describe-cluster --name <cluster-name> --region <region> --query "cluster.logging.clusterLogging[?enabled==\`true\`].types[]" --output text
  • 验证DNS解析:确保DNS解析在EKS群集中正常工作。Pod应该能够解析其他Pod的服务名称和IP地址。检查DNS解析是否按预期运行。

按照以上步骤操作,查看日志和网络配置,您应该能够识别并解决从可用区us-east-1b和us-east-1c的Pod访问日志时出现错误消息的问题。
我还在GitHub上找到了这个开源项目-Awesome-CloudOps-Automation。他们正在创建一个开源框架,用于使用Jupyter Notebooks编写Runbook。它们具有Copy logs to S3 bucketsmany more等操作,可用于自动执行某些AWS EKS相关任务。

相关问题