São uma padrão de unidade de software.
Performam melhor que VMs, pois não precisam carregar um OS virtual e ainda conseguem compartilhar libs comuns entre si.
Docker é uma camada adicional de abstração para containers linux
(e agora Windows também)
Com mais de uma década de experiencia rodando aplicações de larga escala em containers, a Google fez o Kubernetes.
Conjunto de um ou mais containers que agem como unidade e são entregues juntos
Compartilham rede e podem compartilhar filesystem
metadata:
labels:
app: webapp
tier: frontend
release: stable
replicas: 2
template:
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp
image: webapp:latest
ports:
- containerPort: 8080
name: http
env:
- name: REDIS_HOST
value: 'redis-primary'
replicas: 2
template:
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp
image: webapp:latest
ports:
- containerPort: 8080
name: http
env:
- name: REDIS_HOST
value: 'redis-primary'
replicas: 2
template:
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp
image: webapp:latest
ports:
- containerPort: 8080
name: http
env:
- name: REDIS_HOST
value: 'redis-primary'
NodePort: Expõe o service em cada IP dos Nodes em uma porta estática
LoadBalancer: Expõe o service externamente usando o load balancer do provedor de cloud.
ExternalName: Mapeia o service para um dominio externo (ex: foo.bar.example.com), retornando um registro CNAME