CoreDNS ポッドの確認
EKSクラスターでは、CoreDNSポッドがDNS解決を処理します。これらのポッドが正しく実行されていることを確認しましょう。
ステップ1 - ポッドのステータスを確認する
まず、kube-system名前空間のCoreDNSポッドを確認します:
NAME READY STATUS RESTARTS AGE
CoreDNS-6fdb8f5699-dq7xw 0/1 Pending 0 42s
CoreDNS-6fdb8f5699-z57jw 0/1 Pending 0 42s
CoreDNSポッドが実行されていないことが確認できます。これがクラスターでのDNS解決の問題を明確に説明しています。
ポッドがPending状態であることは、それらがどのノードにもスケジュールされていないことを示しています。
ステップ2 - ポッ ドのイベントを確認する
これらのポッドに関連するイベントを調査するため、その説明を確認しましょう:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 29s default-scheduler 0/3 nodes are available: 3 node(s) didn't match Pod's node affinity/selector. preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling.
警告メッセージは、ノードラベルとCoreDNSポッドのノードセレクタ/アフィニティの間に不一致があることを示しています。
ステップ3 - ノード選択の確認
CoreDNSポッドのノードセレクタを調べてみましょう:
{"workshop-default": "no"
}
ワーカーノードのラベルを確認します:
{"alpha.eksctl.io/cluster-name": "eks-workshop",
"alpha.eksctl.io/nodegroup-name": "default",
"beta.kubernetes.io/arch": "amd64",
"beta.kubernetes.io/instance-type": "m5.large",
"beta.kubernetes.io/os": "linux",
"eks.amazonaws.com/capacityType": "ON_DEMAND",
"eks.amazonaws.com/nodegroup": "default",
"eks.amazonaws.com/nodegroup-image": "ami-07fdc65a0c344a252",
"eks.amazonaws.com/sourceLaunchTemplateId": "lt-0f7c7c3c9cb770aaa",
"eks.amazonaws.com/sourceLaunchTemplateVersion": "1",
"failure-domain.beta.kubernetes.io/region": "us-west-2",
"failure-domain.beta.kubernetes.io/zone": "us-west-2a",
"k8s.io/cloud-provider-aws": "b2c4991f4c3acb5b142be2a5d455731a",
"kubernetes.io/arch": "amd64",
"kubernetes.io/hostname": "ip-10-42-100-65.us-west-2.compute.internal",
"kubernetes.io/os": "linux",
"node.kubernetes.io/instance-type": "m5.large",
"topology.k8s.aws/zone-id": "usw2-az1",
"topology.kubernetes.io/region": "us-west-2",
"topology.kubernetes.io/zone": "us-west-2a",
"workshop-default": "yes"
}
CoreDNSポッドはworkshop-default: noラベルを持つノードを必要としますが、ノードにはworkshop-default: yesとラベル付けされています。
ポッドのyamlマニフェストには、ノードへのポッドスケジューリングに影響を与えるさまざまなオプションがあります。その他のパラメータには、アフィニティ、アンチアフィニティ、ポッドトポロジースプレッド制約が含まれます。詳細についてはKubernetesドキュメントを参照してください。
根本原因
本番環境では、チームはしばしばCoreDNSにノードセレクタを使用して、これらのポッドをクラスターシステムコンポーネント専用のノードで実行します。ただし、セレク タがノードラベルと一致しない場合、ポッドはPending状態のままになります。
この場合、CoreDNSアドオンは既存のノードと一致しないノードセレクタで構成されており、ポッドが実行されるのを妨げています。
解決策
この問題を修正するために、CoreDNSアドオンをデフォルト設定に更新し、nodeSelector要件を削除します:
{ "update": {"id": "b3e7d81c-112a-33ea-bb28-1b1052bc3969",
"status": "InProgress",
"type": "AddonUpdate",
"params": [
{"type": "ResolveConflicts",
"value": "OVERWRITE"
},
{"type": "ConfigurationValues",
"value": "{}"}
],
"createdAt": "20XX-XX-09T16:25:15.885000-05:00",
"errors": []
}
}
そして、CoreDNSポッドが現在実行されていることを確認します:
NAME READY STATUS RESTARTS AGE
CoreDNS-7f6dd6865f-7qcjr 1/1 Running 0 100s
CoreDNS-7f6dd6865f-kxw2x 1/1 Running 0 100s
最後に、CoreDNSログをチェックして、アプリケーションがエラーなく実行されていることを確認します:
.:53
[INFO] plugin/reload: Running configuration SHA512 = 8a7d59126e7f114ab49c6d2613be93d8ef7d408af8ee61a710210843dc409f03133727e38f64469d9bb180f396c84ebf48a42bde3b3769730865ca9df5eb281c
CoreDNS-1.11.1
linux/amd64, go1.21.5, e9c721d80
.:53
[INFO] plugin/reload: Running configuration SHA512 = 8a7d59126e7f114ab49c6d2613be93d8ef7d408af8ee61a710210843dc409f03133727e38f64469d9bb180f396c84ebf48a42bde3b3769730865ca9df5eb281c
CoreDNS-1.11.1
linux/amd64, go1.21.5, e9c721d80
ログにはエラーがなく、CoreDNSがDNSリクエストを正しく処理していることを示しています。
次のステップ
CoreDNSポッドのスケジューリングの問題を解決し、アプリケーションが適切に実行されていることを確認しました。追加のDNS解決トラブルシューティングステップについては、次のラボに進みましょう。