Os serviços são a camada de abstração de tornar um aplicativo acessível como um serviço de rede no conjunto de pods. Oferece um único nome DNS e endereço IP pelo qual os pods podem ser acessados. É adicionado na frente de cada pod para fornecer um endereço IP estático. Este artigo descreve a necessidade de uma camada de serviço e os tipos de serviços em Kubernetes. Consulte este artigo do início a fim, se você é novo nesse conceito e não sabe como criar um serviço de Kubernetes.
O que são serviços de Kubernetes?
Um serviço em Kubernetes é uma abstração que define uma coleção de vagens lógicas em que um componente ou aplicativo ativo está alojado e contém uma política de acesso. Devido à natureza fugaz de vagens individuais, o Kubernetes apenas garante a disponibilidade das vagens e réplicas especificadas, não sua vivacidade. Isso sugere que outros pods que precisam interagir com este aplicativo ou componente não dependeram dos endereços IP de suas vagens subjacentes.
Um serviço também é atribuído com um endereço IP simulado (em Kubernetes, é, portanto, referido como um clusterip) e sobrevive até que seja expressamente morto. As consultas para o serviço são encaminhadas para as vagens apropriadas, tornando -o uma interface confiável para aplicação ou comunicação do módulo. Os pedidos de aplicações nativos de Kubernetes também podem ser feitos através de uma API no apiserver para Kubernetes, que constantemente expõe e mantém os pontos de extremidade do POD REAL.
Quando precisamos dos serviços Kubernetes?
Aqui estão as razões pelas quais precisamos de serviços Kubernetes:
Endereço IP estável
Tenha um endereço IP estático que permaneça, mesmo que a vagem morra. Na frente de cada pod, chamamos os serviços que fornecem acesso de endereço IP persistente e estável.
Balanceamento de carga
Quando você tem réplicas de pod. Por exemplo, você tem três réplicas de um aplicativo de microsserviço ou aplicativo MySQL. O serviço recebe cada solicitação, segmentando esse aplicativo, por exemplo, é MySQL e a encaminha para uma dessas partes.
Acoplamento solto
Os serviços são uma boa abstração para acoplamento ou comunicação solta nos componentes do cluster.
Dentro e fora do cluster
Os serviços fornecem comunicação dentro do cluster e fora do cluster, como solicitações de navegador ao cluster ou banco de dados.
Tipos de serviços em Kubernetes
Clusterip
O tipo de serviço mais comum ou padrão em Kubernetes. Sem conceder um acesso externo, ele constrói um serviço dentro do cluster Kubernetes que pode ser usado pelos outros aplicativos dentro do cluster.
NodEport
Este serviço abre uma porta específica em todos os nós implementados no cluster, e o tráfego recebido pela porta é encaminhado ao serviço. O serviço não pode ser acessado a partir do cluster externo IP.
Balanceador de carga
Ele gera o IPS público para ativar um acesso através da nuvem. Quando você usa o Google Kubernetes Engine (GKE), um balanceador de carga de rede é criado com um único endereço IP que pode ser acessado pelos usuários externos e direcionar o tráfego para o nó apropriado em seu cluster Kubernetes. O mesmo método que clusterip ou nodeport pode ser usado para acessá -lo.
ExternalName
Esta é uma maneira padrão de representar um armazenamento de dados externos, como um banco de dados, dentro do Kubernetes, criando um serviço. Quando as vagens de um espaço para nome precisam se comunicar com um serviço em um espaço para nome diferente, você pode usar esse serviço externo de nome (como um serviço local).
Pré -requisitos:
Aqui estão algumas coisas indispensáveis antes de seguir para a seção a seguir:
Como criar um serviço em Kubernetes
Aqui, vamos orientá -lo em um exemplo direto que mostra como criar um serviço no Kubernetes. Vamos começar!
Etapa 1: Inicie o cluster Minikube
Primeiro, inicie o cluster Minikube para que você possa usar os comandos Kubectl e executar seu aplicativo. O cluster Minikube permite implantar seus nós, pods e até agrupamentos no ambiente Kubernetes. Portanto, é essencial manter o minikube no modo ativo usando o comando subsequente:
> Minikube Start
Isso ativa o cluster Minikube e torna o ambiente Kubernetes pronto para usar.
Etapa 2: CFigure o manifesto da YAML para implantar para Nginx
O serviço direciona todos os pedidos recebidos para a implantação que estabelecemos usando o seguinte comando:
> Nano SamplEDlement.Yaml
A seguir, o arquivo de configuração completo:
Etapa 3: Crie um objeto de serviço no cluster
Para adicionar um objeto de serviço a um cluster, execute o seguinte comando:
> KUBECL APLICA -F SAMPLEDELAGEM.Yaml
Etapa 4: Crie três réplicas para Nginx
O comando a seguir implanta nginx com três cópias:
> Kubectl Obtenha implantação | Grep nginx
Etapa 5: Especifique as informações (pod, réplicas)
Os seguintes comandos mostram os detalhes da implantação, réplicas e pod:
> Kubectl Obtenha replicaSet | Grep nginx
Etapa 6: Detalhes do POD
Aqui, usamos o seguinte comando para ver as cópias exatas do Nginx:
> kubectl Obtenha pod | Grep nginx
Você pode ver que três cópias do Nginx são feitas na captura de tela anterior.
Etapa 7: CREATE Uma definição de serviço
Nesta etapa, criamos uma definição de serviço usando o seguinte comando listado:
> Nano SampleService.Yaml
Com a descrição do serviço acima mencionado, um serviço do tipo NodEport é construído usando o espaço para nome padrão, e os pedidos são encaminhados para as vagens com a etiqueta Nginx, como os pods que foram gerados durante o estágio anterior de criação de implantação.
Etapa 8: CREATE UM SERVIÇO
Para criar um serviço, use o seguinte comando:
> kubectl Aplicar -f SampleService.Yaml
Na saída, você pode ver que o serviço é criado com sucesso.
Etapa 9: Obtenha os detalhes do serviço
Nesta etapa, obtemos a especificação do serviço e procuramos o NodEport onde ele está acessível. O comando de fazer isso é o seguinte:
> Kubectl Get Service | Grep nginx
Etapa 10: descreva os detalhes do serviço
Nesta etapa, usamos o comando descrever para ver os detalhes do serviço. O comando descreve é dado o seguinte:
> Kubectl Descreva o serviço nginx
O serviço é acessível na porta 30747, como visto na captura de tela anterior. Você pode experimentar algo diferente porque a porta foi escolhida aleatoriamente do intervalo disponível. Agora, este serviço no Nodeip: NodEport permite o acesso ao aplicativo Nginx.
Conclusão
Aprendemos que o serviço é uma camada abstrata que é colocada na frente de pods para fornecer um endereço IP estável. Podemos acessar a Internet usando o tipo de serviço do loadbalancer. Depois disso, implementamos o exemplo simples de criar um serviço passo a passo em Kubernetes, permitindo um acesso ao aplicativo Nginx.