Kubernetes Cephストレージの使用
本文は主にKubernetesがCephストレージを使用する関連構成過程を記録し、Kubernetesクラスタ環境が採用したkargo配置方式、そしてすべてのコンポーネントがコンテナ化で運行する.
一、基礎環境の準備
Kubernetesクラスタは全部で5台あり、配置方式はkargoコンテナ化配置であり、kargo配置を採用する際に配置中にカーネルモジュールのロードをオンにすることを確保する(
ノード
IP
配置
docker1
192.168.1.11
master、monitor、osd
docker2
192.168.1.12
master、monitor、osd
docker3
192.168.1.13
node、monitor、osd
docker4
192.168.1.14
node、osd
docker5
192.168.1.15
node、osd
二、Cephクラスタの配置
具体的なインストールはCephノート(一)、Cephノート(二)を参照してください.以下は直接命令します.
2.1、クラスタの配置
2.2、ブロックデバイスの作成
三、kubernetes Ceph使用
3.1、PV&PVC方式
従来の分散型ストレージの使用方法は、一般に
Secretの作成
PVの作成
PVCの作成
Deploymentの作成とマウント
3.2、StoragaClass方式
1.4以降、kubernetesはPVをより容易に動的に作成する方法を提供した.すなわち、StoragaClassを使用する場合、予め一定サイズのPVを作成する必要がなく、使用者がPVCを作成して使用するのを待つ.PVCを直接作成して割り当てるのです
システムレベルSecretの作成
注意:StorageClassはCephのSecret typeが
StorageClassの作成
上のadminIdなどのフィールドの具体的な意味についてはこちらCeph RBDを参照してください
PVCの作成
Deploymentの作成
これで完了し、成功するかどうかを検出する最も簡単な方法は、関連podが正常に動作しているかどうかを見ることです.
転載は出典を明記してください.本文はCC 4を採用します.0プロトコルの承認
この文書は次のとおりです.https://mritd.me/2017/06/03/use-ceph-storage-on-kubernetes/
一、基礎環境の準備
Kubernetesクラスタは全部で5台あり、配置方式はkargoコンテナ化配置であり、kargo配置を採用する際に配置中にカーネルモジュールのロードをオンにすることを確保する(
kubelet_load_modules: true
).Kubernetesバージョンは1.6です.4,Cephは最新の安定版Jewelを採用ノード
IP
配置
docker1
192.168.1.11
master、monitor、osd
docker2
192.168.1.12
master、monitor、osd
docker3
192.168.1.13
node、monitor、osd
docker4
192.168.1.14
node、osd
docker5
192.168.1.15
node、osd
二、Cephクラスタの配置
具体的なインストールはCephノート(一)、Cephノート(二)を参照してください.以下は直接命令します.
2.1、クラスタの配置
# mkdir ceph-cluster && cd ceph-cluster# monitor-nodeceph-deploy new docker1 docker2 docker3# OSD echo "osd pool default size = 5" >> ceph.conf# cephceph-deploy install docker1 docker2 docker3 docker4 docker5# init monitor nodeceph-deploy mon create-initial# odsceph-deploy osd prepare docker1:/dev/sda docker2:/dev/sda docker3:/dev/sda docker4:/dev/sda docker5:/dev/sda# osdceph-deploy osd activate docker1:/dev/sda1:/dev/sda2 docker2:/dev/sda1:/dev/sda2 docker3:/dev/sda1:/dev/sda2 docker4:/dev/sda1:/dev/sda2 docker5:/dev/sda1:/dev/sda2# ceph cli ceph-deploy admin docker1 docker2 docker3 docker4 docker5# chmod +r /etc/ceph/ceph.client.admin.keyring# ceph health
2.2、ブロックデバイスの作成
# rados mkpool data# p_w_picpathrbd create data --size 10240 -p data# rbd feature disable data exclusive-lock, object-map, fast-diff, deep-flatten -p data# ( )rbd map data --name client.admin -p data# ( )mkfs.xfs /dev/rbd0
三、kubernetes Ceph使用
3.1、PV&PVC方式
従来の分散型ストレージの使用方法は、一般に
PV & PVC
方式であり、すなわち、管理者が予め関連するPVおよびPVCを作成し、対応するdeploymentまたはreplicationがPVCをマウントして使用する.Secretの作成
# key base64 ceph auth get-key client.admin | base64# secret (key )cat <> ceph-secret.yml
apiVersion: v1
kind: Secret
metadata:
name: ceph-secret
data:
key: QVFDaWtERlpzODcwQWhBQTdxMWRGODBWOFZxMWNGNnZtNmJHVGc9PQo=
EOFkubectl create -f ceph-secret.yml
PVの作成
# monitor ,pool p_w_picpath cat <> test.pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: test-pv
spec:
capacity:
storage: 2Gi
accessModes:
- ReadWriteMany
rbd:
monitors:
- 192.168.1.11:6789
- 192.168.1.12:6789
- 192.168.1.13:6789
pool: data
p_w_picpath: data
user: admin
secretRef:
name: ceph-secret
fsType: xfs
readOnly: false
persistentVolumeReclaimPolicy: Recycle
EOFkubectl create -f test.pv.yml
PVCの作成
cat <> test.pvc.yml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
EOFkubectl create -f test.pvc.yml
Deploymentの作成とマウント
cat <> test.deploy.yml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: demo
spec:
replicas: 3
template:
metadata:
labels:
app: demo
spec:
containers:
- name: demo
p_w_picpath: mritd/demo
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/data"
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: test-pvc
EOFkubectl create -f test.deploy.yml
3.2、StoragaClass方式
1.4以降、kubernetesはPVをより容易に動的に作成する方法を提供した.すなわち、StoragaClassを使用する場合、予め一定サイズのPVを作成する必要がなく、使用者がPVCを作成して使用するのを待つ.PVCを直接作成して割り当てるのです
システムレベルSecretの作成
注意:StorageClassはCephのSecret typeが
kubernetes.io/rbd
である必要があるため、前に作成したceph-secret
は先に削除され、次のコマンドを使用して再作成する必要があります.このときkeyはbase 64を通過しなかった# secret type kubernetes.io/rbd, PVC kubectl create secret generic ceph-secret --type="kubernetes.io/rbd" --from-literal=key='AQCikDFZs870AhAA7q1dF80V8Vq1cF6vm6bGTg==' --namespace=kube-system
kubectl create secret generic ceph-secret --type="kubernetes.io/rbd" --from-literal=key='AQCikDFZs870AhAA7q1dF80V8Vq1cF6vm6bGTg==' --namespace=default
StorageClassの作成
cat <> test.storageclass.yml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: test-storageclass
provisioner: kubernetes.io/rbd
parameters:
monitors: 192.168.1.11:6789,192.168.1.12:6789,192.168.1.13:6789
# Ceph ID( k8s )
adminId: admin
adminSecretName: ceph-secret
adminSecretNamespace: kube-system
pool: data
userId: admin
userSecretName: ceph-secret
EOFkubectl create -f test.storageclass.yml
上のadminIdなどのフィールドの具体的な意味についてはこちらCeph RBDを参照してください
PVCの作成
cat <> test.sc.pvc.yml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-sc-pvc
annotations:
volume.beta.kubernetes.io/storage-class: test-storageclass
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
EOFkubectl create -f test.sc.pvc.yml
Deploymentの作成
cat <> test.sc.deploy.yml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: demo-sc
spec:
replicas: 3
template:
metadata:
labels:
app: demo-sc
spec:
containers:
- name: demo-sc
p_w_picpath: mritd/demo
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/data"
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: test-sc-pvc
EOFkubectl create -f test.sc.deploy.yml
これで完了し、成功するかどうかを検出する最も簡単な方法は、関連podが正常に動作しているかどうかを見ることです.
転載は出典を明記してください.本文はCC 4を採用します.0プロトコルの承認
この文書は次のとおりです.https://mritd.me/2017/06/03/use-ceph-storage-on-kubernetes/