O que são serviços de Kubernetes?
Um serviço de Kubernetes é uma abstração lógica para um grupo implantado de pods em um cluster (no qual todos executam a mesma função).
Como os pods são efêmeros, um serviço permite que um grupo de pods, que fornece funções específicas (serviços da Web, processamento de imagens etc.), receba um nome e um endereço IP exclusivo (clusterIP). Enquanto o serviço estiver executando esse endereço IP, ele não será alterado. Os serviços também definem políticas de acesso.

Estado do Kubernetes

Kubernetes pronto para uso
No Kubernetes, qual é a diferença entre um serviço e uma implantação?
No Kubernetes, uma implantação é um método de iniciar um pod com aplicativos em contêineres e garantir que o número necessário de réplicas esteja sempre em execução no cluster.
Por outro lado, um serviço é responsável por expor uma interface a esses pods, o que permite o acesso à rede de dentro do cluster ou entre processos externos e o serviço.
Quais são os componentes de um serviço de Kubernetes?
Os serviços de Kubernetes conectam um conjunto de pods a um nome de serviço e endereço IP abstraídos. Os serviços fornecem detecção e roteamento entre pods. Por exemplo, os serviços conectam o front-end de um aplicativo ao seu back-end, cada um deles em execução em implantações separadas em um cluster. Os serviços usam rótulos e seletores para combinar pods com outros aplicativos. Estes são os atributos principais de um serviço de Kubernetes:
- Um seletor de rótulos que localiza os pods
- O endereço IP do clusterIP e o número de porta atribuído
- Definições de porta
- Mapeamento opcional de portas de entrada para um targetPort
Os serviços podem ser definidos sem seletores de pods, por exemplo, para indicar um serviço para outro serviço em um namespace ou cluster diferente.
Quais são os tipos de serviços de Kubernetes?
- ClusterIP. Expõe um serviço que só pode ser acessado de dentro do cluster.
- NodePort. Expõe um serviço por meio de uma porta estática no IP de cada nó.
- LoadBalancer. Expõe o serviço por meio do balanceador de carga do provedor de nuvem.
- ExternalName. Mapeia um serviço para um campo externalName predefinido, ao retornar um valor para o registro CNAME.
O que é o serviço de Kubernetes ClusterIP?
ClusterIP é o tipo de serviço padrão usado para expor um serviço em um endereço IP interno ao cluster. O acesso só é permitido de dentro do cluster.
O que é um serviço de Kubernetes sem comando?
Os serviços que não precisam de balanceamento de carga e expõem apenas um único IP podem criar um serviço "sem comando" ao especificar "none" como clusterIP.
Os serviços sem comando podem ser definidos com seletores. Nesse caso, os registros de endpoint são criados na API, que modifica o DNS para retornar endereços que indicam pods que estão expondo o serviço. Serviços sem comando e sem seletores não criam registros de endpoint. O sistema DNS configura o registro CNAME ou um registro para endpoints com o mesmo nome do serviço.
O que é o serviço de Kubernetes NodePort?
NodePorts são portas abertas em cada nó do cluster. O Kubernetes roteará o tráfego que entra em um NodePort para o serviço, mesmo que o serviço não esteja em execução nesse nó. O NodePort serve como base para outros métodos de entrada de nível superior, como balanceadores de carga, e são úteis no desenvolvimento.
O que é o serviço de Kubernetes ExternalName?
O serviço ExternalName é semelhante a outros serviços de Kubernetes. No entanto, em vez de ser acessado por meio de um endereço do clusterIP, ele retorna um registro CNAME com um valor definido no parâmetro externalName: durante a criação do serviço.
O que é o serviço de Kubernetes LoadBalancer?
Para clusters em execução em provedores de nuvem pública, como a AWS ou o Azure, a criação de um serviço LoadBalancer de carga fornece o equivalente a um serviço clusterIP, estendendo-o para um balanceador de carga externo específico do provedor de nuvem. O Kubernetes automaticamente criará o balanceador de carga, fornecerá regras de firewall, se necessário, e preencherá o serviço com o endereço IP externo atribuído pelo provedor de nuvem.
Como funcionam os serviços de Kubernetes?
Os serviços simplesmente apontam para pods por meio do uso de rótulos. Como os serviços não são específicos ao nó, um serviço pode apontar para um pod a qualquer momento, independentemente de onde ele é executado no cluster. Ao expor um endereço IP de serviço, bem como um nome de serviço DNS, o aplicativo pode ser alcançado por qualquer dos métodos, desde que o serviço exista.
Como um serviço de Kubernetes é definido?
Os serviços são definidos em YAML, assim como todos os objetos do Kubernetes. Suponhamos que você tenha implantado pods que executam um serviço de back-end para processar dados provenientes de um front-end da Web. Para expor um serviço chamado "service-backend" na implantação "deployment-backend", você usará:
apiVersion: v1
kind: Service
metadata:
name: service-backend
spec:
ports:
- port: 4000
protocol: TCP
targetPort: 333
selector:
run: deployment-backend
type: ClusterIP
O serviço "service-backend" será criado, e qualquer pod no cluster poderá acessá-lo na porta 333 via http://service-backend:4000 ou no endereço IP do cluster usando a porta 4000.
Os serviços de Kubernetes também podem ser criados por meio do comando "kubectl expose", que não requer um arquivo YAML. O mesmo serviço pode ser criado por meio do comando:
kubectl expose deployment deployment-backend - - port=333- - target-port=4000 - - name=service-backend
Como um serviço de Kubernetes é acessado?
Existem duas maneiras de detectar um serviço de Kubernetes:
DNS (mais comum): o método DNS é o recomendado para detecção de serviços. Para usar esse método, primeiro é necessário instalar um servidor DNS no cluster. O servidor DNS monitora a API do Kubernetes e, quando um novo serviço é criado, seu nome fica disponível para facilitar a resolução dos aplicativos solicitantes.
Variável ENV: este método depende da adição de variáveis do ambiente pelo kubelet para cada serviço ativo de cada nó em que um pod está em execução.
Soluções e produtos relacionados
Laboratórios: Modernização de aplicativos
Migre os apps para a nuvem em semanas.
Tanzu Kubernetes for Operations
A base para uma infraestrutura de contêineres moderna e multi-cloud.
Tanzu Application Platform
Uma melhor experiência de desenvolvedor multi-cloud no Kubernetes.