Como definir diferentes Kubernetes reiniciar políticas

Como definir diferentes Kubernetes reiniciar políticas

Falaremos especificamente sobre os vários Kubernetes reiniciar as políticas neste artigo. Vamos primeiro discutir as várias políticas usadas quando Kubernetes tiver que ser reiniciado. Você pode usar essas políticas para impedir que uma certa carga de trabalho seja implantada no cluster. Embora impondo padrões rigorosos no cluster normalmente são feitos para garantir a conformidade, os administradores de cluster também devem seguir várias práticas recomendadas que foram sugeridas.

O que é a política de reinicialização de Kubernetes?

Cada Kubernetes POD adere a um ciclo de vida específico. Começa no estágio "pendente" e, se um ou mais dos contêineres primários foram lançados com sucesso, passam para o estágio "em execução". Dependendo se os contêineres no pod ter sucesso ou fracassarem, o processo passa para a fase "sucedida" ou "falhada".

Para reiniciar a política no nível dos contêineres aplicados, três opções podem ser usadas:

Sempre

Toda vez que um contêiner termina, Kubernetes produz um novo, já que a vagem precisa estar ativa o tempo todo.

OnFailure

Se o contêiner sair com um código de retorno diferente de 0, ele apenas reiniciará uma vez. A reinicialização não é necessária para recipientes que retornam 0 (sucesso).

Nunca

O contêiner não conseguiu reiniciar.

Agora, na seção a seguir, discutiremos como você pode reiniciar uma vagem.

Como reiniciar uma vagem em Kubernetes?

Para reiniciar um pod kubernetes, emitir comandos usando a ferramenta Kubectl. Ele se conectará com o servidor KUBEAPI. Vamos explorar as opções disponíveis:

Reiniciando um recipiente dentro de uma vagem

Uma vagem pode conter vários recipientes. Por outro lado, você se conecta essencialmente ao contêiner primário dentro de um pod quando se conecta a ele. Você pode se conectar a cada contêiner que definiu em um caso se tiver definido mais de um.

Você pode ver abaixo um exemplo de especificação de pod multi-container:


Isso descreve um volume compartilhado e dois recipientes. O arquivo HTML será servido pelo contêiner nginx e a cada segundo o contêiner do Ubuntu adicionará um carimbo de data ao arquivo html.

Como você não especificou a qual contêiner se conectar, ele escolherá automaticamente o primeiro (nginx) quando você tentar se conectar a essa vagem. A captura de tela está anexada abaixo:


Agora você pode tentar encerrar o processo PID 1 dentro do contêiner atualmente ativo. Execute os seguintes comandos como root para realizar isso:


Você também pode usar a ferramenta Kubectl descrita abaixo:


De acordo com a especificação do pod, os K8s agora tentarão reiniciar o contêiner destruído. Para isso, o comando "descrever" é usado da seguinte forma:


Aqui está o resultado do comando acima:


O estado atual está "indo", enquanto o estado anterior foi "encerrado.”Isso significa que o contêiner foi reiniciado, de acordo com isso. No entanto, nem todos os contêineres podem acessar credenciais raiz. É por isso que esse método pode não ser muito útil.

Reiniciando um pod escalando

Escalar a réplica de um pod para 0 e depois escalar até 1 é a maneira mais simples de reiniciá -la. Em vez disso, você deve construir uma implantação porque o comando de escala não pode ser usado em pods. Aqui está uma maneira fácil de conseguir isso:


Escala para 0 e depois para 1 depois disso. Ao fazer isso, o POD será encerrado e depois reimpletado para o cluster:


As réplicas são definidas como 1 como você pode ver nesta imagem.


Para visualizar os detalhes da implantação, agora usamos “Kubectl Obtenha implantações.”A seguir, é apresentada uma lista do comando e do resultado:

Reiniciando um pod excluindo e reimplantando -o

Usando o comando "Kubectl delete", você pode excluir uma vagem e depois reimpletá -lo. No entanto, essa abordagem é bastante perturbadora, portanto não é recomendável.

Reiniciando uma vagem usando o lançamento

Para reiniciar uma vagem usando a maneira descrita acima, você deve destruir o pod existente e depois criar um novo, ou escalar a réplica para baixo e depois subir. Com Kubernetes versão 1.15, você pode reiniciar uma implantação de maneira rolante. Este é o procedimento sugerido para reiniciar uma vagem. Basta inserir o seguinte comando para começar:


Agora, se você ficar de olho no status de implantação em um terminal diferente, notará o fluxo de eventos da seguinte maneira:


Se estiver saudável, será reduzido a réplica anterior da implantação e aumentará uma nova réplica do pod. O resultado é o mesmo, exceto nessa abordagem, a orquestração subjacente foi tratada por Kubernetes.

Como as vagens de Kubernetes podem ser reiniciadas de maneiras diferentes?

Vamos começar com o recipiente do Docker. Com o comando a seguir, os contêineres do Docker podem ser reiniciados:

> Docker reiniciar contêiner_id

Mas em Kubernetes, não há comando comparável para reiniciar vagens, especialmente se não houver arquivo YAML especificado. Como alternativa, você pode reiniciar as pods Kubernetes usando comandos Kubectl. Os seguintes comandos estão listados:

O comando Kubectl Set Env

Um método é usar o comando KUBECTL SCALE. Isso modificará o número de réplicas da vagem que precisa ser reiniciada. Abaixo está um comando de exemplo sobre como definir as réplicas no pod como dois:

> implantação da escala KUBECTL PRIMEIRA DESPONSEGRAÇÃO-REPLICAS = 2

Comando de reinicialização do lançamento

Aqui, demonstraremos como usar o comando de reinicialização do lançamento para reiniciar as pods do Kubernetes:

> Reiniciar o lançamento da Kubectl Primeira implantação -n de demonstração-namespace

O controlador é instruído a exterminar cada cápsula individualmente pelo comando. Em seguida, ele dimensiona novos pods usando o réplica. Até que cada novo pod seja mais recente que todos os pods atuais quando o controlador retoma, esse processo continua.

O comando delete pod

Esta seção superará como usar o comando Remover para reiniciar as vagens Kubernetes. Você pode notar que usamos o próximo comando para nos livrar do objeto API da pod nesta imagem:

.> Kubectl Exclua pod de primeira linha --n Demo_namespace

O esperado é contradito pela exclusão do objeto POD porque a API de Kubernetes é declarativa. Para manter a consistência com o antecipado, o pod é, portanto, recriado.

Uma vagem pode ser reiniciada por vez usando o comando anterior. Consulte o comando anexado para reiniciar várias vagens:

> kubectl delete replicaSet pods-multiple-n Demo_namespace

O comando acima mencionado reinicia cada pod excluindo toda a replicaset de pods e depois criando -o do zero.

Conclusão

Esta postagem forneceu informações sobre os vários Kubernetes reiniciar as políticas. Ilustramos cada estágio com o auxílio de exemplos de amostra. Além disso, experimente esses comandos e veja qual saída eles geram.