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を割り当てたサービスは、以下の環境変数を生成する.
    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システムは次のいずれかを検索して構成します.
  • CNAMEレコードExternalNameタイプのサービス
  • Endpointsと他のすべてのタイプのサービス共有名のレコード
  • 五、発表サービス(サービスタイプ)
    Kubernetes ServiceTypes            。    ClusterIP
    
  • ClusterIP:クラスタの内部IP暴露サービスにより、この値を選択すると、サービスはクラスタ内でのみアクセス可能となり、これもデフォルトのServiceType
  • である.
  • NodePort:各ノード上のIPおよび静的ポート(NodePort)を介してサービスを暴露する.NodePortサービスはClusterIPサービスにルーティングされ、このClusterIPサービスは自動的に作成されます.リクエストにより、NodePortサービス
  • にクラスタの外部からアクセスできます.
  • LoadBalancer:クラウドプロバイダの負荷バランサを使用して、外部にサービスを暴露することができます.外部の負荷イコライザは、NodePortサービスおよびClusterIPサービス
  • にルーティングすることができる.
        (   ):               ,         svc  ,        pod 
    
  • ExternalName:レコードを返すことによってサービスをexternalNameフィールドにマッピングするコンテンツ(foo.bar.example.comなど)
  •     (   ):pod         ,    ,        IP,    IP           pod         ,      ExternalName ,             ,     pod       ,             IP(   host  )
    
                :
    https://kubernetes.io/docs/concepts/services-networking/service/