k 8 s cephによる動的持続化ストレージの実現

7514 ワード

概要
この記事では、cephを使用してk 8 sに動的にpvを申請する機能を提供する方法について説明します.Cephは下位ストレージ機能を提供し、cephfs方式はk 8 sのpvの3種類のアクセスモードReadWriteOnce,ReadOnlyMany ,ReadWriteManyをサポートし、RBDはReadWriteOnce,ReadOnlyManyの2種類のモードをサポートする.
アクセス・モードは能力記述にすぎず、強制的に実行されるわけではありません.pvcで宣言されていないpvを使用する場合、ストレージ・プロバイダはアクセス時の実行エラーを担当する必要があります.例えば、pvcのアクセスモードがReadOnlyManyに設定されている場合、podがマウントされても書き込み可能であり、本当に書き込み不可である必要がある場合、pvcの申請にはreadOnly: trueのパラメータを指定する必要がある
配置
配備k 8 s
centos 7 kubeadmを使用してk 8 s-1.11バージョンをインストール
配置ceph
centos 7 ceph分散型ストレージクラスタのインストール
k 8 sクラスタでのcephの使用の構成
Ceph RBDの使用
kubeadmを使用してクラスタの追加構成をインストールする
#     kubeadm               #           controller-manager      rbd      image #    controller-manager      rbd    #     controller-manager     rbd   #                   pvc #    issue https://github.com/kubernetes/kubernetes/issues/38923
cat >external-storage-rbd-provisioner.yaml<
storageclassの構成
#  k8s          ceph-common #     kubelet  rdb  map  rbd   image
yum install -y ceph-common

#    osd pool  ceph mon  admin  
ceph osd pool create kube 4096
ceph osd pool ls

#   k8s  ceph     ceph mon  admin  
ceph auth get-or-create client.kube mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=kube' -o ceph.client.kube.keyring

#   key  ceph mon  admin  
ceph auth get-key client.admin
ceph auth get-key client.kube

#    admin secret # CEPH_ADMIN_SECRET     client.admin     key export CEPH_ADMIN_SECRET='AQBBAnRbSiSOFxAAEZXNMzYV6hsceccYLhzdWw=='
kubectl create secret generic ceph-secret --type="kubernetes.io/rbd" \
--from-literal=key=$CEPH_ADMIN_SECRET \
--namespace=kube-system

#   default       pvc    ceph  secret # CEPH_KUBE_SECRET     client.kube     key export CEPH_KUBE_SECRET='AQBZK3VbTN/QOBAAIYi6CRLQcVevW5HM8lunOg=='
kubectl create secret generic ceph-user-secret --type="kubernetes.io/rbd" \
--from-literal=key=$CEPH_KUBE_SECRET \
--namespace=default

#    secret
kubectl get secret ceph-user-secret -o yaml
kubectl get secret ceph-secret -n kube-system -o yaml

#    StorageClass #     kubeadm      provisioner        # provisioner: ceph.com/rbd
cat >storageclass-ceph-rdb.yaml<
テストの使用
#   pvc  
cat >ceph-rdb-pvc-test.yaml<nginx-pod.yaml< /usr/share/nginx/html/index.html' #     
POD_ID=$(kubectl get pods -o wide | grep nginx-pod1 | awk '{print $(NF-1)}')
curl http://$POD_ID #   
kubectl delete -f nginx-pod.yaml
kubectl delete -f ceph-rdb-pvc-test.yaml
CephFSの使用
linuxカーネルは4.10+が必要です.そうしないと、正常に使用できない問題が発生します.詳細issue情報github.com/kubernetes-...centos 7はカーネルをアップグレードします.
CephクラスタでCephFSを作成する
#      ceph mon  admin   # CephFS      Pool           
ceph osd pool create fs_data 128
ceph osd pool create fs_metadata 128
ceph osd lspools

#     CephFS
ceph fs new cephfs fs_metadata fs_data

#   
ceph fs ls
cephfs-provisionerの導入
#     cephfs      #        cephfs-provisioner
cat >external-storage-cephfs-provisioner.yaml<
#####storageclassの構成
#   key  ceph mon  admin  
ceph auth get-key client.admin

#    admin secret # CEPH_ADMIN_SECRET     client.admin     key #       ceph rbd                export CEPH_ADMIN_SECRET='AQBBAnRbSiSOFxAAEZXNMzYV6hsceccYLhzdWw=='
kubectl create secret generic ceph-secret --type="kubernetes.io/rbd" \
--from-literal=key=$CEPH_ADMIN_SECRET \
--namespace=kube-system

#    secret
kubectl get secret ceph-secret -n kube-system -o yaml

#    StorageClass
cat >storageclass-cephfs.yaml<
テストの使用
#   pvc  
cat >cephfs-pvc-test.yaml<nginx-pod.yaml< /usr/share/nginx/html/index.html' #     
POD_ID=$(kubectl get pods -o wide | grep nginx-pod1 | awk '{print $(NF-1)}')
curl http://$POD_ID #   
kubectl delete -f nginx-pod.yaml
kubectl delete -f cephfs-pvc-test.yaml
本稿では,cephを用いて掘削金−k 8 sから動的持続化ストレージを実現する