EKS:无法从 pods 中提取日志

EKS: Unable to pull logs from pods

kubectl logs 命令间歇性失败并出现 "getsockopt: no route to host" 错误。

# kubectl logs -f mypod-5c46d5c75d-2Cbtj

Error from server: Get https://X.X.X.X:10250/containerLogs/default/mypod-5c46d5c75d-2Cbtj/metaservichart?follow=true: dial tcp X.X.X.X:10250: getsockopt: no route to host

如果我 运行 将相同的命令重复 5-6 次,它就会起作用。我不确定为什么会这样。任何帮助将不胜感激。

我对私有 IP 172 有完全相同的问题。17.X.X

Error from server: Get https://172.17.X.X:10250/containerLogs/******: dial tcp 
172.17.X.X:10250: getsockopt: no route to host

我正在使用 EKS 优化的 AMI v24。

这里讨论了类似的问题。 https://github.com/aws/amazon-vpc-cni-k8s/issues/137。我想知道私人 ip 以 172 开头。17.X.X 是问题,因为它与 Docker 的默认内部 cidr 冲突,但我在使用 kops 时没有遇到这个问题。

仅供参考,我刚刚尝试在 EKS 上使用另一个 VPC 172。18.X.X,所有 kubectl 命令都可以正常工作。

我还注意到当我使用 172.17.X.X VPC 时,kops 使用 172.18.X.X 作为 docker 的内部 cidr。所以我推测 kops 更改默认 docker 的 cidr 不与集群 IP 冲突。我希望我们可以在创建 EKS 工作节点时配置 docker 的 cidr,可能是通过 CloudFormation yaml 模板或其他方式。

我有机会亲自与 AWS EKS 工程师交谈。官方的回答是当前的 EKS 不支持 172.17.0.0/16,因为 cidr 与 Docker 的重叠 IP.It 似乎他们有内部票来解决这个问题,但没有 ETA。

根据 AMI,我收到错误 "getsockopt: no route to host"。

我使用 "kubectl logs my-pod-id" 访问 pod 的日志。

  • 我是 AWS 中的 运行 EKS V1.10(是的,我需要尽快升级到 V1.11)。
  • 我为我的 vpc 和子网使用 IP 范围 10.0.0.0。我有 2 public 和 2 个私有子网。

它有效(也无效),具有完全相同的路由、安全组、vpc 等。只是 AMI 更改。

有效: ami-73a6e20b(我在 2018 年 10 月首次设置集群时使用)

不起作用: ami-0e7ee8863c8536cce(并且是截至今天为 us-west-2 俄勒冈州推荐的经 Amazon EKS 优化的 AMI - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html

我的观点是,这可能不是您的 routing/security-group 设置。