notas de estudo k8s (5): explicação detalhada do controlador k8s

1. Como criar um pod

No Kubernetes, os Pods podem ser divididos em duas categorias de acordo com a forma como são criados:

  • Autônomo: um pod criado diretamente pelo kubernetes. Este pod desaparecerá após ser excluído e não será reconstruído.
  • Pod criado pelo controlador: um pod criado por meio de um controlador de pod. Esse pod será reconstruído automaticamente após ser excluído.

O controlador de pod é a camada intermediária que gerencia os pods. Depois de usar o controlador de pod, só precisamos informar ao controlador de pod quantos e que tipo de pods queremos, e ele criará pods que atendam às condições e garantam que cada pod está no estado esperado pelo usuário. Se o pod falhar durante a operação, o controlador reiniciará ou recriará o pod com base na política especificada.

2. Recursos de carga de trabalho

Cargas de trabalho são aplicativos executados no Kubernetes

No Kubernetes, quer sua carga de trabalho consista em um único componente ou em vários componentes trabalhando juntos, você pode executá-la em um conjunto de pods. No Kubernetes, o Pod representa uma coleção de contêineres em execução no cluster .

Carregue recursos para gerenciar um conjunto de pods para usuários. Esses recursos de carregamento configuram o controlador para garantir que o número correto de pods do tipo e estado de execução corretos seja consistente com o estado especificado pelo usuário.

3. Tipo de controlador

  • A principal função do ReplicaSet é garantir que um certo número de pods possam ser executados normalmente. Ele continuará monitorando o status de execução desses pods. Quando um pod falhar, ele será reiniciado ou reconstruído. Ao mesmo tempo, também suporta a expansão e contração do número de Pods e a atualização de imagens de versão.
  • A implantação não gerencia pods diretamente, mas gerencia pods indiretamente gerenciando o ReplicaSet, ou seja: a implantação gerencia o ReplicaSet e o ReplicaSet gerencia os pods. Portanto, a função de implantação é mais poderosa que o ReplicaSet, incluindo todas as funções do ReplicaSet, incluindo parar e continuar o lançamento, atualização contínua de versão e reversão de versão.
  • DaemonSet pode garantir que uma cópia esteja sendo executada em cada nó (ou designado) do cluster, geralmente é adequado para cenários como coleta de log e monitoramento de nó . Em outras palavras, se as funções fornecidas por um Pod são em nível de nó (cada nó requer e só precisa de um), então este tipo de Pod é adequado para ser criado usando um controlador do tipo DaemonSet.
  • Job , que pode garantir que um número especificado de pods conclua tarefas únicas em lotes e agendamento em lote
  • CronJob usa o controlador Job como seu objeto de controle e o usa para gerenciar objetos de recursos Pod. As tarefas de trabalho definidas pelo controlador Job serão executadas imediatamente após a criação do recurso do controlador, mas o CronJob pode ser usado como uma tarefa periódica semelhante ao Linux sistema operacional. O método de planejamento do trabalho controla o ponto de tempo de execução e a forma de operação repetida. Em outras palavras, o CronJob pode executar repetidamente a tarefa do trabalho em um momento específico.
  • O Horizontal Pod Autoscaler pode ajustar automaticamente o número de pods de acordo com a carga do cluster para obter redução de pico e preenchimento de vale.
  • StatefulSet , gerencia aplicativos com estado.

Conjunto de réplicas

Sua principal função é garantir que um certo número de pods possam ser executados normalmente. Ele continuará monitorando o status de execução desses pods . Quando um pod falhar, ele será reiniciado ou reconstruído. Ao mesmo tempo, também suporta a expansão e contração do número de Pods e a atualização de imagens de versão.

Insira a descrição da imagem aqui

Implantação

