kubernetsサービスのネーミングスペース間アクセス

8294 ワード

kubernetesサービスのネーミングスペース間アクセス
namespaceはリソースとして隔離され、グループ化に使用され、私の異なるコンポーネント、異なるサービスを異なるnamespaceの下に置くことができ、管理しやすいことはよく知られています.では、私は今需要があります.サービス間で相互にアクセスできることを望んでいます.つまり、namespaceにまたがるサービスアクセスは、どのように処理すればいいのでしょうか.
svcの4種類のClusterIPはデフォルトで、1つのVIPを割り当てて、内部アクセスNodePort ClusterIPの基礎の上で、各ノードが1つの対外アクセスポートLoadBalancerを縛ってNodePortの基礎の上で、外部負荷イコライザはNodePort ExternalNameクラスタの外部のサービスに転送してクラスタの内部に引き込んで、クラスタの内部は使用します
上記の機能を実現するには、大きなs vcのExternalNameというタイプを使用する必要があります.
具体的な操作方法は以下の通りです.
  • defaultの下でサービスを作成し、echoserviceを例に
  • $ kubectl apply -f https://bit.ly/echo-service
    service/echo created
    deployment.apps/echo created
    

    kubectlでサービスを表示できます
    $ kubectl get svc echo
    NAME   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)           AGE
    echo   ClusterIP   10.102.214.18   <none>        8080/TCP,80/TCP   69m
    
  • namespace test
  • を新規作成
    $ kubectl create namespace test
    
  • testでsvcを作成し、defaultでsvc
  • に関連付けます.
    apiVersion: v1
    kind: Service
    metadata:
      name: echo-default
      namespace: test
    spec:
      type: ExternalName
      externalName: echo.default.svc.cluster.local
    
    $ kubectl get svc -n test
    NAME           TYPE           CLUSTER-IP   EXTERNAL-IP                      PORT(S)   AGE
    echo-default   ExternalName   <none>       echo.default.svc.cluster.local   <none>    29m
    
  • testの下でingresを作成し、testの下のsvcを指します.これによりdefaultの下のechoサービスにアクセスできます.
  • apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: demo
      namespace: test
    spec:
      rules:
      - http:
          paths:
          - path: /bar
            backend:
              serviceName: echo-default
              servicePort: 80
    
    $ kubectl get ingress -n test
    NAME   HOSTS   ADDRESS           PORTS   AGE
    demo   *       192.168.159.129   80      31m
    
    $   curl -i 192.168.159.129:32359/bar
    HTTP/1.1 200 OK
    Content-Type: text/plain; charset=UTF-8
    Transfer-Encoding: chunked
    Connection: keep-alive
    Date: Sat, 09 May 2020 09:08:48 GMT
    Server: echoserver
    X-Kong-Upstream-Latency: 1
    X-Kong-Proxy-Latency: 1
    Via: kong/2.0.3
    
    
    
    Hostname: echo-c4cb89895-pnf85
    
    Pod Information:
            node name:      192.168.159.129
            pod name:       echo-c4cb89895-pnf85
            pod namespace:  default
            pod IP: 10.32.0.7
    
    Server values:
            server_version=nginx: 1.13.3 - lua: 10008
    
    Request Information:
            client_address=::ffff:10.32.0.6
            method=GET
            real path=/
            query=
            request_version=1.1
            request_scheme=http
    

    これによりsvcのExternalNameでnamespaceにまたがるアクセスが可能になります