Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Instalação de cRPD no Kubernetes

O Kubernetes é uma plataforma de código aberto para gerenciar cargas de trabalho e serviços conteinerizados. Os contêineres são uma boa maneira de empacotar e executar os aplicativos. Em um ambiente de produção, você precisa gerenciar os contêineres que executam os aplicativos e garantir que não haja tempo de inatividade. Por exemplo, se um contêiner cair, outro contêiner precisa começar. O Kubernetes oferece a você uma estrutura para executar sistemas distribuídos de maneira resiliente. O Kubernetes oferece uma plataforma para automação de implantação, escalabilidade e operações de contêineres de aplicativos em clusters de contêineres de host.

Pré-requisito

Instale Kubernetes no sistema Linux e também para implantar Kubernetes em um cluster Linux de dois nós, veja a instalação do Kubernetes.

Quando você implanta o Kubernetes, você tem um cluster. Um cluster kubernetes consiste em um conjunto de máquinas de trabalhadores, chamadas nós, que executam aplicativos conteinerizados. Cada cluster tem pelo menos um nó de trabalhador. O(s) nó(s) do trabalhador hospeda os pods que são os componentes do aplicativo.

Esta seção descreve as etapas para criar a imagem do cRPD Docker no Kubernetes.

Instalação de Kubernetes

Para instalar o Kubernetes:

  1. Faça login como usuário raiz.
  2. Baixe e instale o software.
  3. Inicie o Kubernetes.

Kubernetes Cluster

O Kubernetes coordena um cluster de computadores conectados para funcionar como uma única unidade. O Kubernetes automatiza a implantação e o agendamento do cRPD em um cluster de forma eficiente.

Um cluster Kubernetes consiste em dois tipos de recursos:

  • O principal coordena o cluster

  • Nós são os trabalhadores que executam aplicativos

O Principal é responsável pelo gerenciamento do cluster. O principal coordena todas as atividades em seu cluster, como agendar aplicativos, manter o estado desejado dos aplicativos, escalar aplicativos e implementar novas atualizações.

Um nó é um VM ou um computador físico que serve como uma máquina do trabalhador em um cluster Kubernetes. Cada nó tem um Kubelet, que é um agente para gerenciar o nó e se comunicar com o mestre do Kubernetes. O nó também deve ter ferramentas para lidar com operações de contêineres, como Docker ou rkt. Um cluster kubernetes que lida com o tráfego de produção deve ter um mínimo de três nós.

Quando você implanta cRPD no Kubernetes, as primárias iniciam os contêineres de aplicativos. O principal agenda os contêineres para serem executados nos nós do cluster. Os nós comunicam-se com as primárias usando a API do Kubernetes, que as primárias expõem. Os usuários finais também podem usar a API do Kubernetes diretamente para interagir com o cluster.

Um Pod funciona sempre em um nó. Um nó é uma máquina do trabalhador em Kubernetes e pode ser uma máquina virtual ou física, dependendo do cluster. Cada nó é gerenciado pelas primárias. Um nó pode ter vários pods, e o mestre kubernetes lida automaticamente com a programação dos pods em todos os Nós no cluster.

Todos os nós do Kubernetes são executados pelo menos:

  • Kubelet, um processo responsável pela comunicação entre o Mestre do Kubernetes e o Nó; gerencia os Pods e os contêineres em execução em uma máquina.

  • Um tempo de execução de contêiner (como Docker, rkt) responsável por retirar a imagem do contêiner de um registro, desempacotar o contêiner e executar o aplicativo.

Para criar um cluster minikube:

  1. Execute o comando a seguir para verificar a versão minikube:
  2. Execute o comando a seguir para iniciar o cluster:
  3. Execute o comando a seguir para verificar se o kubectl está instalado:
  4. Execute o comando a seguir para visualizar os detalhes do cluster:
  5. Execute o comando a seguir para ver os nós no cluster:

Baixar imagem do cRPD Docker

Pré-requisitos
  • Antes de importar o software cRPD, certifique-se de que o Docker esteja instalado no host Linux e que o Docker Engine esteja sendo executado.

  • Certifique-se de se registrar no Suporte da Juniper antes de baixar o software cRPD.

