Introdução ao serviço de aplicativo de liberação do k8s (5)

Target

  • Compreender o serviço Kubernetes
  • Compreender o relacionamento entre Labels e LabelSelector e Service
  • No cluster kubernetes, publique aplicativos através do Service

Visão geral do serviço Kubernetes

De fato, o Pod (Container Group) tem seu próprio  ciclo de vida . Quando o nó do trabalhador (nó) falha, o Pod (grupo de contêineres) em execução no nó também desaparece. Em seguida, a Implantação  pode ajustar dinamicamente o cluster de volta ao seu estado original, criando um novo Pod (grupo de contêineres) para manter o aplicativo em execução.

Por exemplo, suponha que exista um programa de back-end de processamento de imagem com 3 cópias de tempo de execução. Essas 3 cópias são substituíveis (aplicativos sem estado). Mesmo que o Pod (grupo de contêineres) desapareça e seja recriado, ou o número de cópias seja aumentado de 3 para 5, o sistema front-end não precisa prestar atenção às alterações das cópias de back-end. Como cada Pod (grupo de contêineres) no cluster Kubernetes possui um endereço IP exclusivo (mesmo que seja um Pod diferente no mesmo Nó), precisamos de um mecanismo para proteger o Pod (grupo de contêineres) do sistema back-end de Alterações no endereço IP durante o processo de destruição e criação.

O serviço no Kubernetes fornece uma camada de abstração que seleciona Pods (grupos de contêineres) com certas características e define um método de acesso para eles. O serviço desacopla a interdependência entre os Pods (grupos de contêineres) (acessar originalmente outro Pod a partir de um Pod requer conhecer o endereço IP da outra parte) . O Pod (grupo de contêineres) selecionado por um Serviço geralmente é determinado pelo LabelSelector.

Ao criar um serviço, definindo o valor do campo spec.type no arquivo de configuração, o aplicativo pode ser exposto ao exterior de diferentes maneiras:

  • ClusterIP (padrão)

    Anuncie serviços em IPs internos no cluster, desta forma, o Serviço só pode ser acessado dentro do cluster

  • NodePort

    Use o NAT para anunciar serviços na mesma porta de cada cluster. Dessa maneira, você pode acessar o serviço acessando qualquer nó + número da porta no cluster  <NodeIP>:<NodePort>. No momento, o método de acesso do ClusterIP ainda está disponível.

  • Balanceador de carga

    Em um ambiente de nuvem (requer suporte do provedor de nuvem), crie um balanceador de carga fora do cluster e use o endereço IP do balanceador de carga como o endereço de acesso ao serviço. No momento, os métodos de acesso do ClusterIP e do NodePort ainda estão disponíveis.

Resumo:

O serviço é uma camada de abstração, que seleciona um grupo de pods (grupos de contêineres) por meio do LabelSelector, publica as portas designadas desses pods para fora do cluster e oferece suporte ao balanceamento de carga e à descoberta de serviços.

  • Anuncie a porta do Pod para torná-lo acessível
  • Balanceamento de carga entre vários pods
  • Use Label e LabelSelector

Serviços e etiquetas

Na figura abaixo, existem dois serviços, o Serviço A (linha amarela tracejada) e o Serviço B. (linha azul tracejada) O Serviço A encaminha a solicitação ao Pod com um IP 10.10.10.1 e o Serviço B encaminha a solicitação ao IP com 10.10.10.2, 10.10. 10.3, 10.10.10.4 Pod.

Tutorial do Kubernetes: serviços e tags

O serviço roteia solicitações externas para um conjunto de Pods, que fornece uma camada de abstração que permite ao Kubernetes agendar dinamicamente grupos de contêineres sem afetar o chamador de serviço (recrie o grupo de contêineres após a falha do grupo de contêineres e aumente ou diminua o mesmo Uma implantação corresponde ao número de grupos de contêineres etc.) .

O serviço usa  etiquetas, LabelSelector (etiquetas e seletores) para  corresponder a um grupo de pods . Os rótulos (rótulos) são pares de chave / valor anexados aos objetos Kubernetes e têm vários usos:

  • Atribua objetos Kubernetes (Nó, Implantação, Pod, Serviço, etc.) para ambiente de desenvolvimento, ambiente de teste ou ambiente de produção
  • Tags de versão incorporadas, use tags para distinguir diferentes versões de software de aplicativo
  • Use tags para classificar objetos Kubernetes

