私はKubernetesを学んでいますが、現在は高可用性に没頭しています。高可用性のコントロールプレーン(APIサーバ、コントローラ、スケジューラ)をローカル(またはリモート)etcdsと高可用性(Kubernetes自体を通して)ミニオンのセット、私はまだこのコンセプトサービスがどこに位置しているか分からない。サービスはKubernetesにどこに住んでいますか?
コントロールプレーンに居住している場合:いいえ、私はそれらを高可用性に設定できます。
特定のノードに住んでいる場合は次のようになります。ただし、ノードが停止したり他の方法で使用できなくなった場合はどうなりますか?
私が理解しているように、ロードバランスだけでなく、インターネットにポッドを公開するサービスが必要です。 HAサービスがないので、私は自分のアプリケーションに到達することができない危険性があります(システムの他の面でも非常に高い可用性があります)。
Okですが、kubernetes.io/docs/concepts/services-networking/service/...に従って私のサービスのために単一のIPアドレスを要求することができます。これは私の理解では、特定のノード上のkube-proxyが1つだけになります。あるいは、これはサービスのラベルセレクタと一致するノード上で実行されているすべてのkube-proxyにapi-serverで実際にマップされますか? –
Kube-proxyとKubeletは、現在の状態をすべてEtcdに保存しているKube-api Serverと通信します。一例をあげて理解しましょう.3つのノードにkubeletの助けを借りて3つのポッドが稼働しています。これらのすべてにエンドポイントがあります。ここでサービスマニフェストを展開する場合、kube-proxyはServiceエンドポイントがIPTABLESマジックのPodエンドポイントと揃っていることを確認します。 Kube-proxyはapi-serverと通信し、etcdを更新します。 –
Kube-proxyは、名前の代わりにラベルを使用してポッドを検索します。したがってセレクタとラベルはk8の強力なものです。さらに、Kube-proxyはKube-apiサーバーと通信して、ポッドの状態やサービスの変更をチェックします。 –