Para baixar a imagem do docker:

  1. Faça login no registro interno do Docker da Juniper usando o nome de login e senha que você recebeu como parte do processo de cumprimento de vendas ao solicitar cRPD.
    1. Crie o arquivo -passwd.txt e copie o símbolo de acesso, excluindo as cotações fornecidas pela equipe de atendimento ao cliente da Juniper.
    2. Faça login no hub empresarial usando o seguinte comando:
      root@ubuntu-vm18$ cat passwd.txt | docker login -u"<registered-email-id>" --password-stdin enterprise-hub.juniper.net:443

      Por exemplo, root@ubuntu-vm18$ cat passwd.txt | docker login -u user@domain.com --password-stdin enterprise-hub.juniper.net:443

  2. Retire a imagem do docker do site de download usando o seguinte comando:

    root@dc-rpd-01# docker pull enterprise-hub.juniper.net:443/crpd-docker-prod/crpd:<release tag>

    Por exemplo,

    root@ubuntu-vm18:~# docker pull enterprise-hub.juniper.net:443/crpd-docker-prod/crpd:22.3R1

  3. Verifique as imagens no repositório de imagens do docker.

    root@dc-rpd-01# docker images

Criação de um pod cRPD usando a implantação

Um Pod Kubernetes é um grupo de um ou mais contêineres, vinculados para fins de administração e rede. Uma implantação do Kubernetes verifica a integridade do seu Pod e reinicia o Contêiner do Pod se ele terminar. Implantações são a maneira recomendada de gerenciar a criação e a escala dos Pods.

Quando você descreve um estado desejado em uma Implantação, e o Controlador de Implantação muda o estado real para o estado desejado. Você pode definir implantações para criar novos ReplicaSets ou remover implantações existentes e adotar todos os seus recursos com novas implantações.

  1. Crie o arquivo crpd.yaml no kubernetes-master e adicione o seguinte conteúdo de texto:
  2. Reserve o arquivo crpd.yaml para criar o cRPD Pod.

    root@kubernetes-master:~# kubectl create -f crpd.yaml

  3. Execute o comando a seguir para ver a lista de Pods existentes:

    root@kubernetes-master:~# kubectl get pods

  4. Execute o comando a seguir para ver quais contêineres estão dentro desse Pod e quais imagens são usadas para construir os contêineres:

    root@kubernetes-master:~# kubectl describe pod crpd

Criação de um pod cRPD usando YAML

Um Pod é a unidade básica de execução de um aplicativo Kubernetes — a unidade menor e mais simples do modelo de objetos Kubernetes que você cria ou implanta. Um Pod representa uma unidade de implantação: uma única instância de um aplicativo no Kubernetes, que pode consistir em um único contêiner ou um pequeno número de contêineres que estão fortemente acoplados e que compartilham recursos. Docker é o tempo de execução de contêiner mais comum usado em um Pod Kubernetes.

Você pode criar diretamente um Pod ou indiretamente usando um controlador em Kubernetes. Um controlador pode criar e gerenciar vários Pods. Os controladores usam um modelo de Pod que você fornece para criar os Pods. Os modelos de pod são especificações do pod que estão incluídas em outros objetos, como Controladores de replicação, Jobs e DaemonSets.

Para criar o pod cRPD usando o arquivo YAML

  1. Crie o arquivo crpd.yaml no kubernetes-master adicione o seguinte conteúdo de texto:
  2. Reserve o arquivo crpd.yaml para criar o pod crpd.

    root@kubernetes-master:~# kubectl create -f crpd.yaml

  3. Execute o comando a seguir para ver a lista de Pods existentes:

    root@kubernetes-master:~# kubectl get pods

  4. Execute o comando a seguir para ver quais contêineres estão dentro desse Pod e quais imagens são usadas para construir os contêineres:

    root@kubernetes-master:~# kubectl describe pod crpd

  5. Execute o comando a seguir para fornecer uma CLI interativa dentro do contêiner em execução:

    root@kubernetes-master:~# kubectl exec -it crpd cliAqui você está executando um pod com o nome crpd e conecte-se ao modo de linha de comando.

  6. Execute o comando a seguir para ver as rotas:

    root@crpd:/> show route

Cada Pod deve executar uma única instância de um determinado aplicativo. Se você quiser dimensionar seu aplicativo horizontalmente (por exemplo, executar várias instâncias), você deve usar vários Pods, um para cada instância. Em Kubernetes, isso é geralmente referido como replicação.

Criação de um pod cRPD usando recurso de trabalho

