Kubernetes

Tutorial do Kubernetes ReplicaSet

Tutorial do Kubernetes ReplicaSet
O Kubernetes costuma ser visto como um enorme corpo de conceitos inter-relacionados, como nós e pods, serviços, implantações, etc., que muitas vezes são difíceis de desvendar. Nesta postagem, vamos desvendar lentamente uma abstração chave que é ReplicaSet. Começaremos criando um pequeno .arquivo yaml para um pod do Kubernetes, que teria um rótulo e, em seguida, criaria um ReplicaSet que garantiria que um determinado número de pods com o mesmo rótulo estivesse sempre em execução no cluster . Isso é o que os autores do projeto realmente pretendiam quando estavam projetando o Kubernetes. Então vamos começar.

Pré-requisitos

A primeira coisa que você precisa é de acesso a um cluster do Kubernetes. Você pode criar um usando o Minikube ou usar o Docker para Windows ou Docker para Mac, que agora vêm com uma distribuição do Kubernetes de nó único que você pode habilitar nas configurações do Docker.

Você também precisa ter algum conhecimento a priori sobre Kubernetes. Este é um bom ponto de partida.

Criação de pods

Normalmente, criamos pods usando um arquivo yaml que especifica qual imagem de contêiner usar, quais portas expor, etc. Aqui está um arquivo simples para criar um pod nginx.

apiVersion: v1
tipo: Pod
metadados:
nome: nginx-1
rótulo:
app: webserver
especificação:
recipientes:
- nome: nginx
imagem: nginx: 1.7.9
portas:
- containerPort: 80

Salve-o com o nome nginx-pod.yaml em um diretório e, a partir do mesmo diretório, execute o comando:

$ kubectl create -f ./ nginx-pod.yaml
## Verifique se o pod foi criado executando:
$ kubectl get pods

Você notará que um único pod chamado “Nginx-1” está instalado e funcionando. Mas você não pode escalar este único pod. Corrida kubectl create novamente irá dar-lhe um erro, pois o nome nginx-1 não pode ser reutilizado novamente.

O Kubernetes oferece a capacidade de criar pods para abstrações mais altas, como Implantações e ReplicaSets. Que criam pods a partir de um determinado modelo de pod especificando quais imagens usar, quais portas expor em cada um dos novos pods etc., mas nada muito específico sobre um único pod. ReplicaSet (e implantações também), em seguida, começa a criar novos pods, dando a cada novo pod um nome exclusivo, bem como um rótulo não exclusivo que ajuda o ReplicaSet a rastrear os pods que foram criados a partir de um determinado modelo.

ReplicaSet garante que, a qualquer momento, um determinado número de pods de um determinado rótulo esteja sempre ativo e em execução. Se, por exemplo, um nó ficar inativo, é função do ReplicaSet criar mais pods em outros nós para compensar a perda. Para escrever um arquivo yaml de réplica, seguiríamos o padrão semelhante a escrever um pod. Terá uma versão api (apps / v1), um tipo (ReplicaSet) e um nome nos metadados. O replicaset em si pode ter rótulos, mas vamos manter as coisas simples por enquanto e apenas dar a ele um nome exclusivo meu-replicaset.

Então, precisamos mudar de metadados seção para a carne da matéria especificação. Aqui, fornecemos o número de replicações que queremos na seção réplicas. Então, damos a este ReplicaSet um seletor que seria usado para corresponder a um rótulo, digamos, aplicativo para um valor, digamos, servidor web, entre os pods em execução. Se houver menos desses pods, ele criará pods de acordo com o modelo fornecido e adicionará o mesmo rótulo a esses novos pods. Se houver mais pods do que o necessário, ele excluirá alguns.

Especificar um modelo que funcionaria como base para a criação de novos pods é a etapa mais envolvente. Este modelo não terá um nome, pois o replicaset criará um novo nome para cada novo pod criado. O terá rótulos, no entanto, e você pode notar que o mesmo rótulo app = webserver que o modelo possui é selecionado por meio do seletor parâmetro na especificação do replicaset.

apiVersion: apps / v1
tipo: ReplicaSet
metadados:
nome: my-replicaset
 
especificação:
réplicas: 3
seletor:
matchLabels:
app: webserver
modelo:
metadados:
etiquetas:
app: webserver
especificação:
recipientes:
- nome: nginx
imagem: nginx: 1.7.9
portas:
- containerPort: 80

Salve este arquivo como nginx-replicaset.yaml e crie o replicaset usando o comando:

$ kubectl create -f nginx-replicaset.yaml

Porque criamos anteriormente um pod com o mesmo rótulo app = webserver, o replicaset criaria apenas mais dois pods. Você pode listar todos os pods usando o comando:

$ kubectl get pods
NOME PRONTO STATUS REINICIA IDADE
my-replicaset-nmvt9 1/1 Executando 0 9s
my-replicaset-xf9mx 1/1 Executando 0 9s
nginx-1 1/1 Running 0 28s

Cada um dos pods terá um nome exclusivo associado a eles. Como o primeiro pod que criamos tinha um nome nginx-1. Você pode tentar excluir este usando o comando:

$ kubectl delete pod nginx-1
$ kubectl get pods
 
NOME PRONTO STATUS REINICIA IDADE
my-replicaset-nmvt9 1/1 Executando 0 1m
my-replicaset-pkn4q 1/1 Executando 0 22s
my-replicaset-xf9mx 1/1 Executando 0 1m

Você notará que quase instantaneamente o controlador ReplicaSet criou um novo pod para substituir o que excluímos. Assim, garantindo que o número de pods em execução, com rótulo app = webserver é sempre 3, conforme especificado em nosso manifesto de réplicas, acima.

Você obtém muito controle graças aos rótulos e seletores. Você pode espalhar ainda mais os pods em vários nós usando nodeSelectors, que são usados ​​para alocar um certo número de pods em certos nós.

O que as réplicas não permitem são atualizações. Se for uma versão mais recente do seu aplicativo, digamos, nginx: 1.8 chegar, você terá que deletar esta réplica e criar uma nova com a imagem mencionada no manifesto yaml da réplica. É aqui que o conceito de implantações se torna útil. Inclui a ideia de replicasets e se estende ao fornecer suporte adicional para atualizar seus aplicativos. Agora que você está familiarizado com as réplicas, pode ser uma boa ideia examinar as implantações do Kubernetes.

Referências

  1. Criação de pods
  2. Criação de ReplicaSets
Mecanismos de jogos gratuitos e de código aberto para o desenvolvimento de jogos Linux
Este artigo cobrirá uma lista de mecanismos de jogo gratuitos e de código aberto que podem ser usados ​​para desenvolver jogos 2D e 3D no Linux. Exist...
Tutorial de Shadow of the Tomb Raider para Linux
Shadow of the Tomb Raider é a décima segunda adição à série Tomb Raider - uma franquia de jogos de ação e aventura criada pela Eidos Montreal. O jogo ...
Como aumentar o FPS no Linux?
FPS significa Quadros por segundo. A tarefa do FPS é medir a taxa de quadros em reproduções de vídeo ou desempenho de jogos. Em palavras simples, o nú...