A figura a seguir mostra a associação entre Labels e LabelSelector

  • A implantação B contém LabelSelector para app = B.  Dessa forma, declare o Pod com o rótulo app = B associado a ele
  • O Pod criado pelo Deployment B contém a tag app = B
  • O serviço B seleciona os pods que podem ser roteados pelo aplicativo seletor de tags = B

Tutorial do Kubernetes: serviços e tags

Os rótulos podem ser anexados ao criar objetos Kubernetes ou podem ser anexados após a criação. Você pode modificar os rótulos de um objeto Kubernetes a qualquer momento

Combate real: crie um serviço para implantação do nginx

Os rótulos são definidos na Implantação que criou o nginx, da seguinte maneira:

metadados: #Translated name são metadados, ou seja, alguns atributos e informações básicos de 
  Nome da implantação : nginx-deployment # 
  Etiquetas de nome da implantação : #labels , é possível localizar de forma flexível um ou mais recursos, onde chave e valor podem ser personalizados Vários grupos de 
    aplicativos: nginx # Defina a chave para a implantação no aplicativo e o valor nas tags nginx

Criar arquivo nginx-service.yaml

  •    vi nginx-service.yaml

O conteúdo é o seguinte

apiVersion: v1 
tipo: 
metadados do serviço : 
  nome: nginx-service # nome do serviço 
  rótulos: # serviço próprio rótulo 
    app: nginx # defina a chave do serviço como o aplicativo e o valor como o rótulo nginx 
spec: #Este é o serviço Definição, descreve como o Serviço seleciona o Pod e como acessar o 
  seletor: #tag selector 
    app: nginx #select 
  Portas de pod com tag app: nginx 
  : -name: nginx-port #port name 
    protocolo: TCP #protocol type TCP / 
    Porta UDP : 80 # Outros grupos de contêineres no cluster podem ser acessados ​​pela porta 80 Service 
    nodePort: 32600 # Acesso pela porta de qualquer nó 
    32600 Service targetPort: 80 # Encaminhe a solicitação para a porta 80 que corresponda ao 
  tipo de Pod : NodePort #Serive type, ClusterIP / NodePort / LoaderBalancer
 

Executar comando

[root @ guanbin-k8s-master k8s] # kubectl aplica -f 
serviço nginx-service.yaml / serviço nginx criado

Verifique o resultado da execução

Você pode visualizar o serviço chamado nginx-service.

[root @ guanbin-k8s-master k8s] # kubectl get service -o wide 
NOME TIPO CLUSTER-IP PORTAS EXTERNAS DE IP IP SELETOR 
DE IDADE kubernetes ClusterIP 10.96.0.1 <nenhum> 443 / TCP 2d23h <nenhum> 
kubernetes-bootcamp NodePort 10.96.52.43 <nenhum> 8080: 31393 / TCP Execução em 2d = serviço de 
nginx do kubernetes-bootcamp NodePort 10.96.10.148 <nenhum> 80: 32600 / TCP 70s app = nginx

Acesso ao serviço

ondulação <任意节点的 IP>:32600

[root @ guanbin-k8s-master k8s] # curl guanbin-k8s-master: 32600 
<! DOCTYPE html> 
<html> 
<head> 
<title> Bem-vindo ao nginx! </title> 
<style> 
    body { 
        width: 35em; 
        margem: 0 automático; 
        família de fontes: Tahoma, Verdana, Arial, sem serifa; 
    } 
</style> 
</head> 
<body> 
<h1> Bem-vindo ao nginx! </h1> 
<p> Se você vir esta página, o servidor web nginx será instalado e 
funcionando com êxito . É necessária mais configuração. </p> 

<p> Para obter documentação e suporte on-line, consulte 
<a href="http://nginx.org/"> nginx.org </a>. <br/>
<a href="http://nginx.com/"> nginx.com </a>. </p>

<p> <em> Obrigado por usar o nginx. </em> </p> 
</body> 
</html>

 Ou visite a página

 

 

 

 

 

 
 

 

 

 

 

Acho que você gosta

Origin www.cnblogs.com/guanbin-529/p/12748919.html
Recomendado
Clasificación