kubernetes Serviceリソース(二)
3314 ワード
三、サービス発見
Kubernetesは、環境変数とDNSの2つの検索サービスの主なモードをサポートします.
1、サービス発見の概要
1、サービス発見はサービスと応用の間の相互定位の過程である2、サービス発見メカニズムの実現、まず一つのネットワークの比較的安定したサービス登録センター(サービスバスとも呼ばれる)を配置し、サービス提供者は登録センターに自分の位置情報を登録し、そして変化した後に直ちに更新し、それに応じて、サービス消費者は、定期的に登録センターからサービスプロバイダの最新位置情報を取得し、アクセスするターゲットサービスリソース3、サービス発見の2種類を発見する.クライアント発見:クライアントからサービス登録センターへ依存するサービスに関する情報を発見し、特定のサービス発見プログラムとサービス発見ロジック を内蔵する必要がある.サービス側は、サービス消費者が中央ルータまたは負荷イコライザに要求を送信し、サービス登録センターに問い合わせてサービスプロバイダの位置情報を取得し、サービス消費者の要求をサービスプロバイダ に転送することを発見した.
2、環境変数
Podがノード上で実行されると、kubeletはアクティブなサービスごとに環境変数のセットを追加し、podリソースを作成すると、k 8 sはサービスリソースごとに一連の環境変数を生成し、同じ名前空間で作成されたpodオブジェクトは自動的にこれらの変数を持つ(Docker links互換変数をサポートする).redis-masterは、TCPポート6379を開示し、クラスタIPアドレス10.0.0.11を割り当てたサービスは、以下の環境変数を生成する.
3、ドメイン名の解析
クラスタをサポートするDNSサーバ(CoreDNSなど)は、Kubernetes API内の新しいサービスを監視し、サービスごとにDNSレコードのセットを作成します.クラスタ全体でDNSが有効になっている場合、すべてのPodはDNS名によってサービスを自動的に解析できるはずです.
たとえば、Kubernetesネーミングスペース「my-ns」に「my-service」というサービスがある場合、制御プレーンとDNSサービスは共に「my-service.my-ns」のDNSレコードを作成します.「my-ns」ネーミングスペースのPodは、my-serviceの名前を簡単に検索することで見つけることができるはずです(「my-service.my-ns」も動作します).他のネーミングスペースのPodはmy-serviceに限定する必要があります.my-ns . これらの名前は、サービスに割り当てられたクラスタIPとして解析されます.Kubernetes DNSサーバは、ExternalNameタイプのサービスにアクセスできる唯一の方法です.
四、Headless Services(ヘッドレスサービス)
1、負荷等化を必要としない場合や不要な場合、個別のService IPがある場合、Cluster IP(spec.clusterIP)の値を「None」と指定することでHeadless Service 2を作成することができ、このheadless ServiceにはCluster IPが割り当てられず、kube-proxyはそれらを処理することができず、プラットフォームもそれらの負荷等化やルーティングを行うことができない.DNSがどのように自動構成を実現するかは、サービスがselector 3を定義しているかどうか、セレクタ付き:selectorを定義したHeadlessサービスに対して、EndpointコントローラがAPIでEndpointsレコードを作成し、DNS構成を変更してAレコード(アドレス)を返し、このアドレスを介してサービスのバックエンドPod上4、セレクタなし:selectorが定義されていないHeadless Serviceの場合、EndpointコントローラはEndpointsレコードを作成しません.DNSシステムは次のいずれかを検索して構成します. CNAMEレコードExternalNameタイプのサービス Endpointsと他のすべてのタイプのサービス共有名のレコード 五、発表サービス(サービスタイプ) ClusterIP:クラスタの内部IP暴露サービスにより、この値を選択すると、サービスはクラスタ内でのみアクセス可能となり、これもデフォルトのServiceType である. NodePort:各ノード上のIPおよび静的ポート(NodePort)を介してサービスを暴露する.NodePortサービスはClusterIPサービスにルーティングされ、このClusterIPサービスは自動的に作成されます.リクエストにより、NodePortサービス にクラスタの外部からアクセスできます. LoadBalancer:クラウドプロバイダの負荷バランサを使用して、外部にサービスを暴露することができます.外部の負荷イコライザは、NodePortサービスおよびClusterIPサービス にルーティングすることができる. ExternalName:レコードを返すことによってサービスをexternalNameフィールドにマッピングするコンテンツ(foo.bar.example.comなど)
Kubernetesは、環境変数とDNSの2つの検索サービスの主なモードをサポートします.
1、サービス発見の概要
1、サービス発見はサービスと応用の間の相互定位の過程である2、サービス発見メカニズムの実現、まず一つのネットワークの比較的安定したサービス登録センター(サービスバスとも呼ばれる)を配置し、サービス提供者は登録センターに自分の位置情報を登録し、そして変化した後に直ちに更新し、それに応じて、サービス消費者は、定期的に登録センターからサービスプロバイダの最新位置情報を取得し、アクセスするターゲットサービスリソース3、サービス発見の2種類を発見する.
2、環境変数
Podがノード上で実行されると、kubeletはアクティブなサービスごとに環境変数のセットを追加し、podリソースを作成すると、k 8 sはサービスリソースごとに一連の環境変数を生成し、同じ名前空間で作成されたpodオブジェクトは自動的にこれらの変数を持つ(Docker links互換変数をサポートする).redis-masterは、TCPポート6379を開示し、クラスタIPアドレス10.0.0.11を割り当てたサービスは、以下の環境変数を生成する.
REDIS_MASTER_SERVICE_HOST=10.0.0.11
REDIS_MASTER_SERVICE_PORT=6379
REDIS_MASTER_PORT=tcp://10.0.0.11:6379
REDIS_MASTER_PORT_6379_TCP=tcp://10.0.0.11:6379
REDIS_MASTER_PORT_6379_TCP_PROTO=tcp
REDIS_MASTER_PORT_6379_TCP_PORT=6379
REDIS_MASTER_PORT_6379_TCP_ADDR=10.0.0.11
:
Pod , IP Pod , Pod 。 , Pod 。
DNS IP,
3、ドメイン名の解析
クラスタをサポートするDNSサーバ(CoreDNSなど)は、Kubernetes API内の新しいサービスを監視し、サービスごとにDNSレコードのセットを作成します.クラスタ全体でDNSが有効になっている場合、すべてのPodはDNS名によってサービスを自動的に解析できるはずです.
たとえば、Kubernetesネーミングスペース「my-ns」に「my-service」というサービスがある場合、制御プレーンとDNSサービスは共に「my-service.my-ns」のDNSレコードを作成します.「my-ns」ネーミングスペースのPodは、my-serviceの名前を簡単に検索することで見つけることができるはずです(「my-service.my-ns」も動作します).他のネーミングスペースのPodはmy-serviceに限定する必要があります.my-ns . これらの名前は、サービスに割り当てられたクラスタIPとして解析されます.Kubernetes DNSサーバは、ExternalNameタイプのサービスにアクセスできる唯一の方法です.
https://kubernetes.io/zh/docs/concepts/services-networking/service/
四、Headless Services(ヘッドレスサービス)
1、負荷等化を必要としない場合や不要な場合、個別のService IPがある場合、Cluster IP(spec.clusterIP)の値を「None」と指定することでHeadless Service 2を作成することができ、このheadless ServiceにはCluster IPが割り当てられず、kube-proxyはそれらを処理することができず、プラットフォームもそれらの負荷等化やルーティングを行うことができない.DNSがどのように自動構成を実現するかは、サービスがselector 3を定義しているかどうか、セレクタ付き:selectorを定義したHeadlessサービスに対して、EndpointコントローラがAPIでEndpointsレコードを作成し、DNS構成を変更してAレコード(アドレス)を返し、このアドレスを介してサービスのバックエンドPod上4、セレクタなし:selectorが定義されていないHeadless Serviceの場合、EndpointコントローラはEndpointsレコードを作成しません.DNSシステムは次のいずれかを検索して構成します.
Kubernetes ServiceTypes 。 ClusterIP
( ): , svc , pod
( ):pod , , IP, IP pod , ExternalName , , pod , IP( host )
:
https://kubernetes.io/docs/concepts/services-networking/service/