dns-controller Kubernetes部署尚未更新Kubernetes集群的- AWS

4smxwvx5  于 2024-01-06  发布在  Kubernetes
关注(0)|答案(4)|浏览(178)

我正在尝试在AWS上安装一个kubernetes集群,但在验证时一直失败。使用以下命令更新集群kops update cluster cluster.foo.com --yes并发布运行此kops validate cluster

  1. Using cluster from kubectl context: cluster.foo.com
  2. Validating cluster cluster.api.com
  3. INSTANCE GROUPS
  4. NAME ROLE MACHINETYPE MIN MAX SUBNETS
  5. master-eu-west-2a Master t2.medium 1 1 eu-west-2a
  6. nodes Node t2.medium 2 2 eu-west-2a
  7. NODE STATUS
  8. NAME ROLE READY
  9. VALIDATION ERRORS
  10. KIND NAME MESSAGE
  11. dns apiserver Validation Failed
  12. The dns-controller Kubernetes deployment has not updated the Kubernetes cluster's API DNS entry to the correct IP address. The API DNS IP address is the placeholder address that kops creates: 203.0.113.123. Please wait about 5-10 minutes for a master to start, dns-controller to launch, and DNS to propagate. The protokube container and dns-controller deployment logs may contain more diagnostic information. Etcd and the API DNS entries must be updated for a kops Kubernetes cluster to start.
  13. Validation Failed

字符串
请帮助我们找到根本原因。
1.我试过多次删除和重新创建,但这对我没有帮助。
2.还试图手动将主公共和私有IP放置到路由53,但它打破了一切。

kadbb459

kadbb4591#

由于EC2使用弹性IP地址作为公网IP,所以每次重启主节点都会收到一个新的公网IP。KOPS会自动为Kube API取不到新的IP。例如,如果您的集群名是kube.mydomain.com,那么API DNS将是:api.kube.mydomain.com,正如您在Route53中看到的那样。
当你尝试访问你的集群时,你会看到超时错误:

  1. $ kops rolling-update cluster
  2. Using cluster from kubectl context: kube.mydomain.com
  3. Unable to reach the kubernetes API.
  4. Use --cloudonly to do a rolling-update without confirming progress with the k8s API
  5. error listing nodes in cluster: Get "https://api.kube.mydomain.com/api/v1/nodes": dial tcp 3.8.157.44:443: i/o timeout
  6. $

字符串

**修复方法:**每次EC2主节点接收到新的公网IP时,都必须针对Route53中api.kube.mydomain.com的DNS手动更新公网IP。

还要确保master的私有IP是针对api.internal.kube.mydomain.com的DNS更新的。否则,节点将进入网络不可用状态。

展开查看全部
vlurs2pr

vlurs2pr2#

根据我的经验,如果你在kops和kubectl和kubernetes平面版本的版本上有差异,那么Kops将永远不会更新Route53条目,你必须在我的情况下为所有条目提供相同的版本。

  1. [root@ip-20-0-0-66 kuberneteswithkops]# kops version
  2. Version 1.15.0 (git-9992b4055)
  3. [root@ip-20-0-0-66 kuberneteswithkops]# kubectl version
  4. Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:13:54Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}`

字符串

8qgya5xd

8qgya5xd3#

当我将自定义instance_policies应用到我的示例组时,就发生了这种情况。
原因是Kops控制器没有权限在您的区域中更改您的Route 53 kops-controller.internal. dns条目。
要解决此问题,请将此更改应用于主IAM角色。

  1. {
  2. "Version": "2012-10-17",
  3. "Statement": [
  4. {
  5. "Action": [
  6. "route53:ChangeResourceRecordSets",
  7. "route53:ListResourceRecordSets",
  8. "route53:GetHostedZone"
  9. ],
  10. "Effect": "Allow",
  11. "Resource": [
  12. "arn:aws:route53:::hostedzone/${hostedzone}"
  13. ]
  14. },
  15. {
  16. "Action": [
  17. "route53:GetChange"
  18. ],
  19. "Effect": "Allow",
  20. "Resource": [
  21. "arn:aws:route53:::change/*"
  22. ]
  23. },
  24. {
  25. "Action": [
  26. "route53:ListHostedZones"
  27. ],
  28. "Effect": "Allow",
  29. "Resource": [
  30. "*"
  31. ]
  32. },
  33. ]

字符串

展开查看全部
x7yiwoj4

x7yiwoj44#

我遇到了这个问题,对我来说,问题是我试图将t2.micro用于节点和控制平面(主节点)。
通过将节点切换到t3.small,将控制平面切换到t3.medium,解决了该问题。

相关问题