k 8 s cephによる動的持続化ストレージの実現
7514 ワード
概要
この記事では、cephを使用してk 8 sに動的にpvを申請する機能を提供する方法について説明します.Cephは下位ストレージ機能を提供し、cephfs方式はk 8 sのpvの3種類のアクセスモード
アクセス・モードは能力記述にすぎず、強制的に実行されるわけではありません.pvcで宣言されていないpvを使用する場合、ストレージ・プロバイダはアクセス時の実行エラーを担当する必要があります.例えば、pvcのアクセスモードが
配置
配備k 8 s
centos 7 kubeadmを使用してk 8 s-1.11バージョンをインストール
配置ceph
centos 7 ceph分散型ストレージクラスタのインストール
k 8 sクラスタでのcephの使用の構成
Ceph RBDの使用
kubeadmを使用してクラスタの追加構成をインストールする
linuxカーネルは4.10+が必要です.そうしないと、正常に使用できない問題が発生します.詳細issue情報github.com/kubernetes-...centos 7はカーネルをアップグレードします.
CephクラスタでCephFSを作成する
この記事では、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から動的持続化ストレージを実現する