Tópicos Avançados e Arquitetura do Kubernetes
Explique o conceito de um Operator do Kubernetes e dê um exemplo de quando usá-lo.
Resposta:
Um Operator do Kubernetes é um método de empacotar, implantar e gerenciar uma aplicação nativa do Kubernetes. Ele estende a API do Kubernetes para criar, configurar e gerenciar instâncias de aplicações complexas. Você usaria um Operator para aplicações stateful como bancos de dados (por exemplo, Cassandra, MySQL) para automatizar tarefas como backups, atualizações e escalonamento.
Descreva o propósito de uma Custom Resource Definition (CRD) no Kubernetes.
Resposta:
Uma Custom Resource Definition (CRD) permite que você defina seus próprios recursos customizados no Kubernetes, estendendo a API do Kubernetes. Isso permite que você armazene e recupere dados estruturados que o Kubernetes pode gerenciar. CRDs são fundamentais para a construção de Operators e para a definição de objetos específicos de aplicações.
Como o Kubernetes API Server lida com autenticação e autorização para requisições?
Resposta:
O API Server lida com a autenticação através de vários métodos como certificados de cliente, tokens bearer ou tokens de service account. Após a autenticação, a autorização é realizada usando módulos como RBAC (Role-Based Access Control), Node authorization ou ABAC (Attribute-Based Access Control). RBAC é o mais comum, definindo roles com permissões e vinculando-as a usuários ou service accounts.
Qual a diferença entre um DaemonSet e um Deployment no Kubernetes?
Resposta:
Um Deployment gerencia um conjunto de pods idênticos, garantindo que um número desejado de réplicas esteja em execução no cluster, tipicamente para aplicações stateless. Um DaemonSet garante que todos (ou alguns) nodes executem uma cópia de um pod, sendo útil para serviços em nível de cluster como coletores de logs (por exemplo, Fluentd) ou agentes de monitoramento (por exemplo, Node Exporter) que precisam ser executados em cada node.
Explique o conceito de Pod Security Policies (PSPs) e por que elas estão sendo depreciadas.
Resposta:
Pod Security Policies (PSPs) eram um admission controller que aplicava padrões de segurança a pods e contêineres. Elas permitiam que administradores de cluster controlassem aspectos sensíveis à segurança, como modo privilegiado, acesso à rede do host e tipos de volume. PSPs estão sendo depreciadas em favor do Pod Security Admission (PSA) e de engines de política como OPA Gatekeeper, que oferecem controle mais flexível e granular.
Como você alcança alta disponibilidade para o plano de controle do Kubernetes?
Resposta:
Alta disponibilidade para o plano de controle é alcançada executando múltiplas instâncias do API Server, etcd, Controller Manager e Scheduler. O etcd tipicamente é executado como um cluster baseado em quorum (por exemplo, 3 ou 5 nodes). Um balanceador de carga é posicionado na frente dos API Servers para distribuir o tráfego e fornecer failover.
O que é um mutating admission webhook e como ele pode ser usado?
Resposta:
Um mutating admission webhook é um callback HTTP que pode modificar requisições ao servidor de API do Kubernetes antes que elas sejam persistidas. Ele pode injetar contêineres sidecar, adicionar labels/anotações ou definir valores padrão para campos. Por exemplo, ele pode injetar automaticamente um sidecar istio-proxy em pods para integração de service mesh.
Descreva o papel do etcd em um cluster Kubernetes.
Resposta:
O etcd serve como o armazenamento chave-valor consistente e altamente disponível do Kubernetes. Ele armazena todos os dados do cluster, incluindo configuração, estado e metadados para todos os objetos do Kubernetes (pods, deployments, services, etc.). É crítico para a operação do cluster, e sua disponibilidade impacta diretamente a saúde do cluster.
Como o Kubernetes lida com a aplicação de políticas de rede?
Resposta:
As Network Policies do Kubernetes são especificações que definem como grupos de pods podem se comunicar entre si e com endpoints externos. Elas são implementadas por um plugin de rede (CNI) que suporta NetworkPolicy, como Calico, Cilium ou Weave Net. O plugin CNI traduz essas políticas em regras de firewall.
O que são Taints e Tolerations, e como são usados para o agendamento de pods?
Resposta:
Taints são aplicados aos nodes, marcando-os como 'inadequados' para certos pods, a menos que esses pods tenham Tolerations correspondentes. Tolerations são aplicadas aos pods, permitindo que eles sejam agendados em nodes com taint. Este mecanismo é usado para reservar nodes para cargas de trabalho específicas (por exemplo, nodes com GPU) ou para remover pods de nodes não saudáveis.