Criar Kubernetes DaemonSets
Aplica-se a: AKS no Azure Stack HCI 22H2, AKS no Windows Server
Este artigo descreve como criar e usar um Kubernetes DaemonSet no AKS habilitado pelo Azure Arc para garantir que uma cópia de um pod esteja sempre disponível em cada nó de trabalho em um cluster. Você pode usar um DaemonSet para melhorar o desempenho do cluster garantindo que um aplicativo seja executado em todos os nós de trabalho e para implantar pods que fazem manutenção e fornecem serviços de suporte para nós.
Visão geral do DaemonSets
Um DaemonSet é um objeto Kubernetes que garante que uma cópia de um pod definida na configuração esteja sempre disponível em cada nó de trabalho em um cluster. Quando um novo nó é adicionado a um cluster, o DaemonSet aloca automaticamente o pod nesse nó.
Da mesma forma, quando um nó é excluído, o pod que está sendo executado no nó também é excluído e não é reagendado em outro nó (por exemplo, como acontece com ReplicaSets). Isso permite que você supere as limitações de agendamento do Kubernetes e certifique-se de que um aplicativo específico seja implantado em todos os nós dentro do cluster.
DaemonSets pode melhorar o desempenho geral do cluster. Por exemplo, você pode usá-los para implantar pods para executar tarefas de manutenção e serviços de suporte para cada nó:
- Execute um daemon de coleção de logs, como
Fluentd
eLogstash
. - Execute um daemon de monitoramento de nó, como
Prometheus
. - Execute um daemon de armazenamento de cluster, como
glusterd
ouceph
.
Embora DaemonSets crie um pod em cada nó por padrão, você pode limitar o número de nós aceitáveis predefinindo o campo seletor de nó no arquivo YAML. O controlador DaemonSet só cria pods em nós que correspondem ao seletor de nós.
Normalmente, um DaemonSet implanta um tipo de daemon em todos os nós, mas é possível que vários DaemonSets controlem um tipo de daemon usando rótulos diferentes. Um rótulo do Kubernetes especifica regras de implantação com base nas características de nós individuais.
Para obter mais informações sobre como usar DaemonSets, consulte Kubernetes DaemonSets.
Criar um DaemonSet
Você descreve um DaemonSet usando um arquivo YAML e, em seguida, cria-o usando os kubectl create
comandos ou kubectl apply
(por exemplo, kubectl create –f example-daemon.yaml
).
O exemplo a seguir descreve os recursos de um arquivo de configuração DaemonSet usando uma imagem nginx:
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
app: nginx
name: example-daemon
spec:
template:
metadata: null
labels:
app: nginx
containers: null
name: nginx
image: nginx
Para exibir o estado atual do DaemonSet, use o kubectl describe
comando (por exemplo, kubectl describe daemonset example-daemon
).
Limitar DaemonSet a nós específicos
Por padrão, DaemonSets criam pods em todos os nós de um cluster, mas com seletores de nós, você pode configurá-los para criar pods somente em nós específicos. Se você quiser limitar um DaemonSet a nós específicos, use o kubectl label
comando.
Atualizar um DaemonSet
Você pode atualizar um DaemonSet usando o kubectl edit ds<NAME>
comando. No entanto, é recomendável que você edite o arquivo de configuração original e use o kubectl apply
comando quando ele foi criado inicialmente. Depois de aplicar uma atualização, você pode exibir o status da atualização usando o kubectl rollout status ds <daemonset-name>
comando.
Excluir um DaemonSet
Para remover um DaemonSet, use o kubectl delete
comando (por exemplo, kubectl delete –f example-daemon.yaml -n monitoring
). Você deve ser cauteloso ao especificar o nome do arquivo DaemonSet, pois excluir um DaemonSet limpa todos os pods implantados.