- provides a scope for names
- cannot be nested inside one another
- each k8s resource can only be in one namespace
- divide resources between multiple users
- labels used to distinguish resources within the same namespace
Ambientes coorporativos possuem algumas necessidades específicas para suas aplicações:
-
Rollouts e rollbacks automatizados
-
Orquestração de containers (as coisas são executadas onde devem ser executadas)
-
Orquestração de Armazenamento (Espaço deve ser disponibilizado de acordo com a necessidade das aplicações)
-
Service discovery e load balancing
-
Self-healing (Resolução de falhas de maneira automatizada)
-
Alta disponilidade
-
Escalabilidade
-
Batch Execution
É uma plataforma para gerenciamento de workloads e serviços que utilizam containers. Ele é portável, extensível e open-source.
Ele consegue fazer tudo isso por que ele fornece um framework distribuído que serve pra executar sistemas distribuídos(os famosos microservices), então ele é um lego gigante que permite que você possa plugar soluções, desplugar, criar as suas próprias et cetera.
Ele provisiona os blocos pra que soluções sejam criadas de forma flexível para o usuário.
O Kubernetes é uma solução on-premisses(local) mas também está na public cloud.
- AKS → Azure Kubernetes Solution
- EKS → AWS Kubernetes Solution
- GKE → Google Kubernetes Solution
Quando você implementa o Kubernetes, você recebe um cluster, um cluster é composto por worker machines, chamadas de nodes, que executam aplicações em contianers.
Nodes são as máquinas que recebem os microserviços/containers, esses serviços são comportados por um Pod.
- kubelet → Fazem com que os containers realmente sejam executados dentro de um pod
- kube-proxy → Provisiona a rede nos nodes
- container runtime → Software responsável pela execução de containers(e.g Docker)
Dentro do painel de controle estão as ferramentas de gerenciamento do cluster.
- API Server → É a interface do control plane com o mundo externo.
- Scheduler(kube-scheduler) → Seleciona Pods para executarem em Nodes
- Controller Manager(kube-controller-manager) → Observa o estado dos serviços do cluster e tenta fazer com que tudo aconteça conforme o esperado.
- etcd → É a persistência do Kubernetes, o banco de dados que armazena as informações do Cluster.
- Cloud Controller Manager → É onde as Clouds Públicas se conectam com o Cluster.
É a coisa mais importante do Control Plane. O server API do Kubernetes expõe uma API HTTP, permitindo a manipulação e queries em Objetos no Kubernetes. Também permite o acesso a API utilizando REST.
Esses são apenas os conceitos que eu achei relevante entender e que me ajudaram a ter uma ideia do que é o Kubernetes e o que ele faz de uma forma muita abstrata mas que é um ponto de partida para aqueles que nunca tiveram contato com esse tipo de tecnologia.
Fico aberto a sugestões e/ou correções no texto ou informações.
Boa jornada nos estudos.
! Under construction 💅🏿
Auth Modules -> usado para inserção de certificações de clients Tipos de Clients
- Users -> client certificates
- Services -> tokens
If not authenticated -> rejected with HTTP status code 401
/etc/kubernetes/manifests/kube-apiserver.yaml -> current setting
Authorization mode implements policies.
Authentication in Kubernetes means to deliver the right certificates to access the Kubernetes Cluster.