É muito conveniente usar o Ceph como armazenamento compartilhado no k8s. O Ceph é um sistema de armazenamento distribuído antiquado, muito maduro e poderoso. Ele oferece suporte a três modos (armazenamento rápido, armazenamento do sistema de arquivos e armazenamento de objetos). use-o em k8s Que tal usar o ceph?
Rook é uma ferramenta de orquestração de armazenamento nativo em nuvem de código aberto que fornece uma plataforma, estrutura e suporte para várias soluções de armazenamento para integração nativa com ambientes nativos em nuvem. O Rook transforma o software de armazenamento em um serviço de armazenamento de autogerenciamento, autoescalonamento e autocorreção, automatizando a implantação, inicialização, configuração, provisionamento, dimensionamento, atualizações, migrações, recuperação de desastres, monitoramento e gerenciamento de recursos. A camada subjacente do Rook usa os recursos fornecidos pelas plataformas de gerenciamento, agendamento e orquestração de contêineres nativos da nuvem para fornecer esses recursos.
O Rook usa funções estendidas para integrá-lo profundamente ao ambiente nativo da nuvem e fornece uma experiência perfeita para agendamento, gerenciamento do ciclo de vida, gerenciamento de recursos, segurança, monitoramento etc. O Rook atualmente suporta Ceph, NFS, Minio Object Store e CockroachDB .
As imagens usadas para implantação são as seguintes:
Como a fonte da imagem está no exterior, ela não pode ser baixada na China. Aqui você precisa modificar algumas imagens ou baixar tags com antecedência. A operação é a seguinte:
cd rook/deploy/examples/
#(registry.aliyuncs.com/google_containers/<image>:<tag>),后四个镜像我FQ下
docker pull registry.aliyuncs.com/google_containers/csi-node-driver-registrar:v2.5.1
docker tag registry.aliyuncs.com/google_containers/csi-node-driver-registrar:v2.5.1 registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.5.1
docker pull registry.aliyuncs.com/google_containers/csi-snapshotter:v6.1.0
docker tag registry.aliyuncs.com/google_containers/csi-snapshotter:v6.1.0 registry.k8s.io/sig-storage/csi-snapshotter:v6.1.0
docker pull registry.aliyuncs.com/google_containers/csi-attacher:v4.0.0
docker tag registry.aliyuncs.com/google_containers/csi-attacher:v4.0.0 registry.k8s.io/sig-storage/csi-attacher:v4.0.0
docker pull registry.aliyuncs.com/google_containers/csi-resizer:v1.6.0
docker tag registry.aliyuncs.com/google_containers/csi-resizer:v1.6.0 registry.k8s.io/sig-storage/csi-resizer:v1.6.0
docker pull registry.aliyuncs.com/google_containers/csi-resizer:v1.6.0
docker tag registry.aliyuncs.com/google_containers/csi-resizer:v1.6.0 registry.k8s.io/sig-storage/csi-resizer:v1.6.0
docker pull registry.aliyuncs.com/google_containers/csi-provisioner:v3.3.0
docker tag registry.aliyuncs.com/google_containers/csi-provisioner:v3.3.0 registry.k8s.io/sig-storage/csi-provisioner:v3.3.0
② Implantar Operador de Torre
cd rook/deploy/examples
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
# 检查
kubectl -n rook-ceph get pod
Agora que o Rook Operator está no estado Running, você pode criar um cluster Ceph. Para que o cluster não seja afetado após a reinicialização, verifique se o valor do atributo dataDirHostPath definido é um caminho de host válido:
cd rook/deploy/examples
kubectl apply -f cluster.yaml
④ Implante a ferramenta Rook Ceph
cd rook/deploy/examples
kubectl create -f toolbox.yaml
⑤ Implantar Ceph Dashboard
cd rook/deploy/examples
kubectl apply -f dashboard-external-https.yaml
# 获取 dashboard admin密码
kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}"| base64 -d
Visualize o status do cluster do Ceph por meio do Ceph Dashboard:
# 查看对外端口
kubectl get svc -n rook-ceph
⑥ verificar
kubectl get pods,svc -n rook-ceph
⑦ Visualize o status do cluster ceph por meio do pod de ferramentas ceph-tool