亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

如何使用StorageClass掛載rbd?

標簽:
Kubernetes

使用StorageClass挂载ceph rbd需要用到2个cephx用户。一个用于创建和管理rbd,在这里我们使用admin;另一个用于将rbd映射到kubelet节点,我们可以在ceph中手动创建一个。

准备:

假设已有一套ceph集群,Monitor分别为192.168.1.1,192.168.1.2和192.168.1.3

需要保证Monitor的6379端口和OSD的6800端口对kubelet节点开放

为每个kubelet节点都事先安装ceph-common

一、创建一个k8s存储池,用于存放数据卷

ceph osd pool create k8s 64 64

二、创建cephx用户,用于映射rbd

ceph auth get-or-create client.k8s mon 'allow r' osd 'allow * pool=k8s'

三、获取k8s用户的key,以base64编码

ceph auth get-key client.k8s|base64

记录输出的内容,如:QVFEQjlmcFpjUE5lS0JBQU40NnZxZ2dIT0dRTEtaeUx1blNjR1E9PQ==

四、获取admin用户的key,以base64编码

ceph auth get-key client.admin|base64

记录输出的内容,如:QVFDUDNrQllRRVBJR0JBQXFuVXJQbHZQaC9xZEQ2ZGVZOXRoVXc9PQ==

五、创建storage-class-rbd.yaml

---
apiVersion: v1
data:
  key: QVFEQjlmcFpjUE5lS0JBQU40NnZxZ2dIT0dRTEtaeUx1blNjR1E9PQ==
kind: Secret
metadata:
  name: ceph-secret-user  namespace: defaulttype: kubernetes.io/rbd
---
apiVersion: v1
data:
  key: QVFDUDNrQllRRVBJR0JBQXFuVXJQbHZQaC9xZEQ2ZGVZOXRoVXc9PQ==
kind: Secret
metadata:
  name: ceph-secret-admin  namespace: kube-system
type: kubernetes.io/rbd
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: rbd
provisioner: kubernetes.io/rbd
parameters:
  monitors: 192.168.1.1:6789,192.168.1.2:6789,192.168.1.3:6789
  adminId: admin
  adminSecretName: ceph-secret-admin
  adminSecretNamespace: kube-system
  pool: k8s
  userId: k8s
  userSecretName: ceph-secret-user
  fsType: xfs
  imageFormat: "2"
  imageFeatures: "layering"

六、创建StorageClass

kubectl create -f ./storage-class-rbd.yaml

七、创建nginx-statefulset.yaml, 通过StatefulSet动态挂载卷

---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: web
spec:
  serviceName: "nginx"
  replicas: 2
  volumeClaimTemplates:
  - metadata:
      name: html 
      annotations:
        volume.beta.kubernetes.io/storage-class: "rbd" # 这里配置 上面创建的 storageclass 的名称
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 2Gi 
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        volumeMounts:
        - mountPath: "/usr/share/nginx/html/"
          name: html

StatefulSet会为每个Pod创建一个rbd数据卷,并挂载到/usr/share/nginx/html/目录中,数据卷会随着StatefulSet的伸缩而动态创建。



作者:361007018
链接:https://www.jianshu.com/p/9aa4224fd2e1


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
數據庫工程師
手記
粉絲
42
獲贊與收藏
204

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消