Executando Pods com DaemonSets

KubernetesBeginner
Pratique Agora

Introdução

No Kubernetes, um DaemonSet é um tipo de controlador que garante que uma cópia de um pod esteja em execução em todos os nós do cluster. Este laboratório irá guiá-lo pelo processo de criação de um DaemonSet para executar réplicas de um pod em cada nó do cluster.

Iniciar o Cluster Minikube

Antes de criar recursos, você precisa de um cluster Kubernetes em execução. O Minikube é um ambiente Kubernetes leve que roda em sua máquina local.

  1. Navegue até o seu diretório de trabalho:

    Abra o terminal e navegue até a pasta padrão do projeto:

    cd /home/labex/project
    
  2. Inicie o Minikube:

    Inicie o Minikube para inicializar um cluster Kubernetes:

    minikube start
    
    • Este comando configura um cluster Kubernetes de nó único em sua máquina local.
    • O Minikube pode levar alguns minutos para iniciar, dependendo do desempenho do seu sistema.
  3. Verifique se o Minikube está em execução:

    Verifique o status do cluster Minikube:

    minikube status
    
    • Procure por componentes como kubelet e apiserver listados como Running.
    • Se o cluster não estiver em execução, execute minikube start novamente.

Se você encontrar problemas ao iniciar o Minikube, use minikube delete para redefinir o ambiente, se necessário.

Criar um Pod

Crie um pod simples que será usado como modelo para as réplicas. Crie um arquivo chamado /home/labex/project/myapp-pod.yaml com o seguinte conteúdo:

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
    - name: myapp-container
      image: nginx
      ports:
        - containerPort: 80

Crie o pod usando o seguinte comando:

kubectl apply -f /home/labex/project/myapp-pod.yaml

Criar um Daemonset

Crie um DaemonSet para executar réplicas do myapp-pod em todos os nós do cluster. Crie um arquivo chamado /home/labex/project/myapp-daemonset.yaml com o seguinte conteúdo:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: myapp-daemonset
spec:
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp-container
          image: nginx
          ports:
            - containerPort: 80

Este DaemonSet utiliza o myapp-pod como modelo para as réplicas e define o seletor matchLabels como app: myapp para garantir que as réplicas sejam criadas em todos os nós.

Crie o DaemonSet usando o seguinte comando:

kubectl apply -f /home/labex/project/myapp-daemonset.yaml

Verificar o Daemonset

Verifique se o DaemonSet foi criado e se as réplicas do myapp-pod estão em execução em todos os nós. Use o seguinte comando para listar os nós no cluster:

kubectl get nodes

Use o seguinte comando para listar os pods criados pelo DaemonSet:

kubectl get pods -l app=myapp

Você deverá ver um pod para cada nó no cluster.

Atualizar o Daemonset

Atualize o DaemonSet para alterar a imagem usada pelo myapp-container. Crie um arquivo chamado /home/labex/project/myapp-daemonset-update.yaml com o seguinte conteúdo:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: myapp-daemonset
spec:
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp-container
          image: busybox
          command: ["sleep", "3600"]

Este DaemonSet atualizado altera a imagem usada pelo myapp-container para busybox e define o comando como sleep 3600.

Atualize o DaemonSet usando o seguinte comando:

kubectl apply -f /home/labex/project/myapp-daemonset-update.yaml

Verifique se o DaemonSet foi atualizado e se as réplicas do myapp-pod estão em execução com a nova imagem. Use o seguinte comando para listar os pods criados pelo DaemonSet:

kubectl get pods -l app=myapp

Você deverá ver novos pods criados com a imagem atualizada.

Resumo

Neste laboratório, você aprendeu como usar um DaemonSet no Kubernetes para executar réplicas de um pod em todos os nós do cluster.