我尝试在原始AWS EC2示例上设置一个非托管的k8s集群。我已经安装了运行良好的控制面板。只有核心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
(The 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"
,在描述aws-node pod时为"timeout: failed to connect service \":50051\" within 5s"
。
然而,做一个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
开头
任何帮助都将不胜感激!
谢谢你,谢谢你
1条答案
按热度按时间pdsfdshx1#
仔细检查AWS VPC CNI的先决条件,尤其是OpenID凭据。
适用于您的集群的现有AWS身份和访问管理(IAM)OpenID Connect(OIDC)提供商
我找不到你提到的关于这方面的事。
如果您确实错过了这一步,请进一步阅读documentation to create OIDC provider for your cluster
希望能有所帮助。