【问题标题】:AWS-CNI fails with failed to connect service ":50051"AWS-CNI 失败,无法连接服务 \":50051\"
【发布时间】:2022-10-30 10:15:12
【问题描述】:

我正在尝试在原始 AWS EC2 实例上设置非托管 k8s 集群。 我已经安装了运行良好的控制平面。只有 core-dns 处于未知状态,这是意料之中的,直到安装 CNI。

ubuntu@ip-xxx-xx-1-11:/var/log/aws-routed-eni$ kubectl get po -n kube-system
NAME                                     READY   STATUS             RESTARTS      AGE
aws-node-hjx46                           0/1     CrashLoopBackOff   9 (0s ago)    24m
coredns-64897985d-2z7xd                  0/1     Unknown            1             81m
coredns-64897985d-7tplp                  0/1     Unknown            1             81m
etcd-ip-xxx-xx-1-11                      1/1     Running            3 (25m ago)   81m
kube-apiserver-ip-xxx-xx-1-11            1/1     Running            3 (25m ago)   81m
kube-controller-manager-ip-xxx-xx-1-11   1/1     Running            3 (25m ago)   81m
kube-proxy-ktbfd                         1/1     Running            3 (25m ago)   81m
kube-scheduler-ip-xxx-xx-1-11            1/1     Running            3 (25m ago)   81m

(3 次重新启动是由于我重新启动了节点)

我已将具有以下策略的 IAM 角色添加到我的控制平面节点:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AssignPrivateIpAddresses",
                "ec2:AttachNetworkInterface",
                "ec2:CreateNetworkInterface",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeInstances",
                "ec2:DescribeTags",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeInstanceTypes",
                "ec2:DetachNetworkInterface",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:UnassignPrivateIpAddresses"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:network-interface/*"
            ]
        }
    ]
}

此外,我还创建了一个安全组,它允许来自分配了相同安全组的任何节点的所有端口上的所有流量。所以我的控制平面节点应该能够在任何端口上与其自身进行通信。

然后我从 github 下载了 aws-k8s-cni.yaml v1.11.4,并使用以下命令安装它:

kubectl apply -f aws-k8s-cni.yaml

安装后我得到: "msg":"Retrying waiting for IPAM-D" 在日志中,"timeout: failed to connect service \":50051\" within 5s" 在我描述我的 aws-node pod 时。

但是,执行cat /var/log/aws-routed-eni/ipamd.log | grep "error" 不会产生任何结果。仔细阅读该文件后,我相信 ipamd 运行顺利。

os: Ubuntu 22.04
k8s: 1.23.12
aws-cni: 1.11.4

EC2 实例已被标记为kubernetes.io/cluster/<cluster-name>: owned

kubelet 以--cloud-provider=aws 开头

任何帮助将不胜感激!

谢谢!

【问题讨论】:

    标签: amazon-web-services kubernetes


    【解决方案1】:

    仔细检查 AWS VPC CNI 的先决条件,尤其是 OpenID 凭证。就docs 而言,AWS VPC CNI 需要

    现有的 AWS Identity and Access Management (IAM) OpenID Connect 集群的 (OIDC) 提供商

    我找不到你提到这方面的内容。

    如果您确实错过了这一步,请进一步阅读documentation to create OIDC provider for your cluster

    希望能帮助到你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多