amazon-vpc-cni-k8sをデプロイしてもk8sのcorednsが起動しない

実現したいこと

k8sのコントロールプレーンをEC2で構築中、amazon-vpc-cni-k8sをデプロイしても、corednsがready 0/1のままになってしまうことを解決したい。

  • 前提
    • EKSは使用してしない
    • ap-northeast-1
    • EC2のOS:Amazon Linux 2023 ※ubuntuで試しても以下同じ事象となる
    • k8sバージョン:v1.29.1
    • コンテナランタイム:containerd 1.7.11
    • amazon-vpc-cni-k8sバージョン
[ec2-user@ip-10-0-3-197 ~]$ kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2 aws-vpc-cni-init:v1.16.2 aws-node:v1.16.2 aws-eks-nodeagent:v1.0.7
  • 以下マニフェストそのままではimage pullでaccess deniedで

エラーとなるため、一度、docker pullしてから、docker tag imageでimage名を
自分のdockerhubの名前に変えて、自分のdockerリポジトリにpushした後、
以下マニフェストのimage pullのパスを自分のdockerリポジトリに変更している
https://github.com/aws/amazon-vpc-cni-k8s/releases/tag/v1.16.2

発生している問題・分からないこと

aws-node podはちゃんとready 2/2のstatus runningだが、corednsが0/1のまま

[ec2-user@ip-10-0-3-197 ~]$ kubectl get pod -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system aws-node-dstcc 2/2 Running 2 (32m ago) 44m kube-system coredns-76f75df574-ftszt 0/1 Running 16 (35s ago) 49m kube-system coredns-76f75df574-qppsd 0/1 Running 16 (55s ago) 49m kube-system etcd-ip-10-0-3-197.ap-northeast-1.compute.internal 1/1 Running 1 (32m ago) 49m kube-system kube-apiserver-ip-10-0-3-197.ap-northeast-1.compute.internal 1/1 Running 1 (32m ago) 49m kube-system kube-controller-manager-ip-10-0-3-197.ap-northeast-1.compute.internal 1/1 Running 1 (32m ago) 49m kube-system kube-proxy-s4pvs 1/1 Running 1 (32m ago) 49m kube-system kube-scheduler-ip-10-0-3-197.ap-northeast-1.compute.internal 1/1 Running 1 (32m ago) 49m

以下、corednsのログからERRORを抜粋しましたが、coredns→vpc内aws マネージドのdnsサーバ(10.0.0.2)への疎通がtimeoutとなっていることが気になります。
セキュリティグループやネットワークaclは確認しましたが原因では無さそうです。

エラーメッセージ

error

1[ec2-user@ip-10-0-3-197 ~]$ kubectl logs coredns-76f75df574-qppsd -n kube-system 2[ERROR] plugin/errors: 2 4600528562193579633.6585617131897521262. HINFO: read udp 10.0.3.85:35389->10.0.0.2:53: i/o timeout 3[ERROR] plugin/errors: 2 4600528562193579633.6585617131897521262. HINFO: read udp 10.0.3.85:55859->10.0.0.2:53: i/o timeout 4[ERROR] plugin/errors: 2 4600528562193579633.6585617131897521262. HINFO: read udp 10.0.3.85:47167->10.0.0.2:53: i/o timeout 5・・・ 6[ERROR] plugin/kubernetes: pkg/mod/k8s.io/client-go@v0.27.4/tools/cache/reflector.go:231: Failed to watch *v1.Service: failed to list *v1.Service: Get "https://10.96.0.1:443/api/v1/services?limit=500&resourceVersion=0": dial tcp 10.96.0.1:443: i/o timeout 7 8 9

該当のソースコード

▪️ aws-nodeは正常に見える [ec2-user@ip-10-0-3-197 ~]$ kubectl logs aws-node-lxtf5 -n kube-system Defaulted container "aws-node" out of: aws-node, aws-eks-nodeagent, aws-vpc-cni-init (init) Installed /host/opt/cni/bin/aws-cni Installed /host/opt/cni/bin/egress-cni time="2024-01-28T09:21:45Z" level=info msg="Starting IPAM daemon... " time="2024-01-28T09:21:45Z" level=info msg="Checking for IPAM connectivity... " time="2024-01-28T09:21:48Z" level=info msg="Copying config file... " time="2024-01-28T09:21:48Z" level=info msg="Successfully copied CNI plugin binary and config file."

試したこと・調べたこと

上記の詳細・結果
  • aws-nodにより、corednsに、EC2にアタッチされたセカンダリIPが付与できています。
  • EC2にもENIがアタッチされており、Pod用のveth「enide62b3eea9b@if3」、「enib140f76faf1@if3」もUPしています
  • EC2インスタンス自体からはaws マネージドのdnsサーバを使用して名前解決できます
[ec2-user@ip-10-0-3-197 ~]$ kubectl get pod -A -o wide | grep core kube-system coredns-76f75df574-ftszt 0/1 Running 24 (3m22s ago) 77m 10.0.3.167 ip-10-0-3-197.ap-northeast-1.compute.internal <none> <none> kube-system coredns-76f75df574-qppsd 0/1 Running 24 (3m22s ago) 77m 10.0.3.85 ip-10-0-3-197.ap-northeast-1.compute.internal <none> <none> [ec2-user@ip-10-0-3-197 ~]$ ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 0a:51:98:f0:21:83 brd ff:ff:ff:ff:ff:ff altname enp0s5 altname eni-092b3d68d43a46e0c altname device-number-0 4: ens7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 0a:02:76:b7:2a:8b brd ff:ff:ff:ff:ff:ff altname enp0s7 altname eni-0a63caa240b7c318d altname device-number-2 5: enide62b3eea9b@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc noqueue state UP mode DEFAULT group default link/ether b2:0b:3e:c1:46:02 brd ff:ff:ff:ff:ff:ff link-netns cni-24038370-d646-cfcf-4aae-705a2ad81caf 6: enib140f76faf1@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc noqueue state UP mode DEFAULT group default link/ether 0e:94:12:a3:07:3c brd ff:ff:ff:ff:ff:ff link-netns cni-3cb8e25f-3c76-75bb-fa73-bcb1ea8c64ab [ec2-user@ip-10-0-3-197 ~]$ ip route default via 10.0.3.1 dev ens5 proto dhcp src 10.0.3.197 metric 512 10.0.0.2 via 10.0.3.1 dev ens5 proto dhcp src 10.0.3.197 metric 512 10.0.3.0/24 dev ens5 proto kernel scope link src 10.0.3.197 metric 512 10.0.3.1 dev ens5 proto dhcp scope link src 10.0.3.197 metric 512 10.0.3.85 dev enide62b3eea9b scope link 10.0.3.167 dev enib140f76faf1 scope link [ec2-user@ip-10-0-3-197 ~]$ dig +noall +answer google.com @10.0.0.2 google.com. 206 IN A 216.58.220.110

補足

awsやk8sに詳しい方、ご協力をお願いいたしますmm
EKSは費用の観点から使用していません。

コメントを投稿

0 コメント