Rascunhos de anotacoes sobre Kubernetes.

Autoscaling

  • Pods
    • HPA
    • VPA
    • Prometheus Metrics
    • KEDA (SQS, Kafka, RabbitMQ e outros)
  • Nodes
    • Cluster Autoscaler (Node Group)
    • Karpenter (EC2)

CNI (open source)

  • Flannel
  • Canal
  • Project Calico
  • Weave
  • Contiv Networking
  • SR-IOV
  • Cilium
  • Infoblox
  • Multus
  • Romana
  • CNI-Genie
  • Nuage CNI
  • Silk
  • Linen
  • Vhostuser
  • Amazon ECS CNI Plugins
  • Bonding CNI
  • ovn-kubernetes
  • Knitter
  • DANM
  • cni-route-override
  • Terway
  • Cisco ACI CNI
  • Kube-OVN
  • Project Antrea
  • OVN4NFV-K8S-Plugin
  • Azure CNI

Migração de CNI

Com Downtime

  • Remover CNI antigo
  • Instalar CNI novo
  • Fazer o rollout dos pods para conseguir um novo IP

Se houver o uso de Admission Controllers como o OPA ou Kyverno e em algum cloud provider, antes da instalação optar por:

  • hostNetwork=true
  • dnsPolicy="ClusterFirstWithHostNet"

Nas configurações do Admission Controller, ou qualquer outra coisa que precise falar com o control plane, isso garante que mesmo não usando o CNI padrão do seu provider, você ainda consiga se comunicar com o control plane do mesmo.

Sem downtime

Mesmo cluster

Novo cluster

Dado que seja possível a criação de um novo cluster, e através de backup/restore (velero) ou GitOps, restaurar o workload e chavear rede/DNS.

Distribuições (open source)

  • AgoraKube
  • Airship
  • EKS-D
  • AKS
  • Canonical
  • Flant Deckhouse
  • Flexkube
  • Fury
  • K0S
  • K3S
  • KubeCube
  • Kubermatic
  • Kubesphere
  • Kubic
  • Kurl
  • MetalK8S
  • MicroK8S
  • OpenNESS
  • Rancher
  • OpenShift
  • RKE Gov
  • Typhoon
  • Vcluster
  • Tanzu
  • Talos

NOTA: Kubernetes (geralmente via kubeadm), Cloud (AKS/EKS/GKE), Rancher e OpenShift são os mais comuns de se encontrar no mercado.

Instaladores (open source)

  • EKS Anywhere
  • Cybozu
  • Gardener
  • Kops
  • Kubeasz
  • Kubekey
  • KubeOperator
  • Kubeone
  • Kubespray
  • Magnum
  • Rancher
  • Symplegma
  • VanillaStack
  • Kubeadm

Interfaces para gerenciar o K8S

CLI

  • kubectl
  • kubens/kubectx
  • K9S
  • kubie

NOTA: Para outras ferramentas CLI úteis, consultar [[Minha stack de K8S]].

GUI / WebUI

  • Octant
  • OpenLens

Ingress Controller (open source)

  • AKS Application Gateway Ingress Controller
  • Ambassador
  • Apache APISIX
  • Contour
  • Gloo
  • HAProxy
  • Istio
  • Kong
  • NGINX
  • Skipper
  • Traefik
  • Tyk
  • Voyager
  • EnRoute

Multi Cluster

  • Controle unificado
    • Scheduling / Deploy
    • API Server
    • GitOps
    • Cluster virtual
  • Rede
    • Service Mesh
    • CNI
    • Externos e edge

Serverless no Kubernetes

  • Knative
  • OpenFaaS
  • Kubeless
  • OpenWhisk

Service Mesh (open source)

  • Linkerd
  • Istio
  • Consul
  • Kuma
  • Traefik Mesh
  • Apache ServiceComb
  • Open Service Mesh
  • Network Service Mesh
  • Gloo Mesh
  • Cilium Service Mesh (BETA)

NOTA: A maior parte dessas ferramentas se baseia no Envoy Proxy para funcionar.

NOTA2: Vale a pena dar uma olhada no Service Mesh Interface (SMI)

Minha stack de K8S

  • Ingress/API Gateway: Kong

NOTA: É bom ficar de olho na nova implementação de Ingress do Kubernetes, o Gateway API e projetos como o Envoy Gateway, dado que o conceito completo de API Gateway tem a tendencia de virar algo nativo.

  • Service Mesh: Linkerd

NOTA: Ficar de olho no service mesh do Cilium, sidecarless.

  • Monitoramento: Prometheus + Grafana + Thanos

NOTA: O VictoriaMetrics também pode ser uma excelente opção, dado que é mais simples do ponto de vista de implementação e operação.

  • Logging: Loki + Promtail + Grafana

NOTA: Caso exista a necessidade de full index, Elasticsearch + Fluentd + Kibana.

NOTA2: O desenvolvimento do Vector também está interessante dado os resultados de performance versus outros logs collectors.

Para os possíveis agentes em ambos cenários consultar [[Logging]].

  • Tracing: Jaeger

NOTA: Elasticsearch também pode ser usado, além do Grafana Tempo para ter um unico ponto de visualização, no Kibana ou Grafana.

NOTA2: Dependendo do contexto de envio, o OpenTelemetry Collector Operator também pode ser interessante para centralizar o envio de dados de observabilidade.

  • Serverless: Knative

  • CNI: Cilium

  • Bootstrap: Terraform (Cloud) ou Kubeadm (on premise)

  • GitOps: Flux (infra) / ArgoCD (app)

NOTA: A vantagem do Flux em relação ao ArgoCD é como ele lida com o Helm, em especial usar o SDK do Helm em vez de renderizar o chart garante que o deploy várias aplicações de infraestrutura que usam o Helm ocorram sem gambiarras.

  • Compliance: Kyverno

NOTA: Se seu ambiente for híbrido, o OPA pode ser mais interessante, já que o Kyverno é focado no Kubernetes.

  • Segurança: Falco + Kyverno + Starboard/Trivy + Sigstore Cosign

  • Análise: Popeye + Kubescape + Kubebench + Kubehunter

  • Storage: Implementação da Cloud ou Longhorn ou Rook (Ceph)

NOTA: NFS também é uma opção, mas evito ao máximo por traumas passados.

  • Backup: Velero

  • AWS: Node Termination Handler, AWS EBS CSI, AWS EFS CSI, AWS Load Balancer Controller (NLB), Cluster Autoscaler (ASG) / Karpenter (EC2)

NOTA: Mesmo que você não va usar o ALB no K8S vale a pena ter o AWS Load Balancer Controller para usar NLBs em vez do Classic Load Blancer, assim você pode ter um LB mais parrudo para o NGINX, Kong e afins.

Referências