だから、Kubernetes on CoreOS Manual Installation Guideを使ってkubernetsクラスタを稼働させています。kubernetesサービスのIPに到達できません
$ kubectl get no
NAME STATUS AGE
coreos-master-1 Ready,SchedulingDisabled 1h
coreos-worker-1 Ready 54m
$ kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health": "true"}
etcd-2 Healthy {"health": "true"}
etcd-1 Healthy {"health": "true"}
$ kubectl get pods --all-namespaces -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
default curl-2421989462-h0dr7 1/1 Running 1 53m 10.2.26.4 coreos-worker-1
kube-system busybox 1/1 Running 0 55m 10.2.26.3 coreos-worker-1
kube-system kube-apiserver-coreos-master-1 1/1 Running 0 1h 192.168.0.200 coreos-master-1
kube-system kube-controller-manager-coreos-master-1 1/1 Running 0 1h 192.168.0.200 coreos-master-1
kube-system kube-proxy-coreos-master-1 1/1 Running 0 1h 192.168.0.200 coreos-master-1
kube-system kube-proxy-coreos-worker-1 1/1 Running 0 58m 192.168.0.204 coreos-worker-1
kube-system kube-scheduler-coreos-master-1 1/1 Running 0 1h 192.168.0.200 coreos-master-1
$ kubectl get svc --all-namespaces
NAMESPACE NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes 10.3.0.1 <none> 443/TCP 1h
ガイドと同じように、私はセットアップサービスネットワーク10.3.0.0/16
とポッドネットワーク10.2.0.0/16
てきました。ビジーボックスやカールコンテナがIPを取得すると、Podネットワークはうまくいくように見えます。しかし、サービスネットワークには問題があります。もともと私はkube-dns
を配備するときにこれに遭遇しました。サービスIP 10.3.0.1
に到達できませんでした。そのため、kube-dnsはすべてのコンテナを開始できず、DNSは最終的には機能しませんでした。
[ [email protected]:/ ]$ curl https://10.3.0.1
curl: (7) Failed to connect to 10.3.0.1 port 443: No route to host
[ [email protected]:/ ]$ ip route
default via 10.2.26.1 dev eth0
10.2.0.0/16 via 10.2.26.1 dev eth0
10.2.26.0/24 dev eth0 src 10.2.26.4
コンテナ内の唯一のデフォルトルートがあることをOKらしい:カールポッド内から
は、私は、問題を再現することができます。私が理解しているように、(デフォルトルートへの)リクエストはワーカーノード上のkube-proxy
によって傍受され、IPがiptables経由でマスター公開IPに変換されるマスターノードのプロキシに転送されます。
ありブリッジ/ netfilterののsysctlの設定と共通の問題のようですが、それは私のセットアップで罰金だ:
[email protected] ~ $ sysctl net.bridge.bridge-nf-call-iptables
net.bridge.bridge-nf-call-iptables = 1
私は理解が不足しているとして、私は、トラブルシューティングするために本当の苦労を抱えていますサービスIPがどのように使用されているか、トラフィックフローの観点からサービスネットワークがどのように動作するのか、そしてこれを最適にデバッグする方法について説明します。
だから私は持っている質問をhere're:サービスネットワーク(この場合は10.3.0.1)の第一IPが使用され
- 何?
- トラフィックフローの説明は正しいですか?そうでない場合、コンテナがサービスIPに到達するためにはどのようなステップが必要ですか?
- トラフィックフローの各ステップをデバッグする最適な方法は何ですか。 (私は何がログから間違っているのか分からない)
ありがとう!
この説明をお寄せいただきありがとうございます。問題のデバッグと解決に役立ちました。前述したように、ログには特別なことは何も表示されませんでした(基本的に、追加されたiptablesルールが報告されています)。だから、DNATが動作していて応答が到着していれば、iptabels -j LOGステートメントでチェックしたので、私はローカルのforwading-to-conatinerの問題を締結しました。ノードルーティングテーブルを見ると、 'docker0'は' cni0'と同じサブネットを持っていました。ガイドで確認すると、私は 'docker_opts_cni.env'の部分を見逃しました。修正後、 'docker0'は別のサブネットを持っていて、すべてがうまくいっています。ありがとう! – grasbueschel
それをデバッグしてうまくいった!私の答えは理解するのが少し難しいです。私はそれを私の電話で作った。ごめんなさい :) –