Kubernetes Terminology

Esses são os principais componentes do Kubernetes e cada um desempenha um papel importante na gestão, escalabilidade e manutenção de aplicativos em um ambiente Kubernetes.



1.  Job 

Um  Job em Kubernetes é responsável por criar um ou mais pods e garantir que um número específico de pods termine com sucesso. Ele é usado para tarefas de execução única, como processar um lote de dados ou realizar uma migração de banco de dados.

-  Caso: Processar uma lista de arquivos uma vez e depois encerrar.

apiVersion: batch/v1
kind: Job
metadata:
  name: example-job
spec:
  template:
    spec:
      containers:
      - name: my-container
        image: busybox
        command: ["echo", "Hello Kubernetes!"]
      restartPolicy: Never

2.  Namespace 

Um  Namespace é uma forma de segmentar o cluster em diferentes ambientes virtuais, permitindo que múltiplos ambientes (como produção, desenvolvimento e teste) coexistam no mesmo cluster de forma isolada.

-  Caso: Separar recursos para `dev`, `staging` e `production`.

apiVersion: v1
kind: Namespace
metadata:
  name: dev-environment

3.  Volume 
Um  Volume em Kubernetes é um diretório que pode ser montado em um ou mais pods. Ao contrário do armazenamento temporário de um contêiner, um volume persiste os dados, mesmo que o contêiner seja reiniciado.

-  Caso: Montar um volume persistente para um banco de dados.

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-data
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /data

4.  Ingress 

Ingress é um recurso que gerencia o acesso externo aos serviços em um cluster Kubernetes, geralmente HTTP e HTTPS, fornecendo um balanceamento de carga e roteamento baseado em regras.

-  Caso: Roteamento de tráfego para serviços diferentes com base no caminho da URL.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
spec:
  rules:
  - host: myapp.com
    http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: api-service
            port:
              number: 80

5.  DaemonSet 

Um  DaemonSet garante que uma cópia de um pod seja executada em todos (ou em alguns) nós do cluster. Isso é útil para serviços como coleta de logs, monitoramento de nós, etc.

-  Caso: Instalar um agente de monitoramento em todos os nós.

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: monitoring-agent
spec:
  selector:
    matchLabels:
      app: agent
  template:
    metadata:
      labels:
        app: agent
    spec:
      containers:
      - name: agent
        image: monitoring-agent:latest

6.  Service 

Um  Service é um recurso que expõe um ou mais pods em um cluster, permitindo que eles sejam acessíveis de forma estável, mesmo que os pods sejam reiniciados ou substituídos.

-  Caso: Expor um conjunto de pods como um serviço acessível por um IP fixo dentro do cluster.

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

7.  Operator 

Um  Operator é um controlador personalizado que estende o Kubernetes para gerenciar aplicativos de forma específica ao domínio. Ele lida com a lógica de ciclo de vida do aplicativo, como backups automáticos ou escalonamento com base em métricas personalizadas.

8.  ClusterRole 

Um  ClusterRole define permissões que podem ser aplicadas em um nível de cluster, permitindo acesso a recursos como `nodes`, `persistentvolumes`, etc.

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cluster-admin-role
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["get", "list", "watch"]

9.  Secret
 
Um  Secret é usado para armazenar informações sensíveis, como senhas, tokens ou chaves SSH, de forma segura no cluster.

-  Caso: Armazenar credenciais para um banco de dados.

apiVersion: v1
kind: Secret
metadata:
  name: db-credentials
type: Opaque
data:
  username: YWRtaW4=  # base64 encoded
  password: c2VjcmV0

10.  ReplicaSet 

Um  ReplicaSet garante que um número específico de réplicas de um pod esteja em execução a qualquer momento. Ele substitui o  ReplicationController .

-  Caso: Manter 3 réplicas de um pod em execução.

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: frontend
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: nginx

11.  CronJob 

Um  CronJob  é usado para executar tarefas recorrentes com base em uma programação (usando o formato `cron`). É útil para tarefas agendadas como backups.

-  Caso: Executar um script diariamente às 3h.

apiVersion: batch/v1
kind: CronJob
metadata:
  name: daily-task
spec:
  schedule: "0 3 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: my-job
            image: busybox
            command: ["echo", "Daily Task"]
          restartPolicy: OnFailure

12.  Event 

Events são registros de atividades que ocorrem no cluster. Eles são úteis para depuração, fornecendo detalhes sobre o que está acontecendo com os recursos.

13.  ConfigMap 

Um  ConfigMa  é usado para armazenar dados de configuração em pares chave-valor, permitindo que contêineres usem essas configurações sem precisar recriar imagens.

-  Caso : Configurar variáveis de ambiente para um pod.

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  APP_MODE: production
  LOG_LEVEL: debug

14.  Deployment 

Um  Deployment fornece atualizações declarativas para pods e ReplicaSets, permitindo a implantação e o escalonamento de aplicações de forma controlada.

-  Caso: Implantar uma aplicação com 2 réplicas.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: nginx

15.  ServiceMonitor 

ServiceMonitor é usado com o Prometheus Operator para monitorar serviços expostos no cluster. Ele especifica quais serviços devem ser monitorados e como.

16.  Endpoint 

Um  Endpoint é uma lista de endereços IP de pods ou serviços que representam as instâncias para um serviço Kubernetes. É usado para rotear o tráfego para os pods corretos.

Comments