Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-11-28 GMT+08:00

Serviços headless

Os tipos de Serviços anteriores permitem acesso de pod interno e externo, mas não os seguintes cenários:

  • Acessar todos os pods ao mesmo tempo
  • Pods em um Serviço acessar uns aos outros

É aqui que o Serviço headless entra em serviço. Um Serviço headless não cria um endereço IP de cluster, e os registros DNS de todos os pods são retornados durante a consulta. Desta forma, os endereços IP de todos os pods podem ser consultados. StatefulSets usam serviços sem cabeça para dar suporte ao acesso mútuo entre os pods.

apiVersion: v1
kind: Service       # Object type (Service)
metadata:
  name: nginx-headless
  labels:
    app: nginx
spec:
  ports:
    - name: nginx      #     - name: nginx     # Name of the port for communication between pods
      port: 80        # Port number for communication between pods
  selector:
    app: nginx        # Select the pod whose label is app:nginx.
  clusterIP: None     # Set this parameter to None, indicating that a headless Service is to be created.

Execute o seguinte comando para criar um Serviço headless:

# kubectl create -f headless.yaml 
service/nginx-headless created

Depois que o Serviço for criado, você poderá consultar o Serviço.

# kubectl get svc
NAME             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
nginx-headless   ClusterIP   None         <none>        80/TCP    5s

Crie um pod para consultar o DNS. Você pode visualizar os registros de todos os pods. Desta forma, todos os pods podem ser acessados.

$ kubectl run -i --tty --image tutum/dnsutils dnsutils --restart=Never --rm /bin/sh
If you do not see a command prompt, try pressing Enter.
/ # nslookup nginx-0.nginx
Server:         10.247.3.10
Address:        10.247.3.10#53
Name:   nginx-0.nginx.default.svc.cluster.local
Address: 172.16.0.31

/ # nslookup nginx-1.nginx
Server:         10.247.3.10
Address:        10.247.3.10#53
Name:   nginx-1.nginx.default.svc.cluster.local
Address: 172.16.0.18

/ # nslookup nginx-2.nginx
Server:         10.247.3.10
Address:        10.247.3.10#53
Name:   nginx-2.nginx.default.svc.cluster.local
Address: 172.16.0.19