Kubernetes: Serviços e Pods
Não deixe de ler o artigo Kubernetes: Resumo dos Principais Conceitos
Recapitulando:
- Pods: o menor e mais simples objeto do Kubernetes. É a unidade de deployment no Kubernetes, que representa uma única instância do aplicativo.
- Um Pod é uma coleção lógica de um ou mais contêineres, que:
- São schedulados no mesmo host
- Compartilham o mesmo network namespace
- Monte o mesmo storage externo (volumes).
- Services: é uma abstração que define um conjunto lógico de Pods e uma política para acesso a eles, algumas vezes chamamos de micro-serviços.
Exemplo
Imagine que você tenha um aplicação composta de um frontend (python) e um backend (um banco de dados).
No Kubernetes não podemos acessar diretamente esses Pods, pois os mesmos podem ser criados/destruídos a qualquer momento para atender a demanda. Além disso essa aplicação pode estar distribuída em 1 ou mais Pods. Através do K8s atribuímos Labels para esses pods da seguinte forma app:frontend e app:backend.
Ao invés de acessarmos diretamente esses Pods, vamos criar uma camada denominada Serviços, onde atribuímos que nomeamos como frontend-svc e backend-svc.
Exemplo de Serviço
Neste trecho de declaração vemos como definir um serviço:
kind: Service apiVersion: v1 metadata: name: frontend-svc spec: selector: app: frontend ports: - protocol: TCP port: 80 targetPort: 5000
Na declaração desse serviços indicamos através do chave selector, assim vamos selecionar todos os Pods que tem o label app definido como frontend.
O endereço IP definido para este serviço é também conhecido com ClusterIP.