Para melhor resolver o problema de orquestração de serviços, o kubernetes introduziu o controlador de implantação a partir da versão v1.2 . Vale ressaltar que o controlador Deployment não gerencia Pods diretamente, mas gerencia Pods indiretamente gerenciando ReplicaSet , ou seja: Deployment gerencia ReplicaSet e ReplicaSet gerencia Pods. Portanto, a função Deployment é mais poderosa que ReplicaSet.

As principais funções são as seguintes:

  • Suporta todas as funções do ReplicaSet.
  • Suporta parar e continuar publicando.
  • Suporta atualização contínua de versão e reversão de versão.

Insira a descrição da imagem aqui

Escalonador automático horizontal de pods

Já podemos kubectl scalealcançar a expansão e contração do Pod executando comandos manualmente, mas isso obviamente não atende ao objetivo de posicionamento do kubernetes - automação e inteligência. O Kubernetes espera ajustar automaticamente o número de pods monitorando o uso de pods , então um controlador como o HPA foi criado.

O HPA pode obter a utilização de cada Pod, depois compará-la com os indicadores definidos no HPA, calcular o valor específico que precisa ser dimensionado e, por fim, ajustar o número de Pods. Na verdade, o HPA, como a implantação anterior, também é um objeto de recurso do Kubernetes, que rastreia e analisa as alterações de carga do pod de destino para determinar se é necessário ajustar o número de cópias do pod de destino de maneira direcionada.

Insira a descrição da imagem aqui

DaemonSet

O controlador do tipo DaemonSet pode garantir que uma cópia esteja sendo executada em cada nó (ou designado) do cluster e geralmente é adequado para cenários como coleta de log e monitoramento de nó . Em outras palavras, se as funções fornecidas por um Pod são em nível de nó (cada nó requer e só precisa de um), então este tipo de Pod é adequado para ser criado usando um controlador do tipo DaemonSet.

Recursos do controlador DaemonSet:

  • Cada vez que um nó é adicionado ao cluster, a réplica do pod especificada também será adicionada ao nó.
  • Os pods também são coletados como lixo quando os nós são removidos do cluster.
    Insira a descrição da imagem aqui

Cronjob

O controlador CronJob usa o controlador Job como seu objeto de controle e o usa para gerenciar objetos de recursos Pod . As tarefas de trabalho definidas pelo controlador Job serão executadas imediatamente após a criação do recurso do controlador, mas o CronJob pode ser executado de maneira periódica semelhante para o sistema operacional Linux. O método de planejamento do trabalho de tarefa controla o ponto de tempo de execução e a forma de operação repetida. Em outras palavras, o CronJob pode executar repetidamente a tarefa do trabalho em um momento específico.

Insira a descrição da imagem aqui

StatefulSet

  • Aplicativo sem estado
    • Pense que os pods são todos iguais
    • Dimensione e expanda à vontade
    • Não há necessidade de considerar em qual nó executar
    • Não é necessário fazer pedido
  • Aplicativo com estado
    • Existem requisitos de pedido
    • Os pods são independentes e diferentes, garantindo a sequência e a exclusividade de inicialização do pod
    • Você precisa considerar em qual pod executar
    • Requer sequência de instalação para dimensionamento e expansão
  • StatefulSet é um controlador de gerenciamento de carga fornecido pelo Kubernetes para gerenciar aplicativos com estado.
  • A implantação do StatefulSet requer HeadLinessService (serviço headless)

Use HeadLinessService (serviço sem cabeça)

  • Ao usar a implantação, cada nome de pod não está em ordem e é composto por strings aleatórias. Portanto, os pods neste momento não estão em ordem. No entanto, no StatefulSet, os pods precisam estar em ordem. Cada pod não pode ser substituído em will. O nome do pod permanece inalterado após a reconstrução do pod.
  • O P do pod muda, por isso é identificado pelo nome do pod. O nome do pod é o código de identificação exclusivo do pod. O serviço headless pode dar a cada pod um nome exclusivo.

Acho que você gosta

Origin blog.csdn.net/qq_57629230/article/details/131402130
Recomendado
Clasificación