kubernets1.13.1クラスタceph rbdブロックストレージを使用
リファレンスドキュメント
ドキュメントディレクトリ kubernetes1.13.1+etcd3.3.10+flanneld0.10クラスタ配置 kubernetes1.13.1 kuberneted-dashboard v 1を配備する.10.1 kubernetes1.13.1 coredns の導入 kubernetes1.13.1 ingress-nginxを配備しhttps転送dashboard を構成する kubernetes1.13.1 metrics-server 0を配備する.3.1 kubernetes1.13.1クラスタ使用ceph rbdメモリブロック kubernetes1.13.1クラスタとceph rbdを組み合わせた最新バージョンjenkins の導入 kubernetes1.13.1クラスタインストールパッケージ管理ツールhelm kubernetes1.13.1クラスタ統合harbor-helm 概要
Cephはオブジェクトストレージ、ファイルシステムおよびブロックストレージをサポートし、3つの統合ストレージタイプであり、kubernetesのサンプルにはcephfsとrbdの2つの使用方法の紹介があり、cephfsはnodeノードインストールcephをサポートする必要があり、rbdはnodeノードインストールceph-commonをサポートする必要がある.使用上の違いは以下の通りです.
きほんかんきょう
k 81クラスタ1.13.バージョン1
Cephクラスタluminousバージョン
操作手順
一、cephクラスタはcephプールとミラーを作成する
二、k 8 sクラスタceph rbdブロックストレージを使用
1、サンプルのダウンロード
2、k 8 sクラスタノードcephクライアントのインストール
3、rbd-with-secret.を修正するyamlプロファイルを変更すると、次のように構成されます.
実際の状況に応じて以下のパラメータを変更します:monitors:これはCephクラスタのmonitorモニタです.Cephクラスタは複数のmonitorを構成できます.本構成は3つのmonpoolです.これはCephクラスタに格納されたデータを分類して使用します.ここで使用するpoolはrbd-cephimageです.これはCephブロックデバイスのディスクイメージファイルです.ここではcephimage 1 fsType:ファイルシステムタイプ、デフォルトではext 4を使用するreadOnly:読み取り専用かどうか、ここでは読み取り専用を使用するuserをテストします:Ceph ClientがCephストレージクラスタにアクセスするために使用するユーザー名です.ここではadminを使用してkeyring:Cephクラスタ認証に必要な鍵リングです.Cephストレージクラスタを構築する際に生成されるcephです.client.admin.keyringimageformat:これはディスクイメージファイルのフォーマットで、2、または古い1を使用することができます.カーネルバージョンは比較的低い1 imagefeaturesを使用します.これはディスクイメージファイルの特徴です.uname-rはクラスタシステムカーネルがサポートする特性を表示する必要があります.ここでCeontos 7.4カーネルバージョンは3.10です.0-693.el7.x86_64はlayeringのみサポート
4、ceph認証鍵を使用してクラスタの中でsecretを使用するのはもっと便利で拡張しやすくて安全である
5、ceph-secretの作成
6、podテストrbdを作成公式サイトのケースに従って直接作成すればよい
しかし、生産環境でvolumesを直接使用しないと、podsの作成、削除に伴って削除され、データが保存されず、データが失われない必要がある場合は、pvとpvcによって実現する必要があります.
7、ceph-pvの作成rbdは読み書き一回、読み取り専用複数回であることに注意し、現在はまだ読み書き複数回をサポートしていない.rbdマッピングディスクを日常的に使用する場合もimageは1つのクライアントにしかマウントされていない.Cephfsは複数回の読み書きをサポートできます
8、ceph-pvcの作成
9、podを作成するpv、pvc方式でrbdをテストする.
次のようにエラーが発生しました.WaitForAttach failed for volume "ceph-rbd-pv": rbd: map failed exit status 6, rbd output: rbd: sysfs write failed RBD image feature set mismatch. Try disabling features unsupported by the kernel with "rbd feature disable". In some cases useful info is found in syslog - try "dmesg | tail". rbd:map failed:(6)No such device or address解決方法centos 7でいくつかの特性を無効にする.4カーネルではサポートされていないため、本番環境ではk 8 sおよび関連cephはカーネルバージョンの高いシステムを下位オペレーティングシステムrbd feature disable rbd-k 8 s/cephimage 2 exclusive-lock object-map fast-diff deep-flattenとして使用することが望ましい
三、検証効果
1、k 8 sクラスタエンド検証
2、cephクラスタ端検証
https://github.com/kubernetes/examples/tree/master/staging/volumes/rbd
http://docs.ceph.com/docs/mimic/rados/operations/pools/
https://blog.csdn.net/aixiaoyang168/article/details/78999851
https://www.cnblogs.com/keithtt/p/6410302.html
https://kubernetes.io/docs/concepts/storage/volumes/
https://kubernetes.io/docs/concepts/storage/persistent-volumes/
https://blog.csdn.net/wenwenxiong/article/details/78406136
http://www.mamicode.com/info-detail-1701743.html
ドキュメントディレクトリ
Cephはオブジェクトストレージ、ファイルシステムおよびブロックストレージをサポートし、3つの統合ストレージタイプであり、kubernetesのサンプルにはcephfsとrbdの2つの使用方法の紹介があり、cephfsはnodeノードインストールcephをサポートする必要があり、rbdはnodeノードインストールceph-commonをサポートする必要がある.使用上の違いは以下の通りです.
Volume Plugin ReadWriteOnce ReadOnlyMany ReadWriteMany
CephFS ✓ ✓ ✓
RBD ✓ ✓ -
きほんかんきょう
k 81クラスタ1.13.バージョン1
[root@elasticsearch01 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
10.2.8.34 Ready 24d v1.13.1
10.2.8.65 Ready 24d v1.13.1
Cephクラスタluminousバージョン
[root@ceph01 ~]# ceph -s
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph03
mgr: ceph03(active), standbys: ceph02, ceph01
osd: 24 osds: 24 up, 24 in
rgw: 3 daemons active
操作手順
一、cephクラスタはcephプールとミラーを作成する
[root@ceph01 ~]# ceph osd pool create rbd-k8s 1024 1024
For better initial performance on pools expected to store a large number of objects, consider supplying the expected_num_objects parameter when creating the pool.
[root@ceph01 ~]# ceph osd lspools
1 rbd-es,2 .rgw.root,3 default.rgw.control,4 default.rgw.meta,5 default.rgw.log,6 default.rgw.buckets.index,7 default.rgw.buckets.data,8 default.rgw.buckets.non-ec,9 rbd-k8s,
[root@ceph01 ~]# rbd create rbd-k8s/cephimage1 --size 10240
[root@ceph01 ~]# rbd create rbd-k8s/cephimage2 --size 20480
[root@ceph01 ~]# rbd create rbd-k8s/cephimage3 --size 40960
[root@ceph01 ~]# rbd list rbd-k8s
cephimage1
cephimage2
cephimage3
二、k 8 sクラスタceph rbdブロックストレージを使用
1、サンプルのダウンロード
[root@elasticsearch01 ~]# git clone https://github.com/kubernetes/examples.git
Cloning into 'examples'...
remote: Enumerating objects: 11475, done.
remote: Total 11475 (delta 0), reused 0 (delta 0), pack-reused 11475
Receiving objects: 100% (11475/11475), 16.94 MiB | 6.00 MiB/s, done.
Resolving deltas: 100% (6122/6122), done.
[root@elasticsearch01 ~]# cd examples/staging/volumes/rbd
[root@elasticsearch01 rbd]# ls
rbd-with-secret.yaml rbd.yaml README.md secret
[root@elasticsearch01 rbd]# cp -a ./rbd /k8s/yaml/volumes/
2、k 8 sクラスタノードcephクライアントのインストール
[root@elasticsearch01 ceph]# yum install ceph-common
3、rbd-with-secret.を修正するyamlプロファイルを変更すると、次のように構成されます.
[root@elasticsearch01 rbd]# cat rbd-with-secret.yaml
apiVersion: v1
kind: Pod
metadata:
name: rbd2
spec:
containers:
- image: kubernetes/pause
name: rbd-rw
volumeMounts:
- name: rbdpd
mountPath: /mnt/rbd
volumes:
- name: rbdpd
rbd:
monitors:
- '10.0.4.10:6789'
- '10.0.4.13:6789'
- '10.0.4.15:6789'
pool: rbd-k8s
image: cephimage1
fsType: ext4
readOnly: true
user: admin
secretRef:
name: ceph-secret
実際の状況に応じて以下のパラメータを変更します:monitors:これはCephクラスタのmonitorモニタです.Cephクラスタは複数のmonitorを構成できます.本構成は3つのmonpoolです.これはCephクラスタに格納されたデータを分類して使用します.ここで使用するpoolはrbd-cephimageです.これはCephブロックデバイスのディスクイメージファイルです.ここではcephimage 1 fsType:ファイルシステムタイプ、デフォルトではext 4を使用するreadOnly:読み取り専用かどうか、ここでは読み取り専用を使用するuserをテストします:Ceph ClientがCephストレージクラスタにアクセスするために使用するユーザー名です.ここではadminを使用してkeyring:Cephクラスタ認証に必要な鍵リングです.Cephストレージクラスタを構築する際に生成されるcephです.client.admin.keyringimageformat:これはディスクイメージファイルのフォーマットで、2、または古い1を使用することができます.カーネルバージョンは比較的低い1 imagefeaturesを使用します.これはディスクイメージファイルの特徴です.uname-rはクラスタシステムカーネルがサポートする特性を表示する必要があります.ここでCeontos 7.4カーネルバージョンは3.10です.0-693.el7.x86_64はlayeringのみサポート
4、ceph認証鍵を使用してクラスタの中でsecretを使用するのはもっと便利で拡張しやすくて安全である
[root@ceph01 ~]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
key = AQBHVp9bPirBCRAAUt6Mjw5PUjiy/RDHyHZrUw==
[root@ceph01 ~]# grep key /etc/ceph/ceph.client.admin.keyring |awk '{printf "%s", $NF}'|base64
QVFCSFZwOWJQaXJCQ1JBQVV0Nk1qdzVQVWppeS9SREh5SFpyVXc9PQ==
5、ceph-secretの作成
[root@elasticsearch01 rbd]# cat secret/ceph-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: ceph-secret
type: "kubernetes.io/rbd"
data:
key: QVFCSFZwOWJQaXJCQ1JBQVV0Nk1qdzVQVWppeS9SREh5SFpyVXc9PQ==
[root@elasticsearch01 rbd]# kubectl create -f secret/ceph-secret.yaml
secret/ceph-secret created
6、podテストrbdを作成公式サイトのケースに従って直接作成すればよい
[root@elasticsearch01 rbd]# kubectl create -frbd-with-secret.yaml
しかし、生産環境でvolumesを直接使用しないと、podsの作成、削除に伴って削除され、データが保存されず、データが失われない必要がある場合は、pvとpvcによって実現する必要があります.
7、ceph-pvの作成rbdは読み書き一回、読み取り専用複数回であることに注意し、現在はまだ読み書き複数回をサポートしていない.rbdマッピングディスクを日常的に使用する場合もimageは1つのクライアントにしかマウントされていない.Cephfsは複数回の読み書きをサポートできます
[root@elasticsearch01 rbd]# cat rbd-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: ceph-rbd-pv
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
rbd:
monitors:
- '10.0.4.10:6789'
- '10.0.4.13:6789'
- '10.0.4.15:6789'
pool: rbd-k8s
image: cephimage2
user: admin
secretRef:
name: ceph-secret
fsType: ext4
readOnly: false
persistentVolumeReclaimPolicy: Recycle
[root@elasticsearch01 rbd]# kubectl create -f rbd-pv.yaml
persistentvolume/ceph-rbd-pv created
[root@elasticsearch01 rbd]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
ceph-rbd-pv 20Gi RWO Recycle Available
8、ceph-pvcの作成
[root@elasticsearch01 rbd]# cat rbd-pv-claim.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ceph-rbd-pv-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
[root@elasticsearch01 rbd]# kubectl create -f rbd-pv-claim.yaml
persistentvolumeclaim/ceph-rbd-pv-claim created
[root@elasticsearch01 rbd]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
ceph-rbd-pv-claim Bound ceph-rbd-pv 20Gi RWO 6s
[root@elasticsearch01 rbd]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
ceph-rbd-pv 20Gi RWO Recycle Bound default/ceph-rbd-pv-claim 5m28s
9、podを作成するpv、pvc方式でrbdをテストする.
[root@elasticsearch01 rbd]# cat rbd-pv-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: ceph-rbd-pv-pod1
spec:
containers:
- name: ceph-rbd-pv-busybox
image: busybox
command: ["sleep", "60000"]
volumeMounts:
- name: ceph-rbd-vol1
mountPath: /mnt/ceph-rbd-pvc/busybox
readOnly: false
volumes:
- name: ceph-rbd-vol1
persistentVolumeClaim:
claimName: ceph-rbd-pv-claim
[root@elasticsearch01 rbd]# kubectl create -f rbd-pv-pod.yaml
pod/ceph-rbd-pv-pod1 created
[root@elasticsearch01 rbd]# kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 432 18d
ceph-rbd-pv-pod1 0/1 ContainerCreating 0 19s
次のようにエラーが発生しました.WaitForAttach failed for volume "ceph-rbd-pv": rbd: map failed exit status 6, rbd output: rbd: sysfs write failed RBD image feature set mismatch. Try disabling features unsupported by the kernel with "rbd feature disable". In some cases useful info is found in syslog - try "dmesg | tail". rbd:map failed:(6)No such device or address解決方法centos 7でいくつかの特性を無効にする.4カーネルではサポートされていないため、本番環境ではk 8 sおよび関連cephはカーネルバージョンの高いシステムを下位オペレーティングシステムrbd feature disable rbd-k 8 s/cephimage 2 exclusive-lock object-map fast-diff deep-flattenとして使用することが望ましい
[root@ceph01 ~]# rbd feature disable rbd-k8s/cephimage2 exclusive-lock object-map fast-diff deep-flatten
三、検証効果
1、k 8 sクラスタエンド検証
[root@elasticsearch01 rbd]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
busybox 1/1 Running 432 18d 10.254.35.3 10.2.8.65
ceph-rbd-pv-pod1 1/1 Running 0 3m39s 10.254.35.8 10.2.8.65
[root@elasticsearch02 ceph]# df -h |grep rbd
/dev/rbd0 493G 162G 306G 35% /data
/dev/rbd1 20G 45M 20G 1% /var/lib/kubelet/plugins/kubernetes.io/rbd/mounts/rbd-k8s-image-cephimage2
[root@elasticsearch02 ceph]# cd /var/lib/kubelet/plugins/kubernetes.io/rbd/mounts/rbd-k8s-image-cephimage2
[root@elasticsearch02 rbd-k8s-image-cephimage2]# ls
lost+found
[root@elasticsearch01 rbd]# kubectl exec -ti ceph-rbd-pv-pod1 sh
/ # df -h
Filesystem Size Used Available Use% Mounted on
overlay 49.1G 7.4G 39.1G 16% /
tmpfs 64.0M 0 64.0M 0% /dev
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/vda1 49.1G 7.4G 39.1G 16% /dev/termination-log
/dev/vda1 49.1G 7.4G 39.1G 16% /etc/resolv.conf
/dev/vda1 49.1G 7.4G 39.1G 16% /etc/hostname
/dev/vda1 49.1G 7.4G 39.1G 16% /etc/hosts
shm 64.0M 0 64.0M 0% /dev/shm
/dev/rbd1 19.6G 44.0M 19.5G 0% /mnt/ceph-rbd-pvc/busybox
tmpfs 7.8G 12.0K 7.8G 0% /var/run/secrets/kubernetes.io/serviceaccount
tmpfs 7.8G 0 7.8G 0% /proc/acpi
tmpfs 64.0M 0 64.0M 0% /proc/kcore
tmpfs 64.0M 0 64.0M 0% /proc/keys
tmpfs 64.0M 0 64.0M 0% /proc/timer_list
tmpfs 64.0M 0 64.0M 0% /proc/timer_stats
tmpfs 64.0M 0 64.0M 0% /proc/sched_debug
tmpfs 7.8G 0 7.8G 0% /proc/scsi
tmpfs 7.8G 0 7.8G 0% /sys/firmware
/ # cd /mnt/ceph-rbd-pvc/busybox/
/mnt/ceph-rbd-pvc/busybox # ls
lost+found
/mnt/ceph-rbd-pvc/busybox # touch ceph-rbd-pods
/mnt/ceph-rbd-pvc/busybox # ls
ceph-rbd-pods lost+found
/mnt/ceph-rbd-pvc/busybox # echo busbox>ceph-rbd-pods
/mnt/ceph-rbd-pvc/busybox # cat ceph-rbd-pods
busbox
[root@elasticsearch02 ceph]# cd /var/lib/kubelet/plugins/kubernetes.io/rbd/mounts/rbd-k8s-image-cephimage2
[root@elasticsearch02 rbd-k8s-image-cephimage2]# ls
ceph-rbd-pods lost+found
2、cephクラスタ端検証
[root@ceph01 ~]# ceph df
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
65.9TiB 58.3TiB 7.53TiB 11.43
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
rbd-es 1 1.38TiB 7.08 18.1TiB 362911
.rgw.root 2 1.14KiB 0 18.1TiB 4
default.rgw.control 3 0B 0 18.1TiB 8
default.rgw.meta 4 46.9KiB 0 104GiB 157
default.rgw.log 5 0B 0 18.1TiB 345
default.rgw.buckets.index 6 0B 0 104GiB 2012
default.rgw.buckets.data 7 1.01TiB 5.30 18.1TiB 2090721
default.rgw.buckets.non-ec 8 0B 0 18.1TiB 0
rbd-k8s 9 137MiB 0 18.1TiB 67