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 cada nó do cluster. Este laboratório irá guiá-lo através do 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. Minikube é um ambiente Kubernetes leve que roda em sua máquina local.

  1. Navegue para o seu diretório de trabalho:

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

    cd /home/labex/project
    
  2. Iniciar 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. Verificar 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 (Em execução).
    • Se o cluster não estiver em execução, execute novamente minikube start.

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 cada nó 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 usa 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 cada nó.

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 sendo executadas em cada nó. 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ê deve 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-daemonsett-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 para 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 sendo executadas com a nova imagem. Use o seguinte comando para listar os pods criados pelo DaemonSet:

kubectl get pods -l app=myapp

Você deve 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 cada nó do cluster.