Um trabalho cria um ou mais Pods e continuará a tentar novamente a execução dos Pods até que um número especificado deles termine com sucesso. Quando um número especificado de conclusões bem-sucedidas é alcançado, a tarefa é concluída. Você também pode usar um Trabalho para executar vários Pods em paralelo. Excluir um trabalho limpará os Pods que ele criou. A suspensão de um trabalho excluirá seus Pods ativos até que o Trabalho seja retomado novamente. Para criar o cRPD Pod usando o arquivo crpd_job.yaml:

  1. Crie o arquivo crpd_job.yaml em nós de trabalho e adicione o seguinte conteúdo de texto:
  2. Reserve o arquivo crpd_job.yaml para criar o pod crpd.

    root@kubernetes-master:~# kubectl create -f crpd_job.yaml

  3. Execute o comando a seguir para ver a lista de Pods existentes:

    root@kubernetes-master:~# kubectl get pods

  4. Execute o comando a seguir para ver quais contêineres estão dentro desse Pod e quais imagens são usadas para construir os contêineres:

    root@kubernetes-master:~# kubectl describe job/crpdjob

Criação de um pod cRPD usando DaemonSet

A DaemonSet garante que todos (ou alguns) nós executem uma cópia de um Pod. À medida que os nós são adicionados ao cluster, os Pods são adicionados a eles. Como nós são removidos do cluster, esses Pods são lixo coletado. Excluir um DaemonSet limpará os Pods que ele criou.

Criação do pod cRPD usando o arquivo crpd_daemonset.yaml

  1. Crie o arquivo crpd_daemonset.yaml em nós de trabalho e adicione o seguinte conteúdo de texto:
  2. Reserve o arquivo da1.yaml para criar o pod crpd.

    root@kubernetes-master:~# kubectl create -f crpd_daemonset.yaml

  3. Execute o comando a seguir para ver a lista de Pods existentes:

    root@kubernetes-master:~# kubectl get pods

  4. Execute o comando a seguir para ver quais contêineres estão dentro desse Pod e quais imagens são usadas para construir os contêineres:

    root@kubernetes-master:~# kubectl describe pod crpd

    root@kubernetes-master:~# kubectl describe pod crpd-5fc4fd79df-xr8f5

Cada Pod deve executar uma única instância de um determinado aplicativo. Se você quiser dimensionar seu aplicativo horizontalmente (por exemplo, executar várias instâncias), você deve usar vários Pods, um para cada instância. Em Kubernetes, isso é geralmente referido como replicação.

Expansão do cRPD

Você pode criar várias instâncias de cRPD com base na demanda usando o –replicas parâmetro para o kubectl run comando. A implantação é um objeto que pode possuir e gerenciar seus ReplicaSets.

Devemos ter um pod existente antes da expansão.

Para aumentar a escala:

  1. Crie o Pod.

    root@kubernetes-master:~# kubectl create -f crpd_replicatset.yaml

  2. Crie o arquivo crpd_replicaSet.yaml no kubernetes-master adicione o seguinte conteúdo de texto:
  3. Execute o comando a seguir para ver os Pods:

    root@kubernetes-master:~# kubectl get pods

  4. Execute o comando a seguir para escalar a Implantação a 4 réplicas:

    root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=4

  5. Execute o seguinte comando para listar as implantações:

    root@kubernetes-master:~# kubectl get deployments

  6. Execute o comando a seguir para verificar o número de pods alterados:

    root@kubernetes-master:~# kubectl get pods -o wide

  7. Execute o comando a seguir para verificar os detalhes dos Pods:

    root@kubernetes-master:~# kubectl describe pods

Para reduzir a escala:

  1. Execute o comando a seguir para reduzir o Serviço para 2 réplicas:

    root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=2

  2. Execute o seguinte comando para listar as implantações:

    root@kubernetes-master:~# kubectl get deployments

  3. Execute o comando a seguir para listar o número de Pods. Você pode ver que os 2 Pods foram encerrados:

    root@kubernetes-master:~# kubectl get pods -o wide

Atualização contínua da implantação do cRPD

Você pode atualizar instâncias do Pod com novas versões. As atualizações de implantação permitem que a atualização das Implantações ocorra sem tempo de inatividade atualizando incrementalmente as instâncias de Pods com novas. Os novos Pods estão programados em Nós com recursos disponíveis. As atualizações de reversão promovem um aplicativo de um ambiente para outro com integração contínua e entrega contínua de aplicativos sem tempo de inatividade. No Kubernetes, as atualizações são versões e qualquer atualização de Implantação pode ser revertida para a versão estável anterior.

Atualizar a implantação do cRPD com uma nova imagem e preservar a configuração após a atualização:

  1. Crie o cRPD Pod.

    root@crpd-01:~# kubectl kubectl create -f crpd_deploy.yaml

  2. Crie o arquivo crpd_deploy.yaml no kubernetes-master adicione o seguinte conteúdo de texto:
  3. Execute o seguinte comando para listar as implantações:

    root@kubernetes-master:~# kubectl get deployments

  4. Execute o seguinte comando para listar os pods em execução:

    root@kubernetes-master:~# kubectl get pods

    root@kubernetes-master:~# kubectl get pods -o wide

  5. Execute o comando a seguir para visualizar a versão de imagem atual do cRPD:

    root@kubernetes-master:~# kubectl exec -it crpd-deploy4-674b4fcfb5-8xc5d -- cli

  6. Execute o comando a seguir para ver a versão atual da imagem:

    root@crpd-deploy4-674b4fcfb5-8xc5d> show version

  7. Execute o comando a seguir para atualizar a imagem do aplicativo para uma nova versão:

    root@crpd-deploy4-674b4fcfb5-8xc5d:~$ sudo kubectl edit deployment/crpd-deploy4

  8. Execute o comando a seguir para confirmar se a imagem está atualizada:

    root@crpd-deploy4-674b4fcfb5-8xc5d:~$ sudo kubectl rollout status deployment/crpd-deploy4

  9. Execute o comando a seguir para ver os Pods:

    root@crpd-deploy4-674b4fcfb5-8xc5d> kubectl get pods

  10. Execute o comando a seguir para ver a versão de imagem do cRPD:

    root@kubernetes-master:~$ sudo kubectl exec -it crpd-deploy4-6ff476994d-8z2kr -- bash

  11. Execute o comando a seguir para ver a versão atual da imagem:

    root@crpd-deploy4-6ff476994d-8z2kr> show version

Implantação do cRPD Pod com recursos alocados

Os pods fornecem dois tipos de recursos compartilhados, ou seja, redes e armazenamento para os contêineres. Quando contêineres em um Pod se comunicam com entidades fora do Pod, eles devem coordenar como usam os recursos de rede compartilhados (como portas). Dentro de um Pod, os contêineres se comunicam usando localhostum endereço IP e uma porta.

Os contêineres dentro do Pod veem o nome de host do sistema da mesma forma que o configurado name para o Pod.

Qualquer contêiner em um Pod pode habilitar o modo privilegiado, usando a privileged bandeira na especificação do contêiner. Isso é útil para contêineres que usam recursos administrativos do sistema operacional, como manipular a pilha de rede ou acessar dispositivos de hardware. Os processos dentro de um contêiner privilegiado recebem quase os mesmos privilégios que estão disponíveis para processos fora de um contêiner.

Para ver a implantação do Pod com recursos:

  1. Crie o arquivo crpd_res.yaml no kubernetes-master adicione o seguinte conteúdo de texto:
  2. Reserve o arquivo crpd_res.yaml para criar o pod crpd.

    root@kubernetes-master:~# kubectl create -f crpd_res.yaml

  3. Execute o comando a seguir para ver a lista de Pods existentes:

    root@kubernetes-master:~# kubectl get pods

  4. Execute o comando a seguir para ver quais contêineres estão dentro desse Pod e quais imagens são usadas para construir os contêineres:

    root@kubernetes-master:~# kubectl describe pod crpres

Implantação do cRPD Pod usando volume montado

Um emptyDir é um dos vários tipos de volumes suportados no K8s e é criado pela primeira vez quando um Pod é atribuído a um nó, e existe enquanto esse Pod estiver sendo executado nesse nó. Como o nome diz, o emptyDir volume está inicialmente vazio. Todos os contêineres no Pod podem ler e escrever os mesmos arquivos no emptyDir volume, embora esse volume possa ser montado nos mesmos caminhos ou caminhos diferentes em cada contêiner. Quando um Pod é removido de um nó por qualquer motivo, os dados no emptyDir é excluído permanentemente.

Para ver a implantação do cRPD Pod, montando o caminho de armazenamento em Kubernetes:

  1. Crie o arquivo crpd_volume.yaml no kubernetes-master adicione o seguinte conteúdo de texto:
  2. Reserve o arquivo crpd_volume.yaml para criar o pod crpd.

    root@kubernetes-master:~# kubectl create -f crpd_volume.yaml

  3. Execute o comando a seguir para ver a lista de Pods existentes:

    root@kubernetes-master:~# kubectl get pods

  4. Execute o comando a seguir para ver quais contêineres estão dentro desse Pod e quais imagens são usadas para construir os contêineres:

    root@kubernetes-master:~# kubectl describe pod crpd-volume

  5. Execute o comando a seguir para executar a instância cRPD:

    root@kubernetes-master:~# kubectl exec -it crpd-volume bash

  6. Execute o comando a seguir para visualizar os arquivos no caminho:

    root@crpd-volume:/# ls

  7. Execute o comando a seguir para navegar até o caminho de armazenamento:

    root@crpd-volume:/# cd var/log/crpd-storage/

    root@crpd-volume:/var/log/crpd-storage/#