これは、calico を使用した Kubespray のデプロイです。プロキシがあるという事実を除いて、すべてのデフォルトはそのまま残されています。Kubespray は問題なく最後まで実行されました。
Kubernetes サービスへのアクセスが失敗し始め、調査の結果、 corednsサービスへのホストへのルートがありませんでした。IPによるK8Sサービスへのアクセスは機能しました。他のすべては正しいように見えるので、機能するクラスターが残りますが、DNS はありません。
以下に背景情報をいくつか示します。
# nslookup kubernetes.default
Server: 169.254.25.10
Address: 169.254.25.10:53
** server can't find kubernetes.default: NXDOMAIN
*** Can't find kubernetes.default: No answer
CoreDNS ポッドの 1 つの IP を明示的に定義する際の出力:
# nslookup kubernetes.default 10.233.0.3
;; connection timed out; no servers could be reached
Kubernetes API への telnet が機能することに注意してください。
# telnet 10.233.0.1 443
Connected to 10.233.0.1
kube -proxy ログ: 10.233.0.3 は、coredn のサービス IP です。最後の行は INFO ですが、気になるようです。
$ kubectl logs kube-proxy-45v8n -nkube-system
I1114 14:19:29.657685 1 node.go:135] Successfully retrieved node IP: X.59.172.20
I1114 14:19:29.657769 1 server_others.go:176] Using ipvs Proxier.
I1114 14:19:29.664959 1 server.go:529] Version: v1.16.0
I1114 14:19:29.665427 1 conntrack.go:52] Setting nf_conntrack_max to 262144
I1114 14:19:29.669508 1 config.go:313] Starting service config controller
I1114 14:19:29.669566 1 shared_informer.go:197] Waiting for caches to sync for service config
I1114 14:19:29.669602 1 config.go:131] Starting endpoints config controller
I1114 14:19:29.669612 1 shared_informer.go:197] Waiting for caches to sync for endpoints config
I1114 14:19:29.769705 1 shared_informer.go:204] Caches are synced for service config
I1114 14:19:29.769756 1 shared_informer.go:204] Caches are synced for endpoints config
I1114 14:21:29.666256 1 graceful_termination.go:93] lw: remote out of the list: 10.233.0.3:53/TCP/10.233.124.23:53
I1114 14:21:29.666380 1 graceful_termination.go:93] lw: remote out of the list: 10.233.0.3:53/TCP/10.233.122.11:53
すべてのポッドはクラッシュ/再起動などなしに実行されており、それ以外の場合はサービスが正しく動作します。
IPVS は正しいようです。CoreDNS サービスはそこで定義されています。
# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.233.0.1:443 rr
-> x.59.172.19:6443 Masq 1 0 0
-> x.59.172.20:6443 Masq 1 1 0
TCP 10.233.0.3:53 rr
-> 10.233.122.12:53 Masq 1 0 0
-> 10.233.124.24:53 Masq 1 0 0
TCP 10.233.0.3:9153 rr
-> 10.233.122.12:9153 Masq 1 0 0
-> 10.233.124.24:9153 Masq 1 0 0
TCP 10.233.51.168:3306 rr
-> x.59.172.23:6446 Masq 1 0 0
TCP 10.233.53.155:44134 rr
-> 10.233.89.20:44134 Masq 1 0 0
UDP 10.233.0.3:53 rr
-> 10.233.122.12:53 Masq 1 0 314
-> 10.233.124.24:53 Masq 1 0 312
ホスト ルーティングも正しいようです。
# ip r
default via x.59.172.17 dev ens3 proto dhcp src x.59.172.22 metric 100
10.233.87.0/24 via x.59.172.21 dev tunl0 proto bird onlink
blackhole 10.233.89.0/24 proto bird
10.233.89.20 dev calib88cf6925c2 scope link
10.233.89.21 dev califdffa38ed52 scope link
10.233.122.0/24 via x.59.172.19 dev tunl0 proto bird onlink
10.233.124.0/24 via x.59.172.20 dev tunl0 proto bird onlink
x.59.172.16/28 dev ens3 proto kernel scope link src x.59.172.22
x.59.172.17 dev ens3 proto dhcp scope link src x.59.172.22 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
この同じクラスターを、ipvs の代わりに iptables を使用して、flannel と calico を使用して別の環境に再デプロイしました。一時的にデプロイした後、docker http プロキシも無効にしました。どちらも違いはありません。
また: kube_service_addresses: 10.233.0.0/18 kube_pods_subnet: 10.233.64.0/18 (これらは重複しません)
この問題をデバッグするための次のステップは何ですか?