4.2. Gerenciar clusters Kubernetes¶
Os usuários de autoatendimento podem implantar clusters Kubernetes prontos para uso com armazenamento persistente para gerenciar aplicativos em contêiner.
Os pré-requisitos para criar um cluster Kubernetes são:
- O componente Kubernetes como serviço. Ele pode ser implantado junto com o cluster de computação ou posterior (consulte Creating the Compute Cluster ou Managing Add-On Services).
- Uma rede que interconectará os nós mestre e de trabalho do Kubernetes. Pode ser uma rede pública compartilhada ou uma rede privada vinculada a uma rede pública por meio de um roteador virtual. A rede privada precisa ter um gateway e um servidor DNS especificados.
- Uma chave SSH que será instalada nos nós mestre e de trabalho.
- Recursos suficientes para todos os nós do Kubernetes, levando em consideração suas variantes.
Importante
Também é necessário que a rede em que você cria um cluster de Kubernetes não se sobreponha a essas redes padrão:
- 10.100.0.0/24—usada para rede de nível de pod
- 10.254.0.0/16—usada para alocar endereços de IP de cluster de Kubernetes
Para criar um cluster Kubernetes, na tela Clusters Kubernetes, clique em Criar à direita. Será aberta uma janela onde você poderá definir os parâmetros do cluster:
Na seção Cluster, selecione uma versão do Kubernetes, insira um nome de cluster e selecione uma chave SSH.
Na seção Rede, selecione um roteador virtual mencionado nos pré-requisitos acima. Também é recomendável marcar a caixa Usar um endereço IP flutuante. Nesse caso, os nós do Kubernetes receberão endereços IP públicos, simplificando o acesso a eles.
Na seção Nó mestre, selecione um tipo e escolha se deseja ou não ativar a alta disponibilidade para o nó principal. Se você ativar a alta disponibilidade, três instâncias do nó mestre serão criadas. Elas funcionarão no modo Ativo/Ativo.
Na seção Volume do contêiner, selecione uma política de armazenamento e insira o tamanho dos volumes nos nós mestre e de trabalho.
Na seção Trabalhadores, defina um número de trabalhadores para criar e selecionar um sabor para cada trabalhador.
Por fim, clique em Criar.
A criação do cluster Kubernetes será iniciada. Os nós mestre e trabalhadores aparecerão na tela Máquinas virtuais, enquanto seus volumes aparecerão na tela Volumes.
Finalizada a criação do cluster, clique em Acesso às Kubernetes para obter instruções sobre como acessar o painel.
Para excluir um cluster Kubernetes, clique nele na tela Clusters Kubernetes e clique em Excluir. As VMs mestre e de trabalho serão excluídas junto com seus volumes.
4.2.1. Usando volumes persistentes para pods de Kubernetes¶
Os Kubernetes permitem o uso de volumes de computação como armazenamento persistente para pods. Os PVs (volumes persistentes) existem independente dos pods, o que significa que tais volumes persistem depois do pod montado ser excluído. Esse PV pode ser montado em outros pods para que os dados armazenados nele possam ser acessados. Você pode provisionar PVs dinamicamente, sem precisar criá-los manual ou estaticamente, usando volumes existentes no cluster de computação.
4.2.1.1. Criar classes de armazenamento¶
Em Acronis Cyber Infrastructure, mapeie as classes de armazenamento para calcular as políticas de armazenamento definidas no painel do administrador. É necessário criar uma classe de armazenamento para todas as operações de armazenamento em um cluster do Kubernetes.
Para criar uma classe de armazenamento, clique em + CRIAR no painel do Kubernetes e especifique um arquivo YAML que defina esse objeto. Por exemplo:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: mysc
provisioner: csi-cinderplugin
parameters:
type: default
Esse manifesto descreve a classe de armazenamento mysc
com uma política de armazenamento padrão
. A política de armazenamento deve existir no cluster de computação e ser especificada nas cotas de armazenamento para o projeto atual.
4.2.1.2. Provisionamento dinâmico de volumes persistentes¶
Os volumes persistentes podem ser provisionados dinamicamente através de PVC (solicitações de volume persistente). Uma PVC reivindica um PV de um tamanho, modo de acesso e classe de armazenamento específicos. Se um PV adequado existir no cluster, ele será vinculado à solicitação. Se os PVs adequados não existirem, mas puderem ser provisionados, um novo volume é criado e vinculado à solicitação. Os Kubernetes usam uma PVC para obter o PV que a dá suporte e o monta no pod.
Importante
Um pod e a solicitação de volume persistente que ele usa devem existir no mesmo namespace.
Você pode provisionar um PV dinamicamente para um pod fazendo o que segue:
Acesse o cluster de Kubernetes através do painel. Clique em Acesso a Kubernetes para obter instruções.
No painel do Kubernetes, crie uma classe de armazenamento conforme descrito em Criar classes de armazenamento.
Criar uma solicitação de volume persistente. Para fazer isso, clique em + CRIAR e especifique o seguinte arquivo YAML:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mypvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: mysc
Esse manifesto especifica a solicitação de volume persistente
mypvc
, que solicita da classe de armazenamentomysc
um volume de pelo menos 10 GiB que pode ser montado no modo de leitura/gravação por um único nó.Criação de PVC aciona o provisionamento dinâmico de um volume persistente que atenda aos requisitos da solicitação. Então, o Kubernetes vincula-o à solicitação.
Criar um pod e especificar a PVC como seu volume. Para fazer isso, clique em + CRIAR e digite o seguinte arquivo YAML:
apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - image: nginx imagePullPolicy: IfNotPresent name: nginx ports: - containerPort: 80 protocol: TCP volumeMounts: - mountPath: /var/lib/www/html name: mydisk volumes: - name: mydisk persistentVolumeClaim: claimName: mypvc readOnly: false
Esse arquivo de configuração descreve o pod
nginx
que usa a solicitação de volume persistentemypvc
. O volume persistente vinculado à solicitação será acessível em/var/lib/www/html
dentro do contêinernginx
.
4.2.1.3. Provisionamento estático de volumes persistentes¶
Você pode montar volumes de computação existentes em pods usando provisionamento estático de volumes persistentes. Para montar um volume de computação, faça o seguinte:
No painel de autoatendimento, obtenha o ID do volume desejado.
Acesse o cluster de Kubernetes através do painel. Clique em Acesso a Kubernetes para obter instruções.
No painel do Kubernetes, crie uma classe de armazenamento conforme descrito em Criar classes de armazenamento.
Crie um volume persistente. Para fazer isso, clique em + CRIAR e especifique o seguinte arquivo YAML:
apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: csi-cinderplugin name: mypv spec: accessModes: - ReadWriteOnce capacity: storage: 10Gi csi: driver: cinder.csi.openstack.org fsType: ext4 volumeHandle: c5850e42-4f9d-42b5-9bee-8809dedae424 persistentVolumeReclaimPolicy: Delete storageClassName: mysc
Esse manifesto especifica o volume persistente
mypv
a partir da classe de armazenamentomysc
que possui 10 GiB de armazenamento e um modo de acesso que permite ser montado no modo de leitura/gravação por um único nó. O PVmypv
usa p volume de computação com a IDc5850e42-4f9d-42b5-9bee-8809dedae424
como armazenamento de suporte.Criar uma solicitação de volume persistente. Antes de definir a PVC, certifique-se de que o PV foi criado e tem o status de “Disponível”. O PV existente deve atender aos requisitos da solicitação referentes a classe de armazenamento, modo de acesso e tamanho de armazenamento. Clique em + CRIAR e especifique o seguinte arquivo YAML:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mypvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: mysc
Quando a solicitação de volume persistente
mypvc
for criada, o volumemypv
é vinculado a ela.Criar um pod e especificar a PVC como seu volume. Use o exemplo da Etapa 3 em Provisionamento dinâmico de volumes persistentes.
No painel de autoatendimento, o volume de computação será montado na máquina virtual executando o pod do Kubernetes.
4.2.2. Criar balanceadores de carga externos no Kubernetes¶
No Kubernetes, você pode criar um serviço com um balanceador de carga externo que fornece acesso a ele a partir de redes públicas. O balanceador de carga receberá um endereço IP acessível ao público e encaminhará as solicitações de entrada para a porta correta nos nós do cluster de Kubernetes.
Para criar um serviço com um balanceador de carga externo, faça o seguinte:
Acesse o cluster de Kubernetes através do painel. Clique em Acesso a Kubernetes para obter instruções.
No painel do Kubernetes, crie uma implantação e o serviço do tipo
LoadBalancer
(balanceador de carga). Para fazer isso, clique em + CRIAR e especifique um arquivo YAML que defina esses objetos. Por exemplo:Se você implantou o cluster de Kubernetes em uma rede pública compartilhada, especifique o seguinte manifesto:
apiVersion: apps/v1beta1 kind: Deployment metadata: name: nginx spec: replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 --- kind: Service apiVersion: v1 metadata: name: load-balancer annotations: service.beta.kubernetes.io/openstack-internal-load-balancer: "true" spec: selector: app: nginx type: LoadBalancer ports: - port: 80 targetPort: 80 protocol: TCP
O manifesto acima descreve a implantação
nginx
com um conjunto de réplicas de dois pods e o serviçoload-balancer
com o tipoLoadBalancer
. A anotação usada para o serviço indica que o balanceador de carga será interno.Depois que o balanceador de carga for criado, ele receberá um endereço IP da rede pública compartilhada e poderá ser acessado nesse ponto de extremidade externo.
Se você implantou o cluster de Kubernetes em uma rede privada vinculada a uma pública por meio de um roteador virtual, poderá usar o arquivo YAML acima sem a seção
anotações
para o serviçoload-balancer
. O balanceador de carga criado receberá um endereço IP flutuante da rede pública e poderá ser acessado nesse ponto de extremidade externo.
O balanceador de carga também aparecerá no painel de autoatendimento, no qual você pode monitorar seu desempenho e integridade. Por exemplo:
