Implante o armazenamento distribuído do CEPH e conecte-o ao Kubernetes


Parte 1 Implementamos o ambiente para trabalhar com microsserviços. Parte 1 instalando o Kubernetes HA no bare metal (Debian)


Olá, queridos leitores da Habr!


Em uma postagem anterior , falei sobre como implantar um cluster de failover do Kubernetes. Mas o fato é que no Kubernetes é conveniente implantar aplicativos sem estado que não precisam manter seu estado ou trabalhar com dados. Mas, na maioria dos casos, precisamos salvar os dados e não perdê-los ao reiniciar os lares.
O Kubernetes usa volumes para esses fins. Quando trabalhamos com as soluções em nuvem Kubernetes, não há problemas específicos. Só precisamos solicitar o volume necessário do Google, Amazon ou outro provedor de nuvem e, guiados pela documentação , conectar os volumes recebidos aos pods.
Quando lidamos com o bare metal, as coisas são um pouco mais complicadas. Hoje eu quero falar sobre uma das soluções baseadas no uso do ceph.


Nesta publicação, direi:


  • como implantar armazenamento distribuído ceph
  • Como usar o Ceph ao trabalhar com o Kubernetes

1. Introdução


Para começar, gostaria de explicar a quem este artigo será útil. Em primeiro lugar, para os leitores que implantaram o cluster de acordo com minha primeira publicação para continuar a construir uma arquitetura de microsserviço. Em segundo lugar, para as pessoas que desejam tentar implantar um cluster ceph por conta própria e avaliar seu desempenho.


Nesta publicação, não abordarei o tópico planejamento de cluster para nenhuma necessidade; falarei apenas sobre princípios e conceitos gerais. Não vou me aprofundar em "tuning" e deep tuning, existem muitas publicações sobre esse assunto, inclusive no Habr. O artigo será de natureza mais introdutória, mas, ao mesmo tempo, permitirá que você obtenha uma solução funcional que possa se adaptar às suas necessidades no futuro.


  1. Lista de hosts, recursos de host, versões de SO e software
  2. Estrutura do Cluster Ceph
  3. Configurar nós do cluster antes da instalação
  4. Instalar ceph-deploy
  5. Criando um cluster ceph
  6. Configuração de rede
  7. Instale pacotes ceph
  8. Instalação e inicialização de monitores
  9. Adicionando OSD
  10. Conectar ceph ao kubernetes
  11. Criando um pool de dados
  12. Criando um segredo do cliente
  13. Implantar ceph rbd provisioner
  14. Criando uma classe de armazenamento
  15. Teste de ligamentos de Kubernetes + ceph
  16. Lista de materiais utilizados na preparação do artigo


Lista de hosts e requisitos do sistema


NomeEndereço IPComente
ceph01-test10.73.88.52ceph-node01
ceph02-test10.73.88.53ceph-node02
ceph03-test10.73.88.54ceph-node03

Ao escrever um artigo, eu uso máquinas virtuais com esta configuração



Cada um possui um sistema operacional Debian 9.5 instalado. São máquinas de teste, cada uma com dois discos, o primeiro para o sistema operacional e o segundo para o OSD Cef


Implementarei o cluster por meio do utilitário ceph-deploy. Você pode implantar um cluster ceph no modo manual, todas as etapas estão descritas na documentação, mas o objetivo deste artigo é informar com que rapidez você pode implantar o ceph e começar a usá-lo no kubernetes.
Ceph é bastante guloso para recursos, especialmente RAM. Para uma boa velocidade, é aconselhável usar unidades ssd.


Você pode ler mais sobre os requisitos na documentação oficial do ceph.



Estrutura do Cluster Ceph


MON
Um monitor é um daemon que atua como o coordenador a partir do qual o cluster começa. Assim que temos pelo menos um monitor em funcionamento, temos um cluster Ceph. O monitor armazena informações sobre a saúde e as condições do cluster trocando vários cartões com outros monitores. Os clientes recorrem aos monitores para descobrir em qual OSD gravar / ler dados. Quando você implanta um novo armazenamento, a primeira coisa a fazer é criar um monitor (ou vários). O cluster pode viver em um monitor, mas é recomendável criar 3 ou 5 monitores para evitar a queda de todo o sistema devido à queda de um único monitor. O principal é que o número destes deve ser ímpar, a fim de evitar situações de cérebro dividido. Os monitores funcionam em um quorum; portanto, se mais da metade dos monitores cair, o cluster será bloqueado para evitar inconsistência de dados.
Mons.
O daemon do Ceph Manager trabalha com o daemon de monitor para fornecer controle adicional.
Desde a versão 12.x, o daemon ceph-mgr tornou-se necessário para a operação normal.
Se o daemon mgr não estiver em execução, você verá um aviso sobre isso.
OSD (dispositivo de armazenamento de objeto)
OSD é uma unidade de armazenamento que armazena os dados em si e processa solicitações de clientes trocando dados com outros OSDs. Isso geralmente é um disco. E geralmente para cada OSD, existe um daemon OSD separado que pode ser executado em qualquer máquina na qual esse disco está instalado.


Todos os três daemons funcionarão em cada máquina em nosso cluster. Assim, monitore e gerencie os daemons como daemons de serviço e OSD para uma unidade de nossa máquina virtual.



Configurar nós do cluster antes da instalação


A documentação do ceph especifica o seguinte fluxo de trabalho:



Trabalharei a partir do primeiro nó do cluster ceph01-test, será o Nó Admin, também conterá arquivos de configuração para o utilitário ceph-deploy. Para que o utilitário ceph-deploy funcione corretamente, todos os nós do cluster devem estar acessíveis via ssh com o nó Admin. Por conveniência, escreverei nos nomes abreviados dos hosts do cluster


10.73.88.52 ceph01-test 10.73.88.53 ceph02-test 10.73.88.54 ceph03-tset 

E copie as chaves para os outros hosts. Todos os comandos que executarei a partir do root.


 ssh-copy-id ceph02-test ssh-copy-id ceph03-test 

Documentação de instalação


ceph-deploy

Instalar ceph-deploy


A primeira etapa é instalar o ceph-deploy na máquina ceph01-test


 wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add - 

Em seguida, você precisa escolher o lançamento que deseja colocar. Mas aqui existem dificuldades, atualmente o ceph para o Debian OS suporta apenas pacotes luminosos.
Se você deseja publicar uma versão mais recente, precisará usar um espelho, por exemplo
https://mirror.croit.io/debian-mimic/dists/


Adicione um repositório com imitação nos três nós


 apt install curl apt-transport-https -y curl https://mirror.croit.io/keys/release.gpg > /usr/share/keyrings/croit-signing-key.gpg echo 'deb [signed-by=/usr/share/keyrings/croit-signing-key.gpg] https://mirror.croit.io/debian-mimic/ stretch main' > /etc/apt/sources.list.d/croit-ceph.list apt update apt install ceph-deploy 

Se luminous é o suficiente para você, você pode usar os repositórios oficiais


 echo deb https://download.ceph.com/debian-luminous/ $(lsb_release -sc) main | tee /etc/apt/sources.list.d/ceph.list apt-transport-https apt update apt install ceph-deploy 

Também instalamos o NTP nos três nós.


uma vez que esta recomendação está na documentação do ceph

Recomendamos instalar o NTP nos nós Ceph (especialmente nos nós Ceph Monitor) para evitar problemas decorrentes do desvio do relógio.


 apt install ntp 

Certifique-se de ativar o serviço NTP. Certifique-se de que cada nó Ceph use o mesmo servidor NTP. Você pode ver mais detalhes aqui



Criando um cluster ceph


Crie um diretório para arquivos de configuração e arquivos ceph-deploy


 mkdir my-cluster cd my-cluster 

Vamos criar uma nova configuração de cluster, ao criar, indicar que haverá três monitores em nosso cluster


 ceph-deploy new ceph01-test ceph02-test ceph03-test 


Configuração de rede


Agora o ponto importante, é hora de falar sobre a rede para ceph. O Ceph usa duas redes públicas e uma rede de cluster para trabalhar


Como você pode ver no diagrama da rede pública, esse é o nível do usuário e do aplicativo, e a rede de cluster é a rede através da qual os dados são replicados.
É altamente desejável separar essas duas redes uma da outra. Além disso, a rede de cluster de velocidade da rede é desejável pelo menos 10 Gb.
Obviamente, você pode manter tudo na mesma rede. Mas isso é preocupante porque, assim que o volume de replicação entre OSDs aumenta, por exemplo, quando novos OSDs (discos) caem ou são adicionados, a carga da rede MUITO aumenta. Portanto, a velocidade e a estabilidade da sua infraestrutura dependerão muito da rede usada pelo ceph.
Infelizmente, meu cluster de virtualização não possui uma rede separada e usarei um segmento de rede comum.
A configuração de rede para o cluster é feita através do arquivo de configuração, que geramos com o comando anterior.


 /my-cluster# cat ceph.conf [global] fsid = 2e0d92b0-e803-475e-9060-0871b63b6e7f mon_initial_members = ceph01-test, ceph02-test, ceph03-test mon_host = 10.73.88.52,10.73.88.53,10.73.88.54 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx 

Como podemos ver, o cef deploy não criou as configurações de rede padrão para nós, então adicionarei o parâmetro public network = {public-network / netmask} à seção global da configuração. Minha rede é 10.73.0.0/16, então, depois de adicionar minha configuração, será assim


 [global] fsid = 2e0d92b0-e803-475e-9060-0871b63b6e7f mon_initial_members = ceph01-test, ceph02-test, ceph03-test mon_host = 10.73.88.52,10.73.88.53,10.73.88.54 public network = 10.73.0.0/16 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx 

Se você deseja separar a rede do cluster de pública, adicione o parâmetro cluster network = {cluster-network / netmask}
Você pode ler mais sobre redes na documentação.



Instale pacotes ceph


Usando ceph-deploy, instalamos todos os pacotes ceph necessários em nossos três nós.
Para fazer isso, em ceph01-test, execute
Se a versão for simulada, então


 ceph-deploy install --release mimic ceph01-test ceph02-test ceph03-test 

Se a versão for luminosa, então


 ceph-deploy install --release luminous ceph01-test ceph02-test ceph03-test 

E espere até que tudo esteja estabelecido.



Instalação e inicialização de monitores


Após a instalação de todos os pacotes, criaremos e iniciaremos os monitores do nosso cluster.
C ceph01-test faça o seguinte


 ceph-deploy mon create-initial 

Os monitores serão criados no processo, os daemons serão lançados e o ceph-deploy verificará o quorum.
Agora espalhe as configurações nos nós do cluster.


 ceph-deploy admin ceph01-test ceph02-test ceph03-test 

E verifique o status do nosso cluster, se você fez tudo corretamente, o status deve ser
HEALTH_OK


 ~/my-cluster# ceph status cluster: id: 2e0d92b0-e803-475e-9060-0871b63b6e7f health: HEALTH_OK services: mon: 3 daemons, quorum ceph01-test,ceph02-test,ceph03-test mgr: no daemons active osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs: 

Criar gerente


 ceph-deploy mgr create ceph01-test ceph02-test ceph03-test 

E verifique o status novamente


 ceph -s 

Uma linha deve aparecer


 mgr: ceph01-test(active), standbys: ceph02-test, ceph03-test 

Escrevemos a configuração para todos os hosts no cluster


 ceph-deploy admin ceph01-test ceph02-test ceph03-test 


Adicionando OSD


No momento, temos um cluster em funcionamento, mas ele ainda não possui discos (osd na terminologia ceph) para armazenar informações.


OSD pode ser adicionado com o seguinte comando (visão geral)


 ceph-deploy osd create --data {device} {ceph-node} 

Na minha mesa de teste, o disco / dev / sdb é alocado no osd, portanto, no meu caso, os comandos serão os seguintes


 ceph-deploy osd create --data /dev/sdb ceph01-test ceph-deploy osd create --data /dev/sdb ceph02-test ceph-deploy osd create --data /dev/sdb ceph03-test 

Verifique se todos os OSDs estão funcionando.


 ceph -s 

Conclusão


  cluster: id: 2e0d92b0-e803-475e-9060-0871b63b6e7f health: HEALTH_OK services: mon: 3 daemons, quorum ceph01-test,ceph02-test,ceph03-test mgr: ceph01-test(active) osd: 3 osds: 3 up, 3 in 

Você também pode tentar alguns comandos úteis para OSD.


 ceph osd df ID CLASS WEIGHT REWEIGHT SIZE USE AVAIL %USE VAR PGS 0 hdd 0.00490 1.00000 5.0 GiB 1.0 GiB 4.0 GiB 20.05 1.00 0 1 hdd 0.00490 1.00000 5.0 GiB 1.0 GiB 4.0 GiB 20.05 1.00 0 2 hdd 0.00490 1.00000 5.0 GiB 1.0 GiB 4.0 GiB 20.05 1.00 0 TOTAL 15 GiB 3.0 GiB 12 GiB 20.05 

e


 ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.01469 root default -3 0.00490 host ceph01-test 0 hdd 0.00490 osd.0 up 1.00000 1.00000 -5 0.00490 host ceph02-test 1 hdd 0.00490 osd.1 up 1.00000 1.00000 -7 0.00490 host ceph03-test 2 hdd 0.00490 osd.2 up 1.00000 1.00000 

Se estiver tudo bem, temos um cluster ceph em funcionamento. Na próxima parte, mostrarei como usar o ceph com o kubernetes



Conectar ceph ao kubernetes


Infelizmente, não poderei descrever em detalhes a operação dos volumes Kubernetes neste artigo; portanto, tentarei caber em um parágrafo.
O Kubernetes usa classes de armazenamento para trabalhar com volumes de dados, cada classe de armazenamento possui seu próprio provedor, você pode considerá-lo como um tipo de "driver" para trabalhar com diferentes volumes de armazenamento de dados. A lista completa que suporta kubernetes pode ser encontrada na documentação oficial .
O próprio Kubernetes também tem suporte para trabalhar com rbd, mas não há nenhum cliente rbd instalado na imagem oficial do kube-controller-manager, portanto, você precisa usar uma imagem diferente.
Também deve ser observado que os volumes (pvc) criados como rbd só podem ser ReadWriteOnce (RWO) e, o que significa que você pode montar o volume criado SOMENTE em um coração.


Para que nosso cluster possa trabalhar com volumes ceph, precisamos:
em um cluster Ceph:


  • criar conjunto de dados no cluster ceph
  • criar um cliente e chave de acesso ao conjunto de dados
  • obter ceph admin secret

Para que nosso cluster possa trabalhar com volumes ceph, precisamos:
em um cluster Ceph:


  • criar conjunto de dados no cluster ceph
  • criar um cliente e chave de acesso ao conjunto de dados
  • obter ceph admin secret

no cluster Kubernetes:


  • criar ceph admin secret e ceph client key
  • instale o ceph rbd provisioner ou altere a imagem do kube-controller-manager para uma imagem que suporte rbd
  • criar segredo com a chave do cliente ceph
  • criar classe de armazenamento
  • instalar ceph-common nas notas do trabalhador do kubernetes


Criando um pool de dados


No cluster ceph, crie um pool para os volumes kubernetes


 ceph osd pool create kube 8 8 

Aqui vou fazer uma pequena explicação, os números 8 8 no final são os números de pg e pgs. Esses valores dependem do tamanho do seu cluster ceph. Existem calculadoras especiais que calculam a quantidade de páginas e páginas, por exemplo, oficiais do ceph
Para começar, recomendo deixá-lo por padrão, se no futuro esse valor puder ser aumentado (só pode ser reduzido com a versão do Nautilus).



Criando um cliente para um conjunto de dados


Crie um cliente para o novo pool


 ceph auth add client.kube mon 'allow r' osd 'allow rwx pool=kube' 

Receberemos uma chave para o cliente, no futuro precisaremos dela para criar um kubernetes secreto


 ceph auth get-key client.kube AQDd5aldka5KJRAAkpWTQYUMQi+5dfGDqSyxkg== 

Obtendo a chave do administrador


E obtenha a chave de administrador


 ceph auth get client.admin 2>&1 |grep "key = " |awk '{print $3'} AQAv+Itdx4DwKBAAKVhWRS3+eEPqV3Xrnlg9KA== 

No cluster ceph, todo o trabalho está concluído e agora precisamos ir para uma máquina que tenha acesso ao cluster kubernetes
Trabalharei com o master01-test (10.73.71.25) do cluster implantado por mim na primeira publicação.



Criando um segredo do cliente


Crie um arquivo com o token do cliente que recebemos (não esqueça de substituí-lo pelo seu token)


 echo AQDd5aldka5KJRAAkpWTQYUMQi+5dfGDqSyxkg== > /tmp/key.client 

E crie um segredo que usaremos no futuro


 kubectl create secret generic ceph-secret --from-file=/tmp/key.client --namespace=kube-system --type=kubernetes.io/rbd 

Criar segredo do administrador


Crie um arquivo com token de administrador (não esqueça de substituí-lo pelo seu token)


 echo AQAv+Itdx4DwKBAAKVhWRS3+eEPqV3Xrnlg9KA== > /tmp/key.admin 

Depois disso, crie um segredo de administrador


 kubectl create secret generic ceph-admin-secret --from-file=/tmp/key.admin --namespace=kube-system --type=kubernetes.io/rbd 

Verifique se os segredos foram criados


 kubectl get secret -n kube-system | grep ceph ceph-admin-secret kubernetes.io/rbd 1 8m31s ceph-secret kubernetes.io/rbd 1 7m32s 


Método primeiro implantar ceph rbd provisioner


Nós clonamos o repositório kubernetes-incubator / external-storage do github, ele tem tudo o que você precisa para fazer o kubernetes agrupar amigos do repositório ceph.


 git clone https://github.com/kubernetes-incubator/external-storage.git cd external-storage/ceph/rbd/deploy/ NAMESPACE=kube-system sed -r -i "s/namespace: [^ ]+/namespace: $NAMESPACE/g" ./rbac/clusterrolebinding.yaml ./rbac/rolebinding.yaml 

 kubectl -n $NAMESPACE apply -f ./rbac 

Conclusão


 clusterrole.rbac.authorization.k8s.io/rbd-provisioner created clusterrolebinding.rbac.authorization.k8s.io/rbd-provisioner created deployment.extensions/rbd-provisioner created role.rbac.authorization.k8s.io/rbd-provisioner created rolebinding.rbac.authorization.k8s.io/rbd-provisioner created serviceaccount/rbd-provisioner created 

Método 2: Substitua a imagem do kube-controller-manager


Não há suporte rbd na imagem oficial do kube-controller-manager, portanto, precisaremos alterar a imagem do controller-manager.
Para fazer isso, em cada um dos assistentes do Kubernetes, você precisa editar o arquivo kube-controller-manager.yaml e substituir a imagem por gcr.io/google_containers/hyperkube:v1.15.2. Preste atenção na versão da imagem que deve corresponder à sua versão do cluster Kubernetes.


 vim /etc/kubernetes/manifests/kube-controller-manager.yaml 

Depois disso, você precisará reiniciar o kube-controller-manager


 ubectl get pods -A | grep manager kube-system kube-controller-manager-master01-test 1/1 Running 0 5m54s kube-system kube-controller-manager-master02-test 1/1 Running 0 5m54s kube-system kube-controller-manager-master03-test 1/1 Running 9111 103d 

Os pods devem ser atualizados automaticamente, mas, por algum motivo, isso não aconteceu, você pode recriá-los manualmente, através da exclusão.


 kubectl delete pod -n kube-system kube-controller-manager-master01-test kubectl delete pod -n kube-system kube-controller-manager-master02-test kubectl delete pod -n kube-system kube-controller-manager-master03-test 

Verifique se está tudo bem


 kubectl describe pod -n kube-system kube-controller-manager-master02-test | grep Image: Image: gcr.io/google_containers/hyperkube:v1.15.2 

-



Criando uma classe de armazenamento


Método um - se você usou o provisionador ceph.com/rbd
Crie um arquivo yaml com uma descrição da nossa classe de armazenamento. Além disso, todos os arquivos usados ​​abaixo podem ser baixados no meu repositório no diretório ceph


 cat <<EOF >./storage-class.yaml kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: ceph-rbd provisioner: ceph.com/rbd parameters: monitors: 10.73.88.52:6789, 10.73.88.53:6789, 10.73.88.54:6789 pool: kube adminId: admin adminSecretNamespace: kube-system adminSecretName: ceph-admin-secret userId: kube userSecretNamespace: kube-system userSecretName: ceph-secret imageFormat: "2" imageFeatures: layering EOF 

E incorporá-lo em nosso cluster


 kubectl apply -f storage-class.yaml 

Verifique se está tudo bem


 kubectl get sc NAME PROVISIONER AGE ceph-rbd ceph.com/rbd 7s 

Método dois - se você usou o provisionador kubernetes.io/rbd
Criar classe de armazenamento


 cat <<EOF >./storage-class-hyperkube.yaml kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: ceph-rbd provisioner: kubernetes.io/rbd allowVolumeExpansion: true parameters: monitors: 10.73.88.52:6789, 10.73.88.53:6789, 10.73.88.54:6789 pool: kube adminId: admin adminSecretNamespace: kube-system adminSecretName: ceph-admin-secret userId: kube userSecretNamespace: kube-system userSecretName: ceph-secret imageFormat: "2" imageFeatures: layering EOF 

E incorporá-lo em nosso cluster


 kubectl apply -f storage-class-hyperkube.yaml storageclass.storage.k8s.io/ceph-rbd created 

Verifique se está tudo bem


 kubectl get sc NAME PROVISIONER AGE ceph-rbd kubernetes.io/rbd 107s 


Teste de ligamentos de Kubernetes + ceph


Antes de testar o ceph + kubernetes, você deve instalar o pacote ceph-common em TODOS os códigos de trabalho do cluster.


 apt install curl apt-transport-https -y curl https://mirror.croit.io/keys/release.gpg > /usr/share/keyrings/croit-signing-key.gpg echo 'deb [signed-by=/usr/share/keyrings/croit-signing-key.gpg] https://mirror.croit.io/debian-mimic/ stretch main' > /etc/apt/sources.list.d/croit-ceph.list apt update apt install ceph-common 

Crie um arquivo yaml PersistentVolumeClaim


 cat <<EOF >./claim.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: claim1 spec: accessModes: - ReadWriteOnce storageClassName: ceph-rbd resources: requests: storage: 1Gi EOF 

Mate ele


 kubectl apply -f claim.yaml 

Verifique se PersistentVolumeClaim está criado.


 bectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE claim1 Bound pvc-d1e47825-289c-4201-acb8-033e62a3fe81 1Gi RWO ceph-rbd 44m 

E também criou automaticamente o PersistentVolume.


 kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-d1e47825-289c-4201-acb8-033e62a3fe81 1Gi RWO Delete Bound default/claim1 ceph-rbd 37m 

Vamos criar um pod de teste no qual incluímos o pvc criado no diretório / mnt. Execute este arquivo /mnt/test.txt com o texto "Hello World!"


 cat <<EOF >./create-file-pod.yaml kind: Pod apiVersion: v1 metadata: name: create-file-pod spec: containers: - name: test-pod image: gcr.io/google_containers/busybox:1.24 command: - "/bin/sh" args: - "-c" - "echo Hello world! > /mnt/test.txt && exit 0 || exit 1" volumeMounts: - name: pvc mountPath: "/mnt" restartPolicy: "Never" volumes: - name: pvc persistentVolumeClaim: claimName: claim1 EOF 

Vamos matá-lo e verificar se ele completou sua tarefa


 kubectl apply -f create-file-pod.yaml kubectl get pods -w 

Vamos esperar pelo status


 create-file-pod 0/1 Completed 0 16s 

Vamos criar outro, conecte nosso volume a ele, mas já em / mnt / test, e depois verifique se o arquivo criado pelo primeiro volume está no lugar


 cat <<EOF >./test-pod.yaml kind: Pod apiVersion: v1 metadata: name: test-pod spec: containers: - name: test-pod image: gcr.io/google_containers/busybox:1.24 command: - "/bin/sh" args: - "-c" - "sleep 600" volumeMounts: - name: pvc mountPath: "/mnt/test" restartPolicy: "Never" volumes: - name: pvc persistentVolumeClaim: claimName: claim1 EOF 

Execute o kubectl get po -w e aguarde até que o pod esteja em execução
Depois disso, vamos examinar e verificar se o volume está conectado e nosso arquivo no diretório / mnt / test


 kubectl exec test-pod -ti sh cat /mnt/test/test.txt Helo world! 

Obrigado por ler até o fim. Desculpe pelo atraso na postagem.
Estou pronto para responder a todas as perguntas em mensagens pessoais ou nas redes sociais indicadas no meu perfil.
Na próxima publicação pequena, mostrarei como implantar o armazenamento S3 com base no cluster ceph criado e, em seguida, de acordo com o plano da primeira publicação.



Materiais utilizados para publicação


Source: https://habr.com/ru/post/pt465399/


All Articles