Criar DaemonSets do Kubernetes

Aplica-se a: AKS no Azure Stack HCI 22H2, AKS no Windows Server

Este artigo descreve como criar e utilizar um Kubernetes DaemonSet no AKS ativado pelo Azure Arc para garantir que uma cópia de um pod está sempre disponível em todos os nós de trabalho num cluster. Pode utilizar um DaemonSet para melhorar o desempenho do cluster, garantindo que uma aplicação é executada em todos os nós de trabalho e para implementar pods que fazem manutenção e fornecem serviços de suporte para nós.

Descrição geral de DaemonSets

DaemonSet é um objeto do Kubernetes que garante que uma cópia de um pod definido na configuração está sempre disponível em todos os nós de trabalho num cluster. Quando um novo nó é adicionado a um cluster, o DaemonSet aloca automaticamente o pod nesse nó.

Da mesma forma, quando um nó é eliminado, o pod que está em execução no nó também é eliminado e não é reagendado noutro nó (por exemplo, como acontece com ReplicaSets). Isto permite-lhe ultrapassar as limitações de agendamento do Kubernetes e certificar-se de que uma aplicação específica é implementada em todos os nós dentro do cluster.

Os DaemonSets podem melhorar o desempenho geral do cluster. Por exemplo, pode utilizá-los para implementar pods para realizar tarefas de manutenção e suportar serviços em todos os nós:

  • Execute um daemon de coleção de registos, como Fluentd e Logstash.
  • Execute um daemon de monitorização de nós, como Prometheus.
  • Execute um daemon de armazenamento de clusters, como glusterd ou ceph.

Embora o DaemonSets crie um pod em cada nó por predefinição, pode limitar o número de nós aceitáveis ao pré-definir o campo do seletor de nós no ficheiro YAML. O controlador DaemonSet só cria pods em nós que correspondam ao seletor de nós.

Normalmente, um DaemonSet implementa um tipo de daemon em todos os nós, mas é possível que vários DaemonSets controlem um tipo de daemon com etiquetas diferentes. Uma etiqueta do Kubernetes especifica regras de implementação com base nas características dos nós individuais.

Para obter mais informações sobre como utilizar DaemonSets, veja Kubernetes DaemonSets.

Criar um DaemonSet

Pode descrever um DaemonSet com um ficheiro YAML e, em seguida, criá-lo com os kubectl create comandos ou kubectl apply (por exemplo, kubectl create –f example-daemon.yaml).

O exemplo seguinte descreve as funcionalidades de um ficheiro de configuração DaemonSet com uma imagem nginx:

apiVersion: apps/v1  
kind: DaemonSet  
metadata: 
      labels: 
         app: nginx
      name: example-daemon
spec:  
  template:
    metadata:
    labels:
             app: nginx
          spec:  
    containers:  
        -name: nginx  
         image: nginx

Para ver o estado atual do DaemonSet, utilize o kubectl describe comando (por exemplo, kubectl describe daemonset example-daemon).

Limitar DaemonSet a nós específicos

Por predefinição, o DaemonSets cria pods em todos os nós de um cluster, mas com os seletores de nós, pode configurá-los para criar pods apenas em nós específicos. Se quiser limitar um DaemonSet a nós específicos, utilize o kubectl label comando .

Atualizar um DaemonSet

Pode atualizar um DaemonSet com o kubectl edit ds<NAME> comando . No entanto, recomenda-se que edite o ficheiro de configuração original e, em seguida, utilize o kubectl apply comando quando foi criado inicialmente. Depois de aplicar uma atualização, pode ver o estado da atualização com o kubectl rollout status ds <daemonset-name> comando .

Eliminar um DaemonSet

Para remover um DaemonSet, utilize o kubectl delete comando (por exemplo, kubectl delete –f example-daemon.yaml -n monitoring). Deve ter cuidado ao especificar o nome do ficheiro DaemonSet, uma vez que eliminar um DaemonSet limpa todos os pods que implementou.

Passos seguintes