成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

跟我學(xué) K8S--運(yùn)維: helm 安裝 ceph 到 kubernetes 集群

marser / 2865人閱讀

摘要:參考官方文檔進(jìn)行操作本文假設(shè)環(huán)境正常運(yùn)行,并且已經(jīng)安裝。只能以單副本運(yùn)行部署運(yùn)行命令來(lái)安裝等待一段時(shí)間執(zhí)行完成后,通過(guò)如下命令確定集群是否成功運(yùn)行檢查的狀態(tài)檢查集群狀態(tài)至此,集群部署完成。

參考 ceph 官方文檔進(jìn)行操作: http://docs.ceph.com/docs/mas...

本文假設(shè)kubernetes 環(huán)境正常運(yùn)行,并且 host 已經(jīng)安裝 helm client。

通過(guò) helm 來(lái)部署 ceph 用到了社區(qū)的 ceph-helm 項(xiàng)目( https://github.com/ceph/ceph-... ),這是一個(gè) helm 的 chart,本文使用的master 分支,最新commit id 為743a7441ba4361866a6e017b4f8fa5c15e34e640。

# 克隆 ceph-helm 代碼到本地
git clone https://github.com/ceph/ceph-helm/

# 如果環(huán)境中已經(jīng)存在tiller 服務(wù),則不需要執(zhí)行下面這條命令
helm init

# ceph-helm 默認(rèn)使用本地 helm-repo 的存儲(chǔ) charts,要在本地啟動(dòng) helm repo 服務(wù)器,運(yùn)行:
helm serve &
helm repo add my_local http://localhost:8879/charts

# 切換到 ceph-helm/ceph 目錄并執(zhí)行編譯
cd ceps-helm/ceph
make

建議提前準(zhǔn)備好需要的鏡像:

  docker pull docker.io/ceph/daemon:tag-build-master-luminous-ubuntu-16.04
  docker pull docker.io/kolla/ubuntu-source-kubernetes-entrypoint:4.0.0
  docker pull docker.io/port/ceph-config-helper:v1.7.5
  docker pull quay.io/external_storage/rbd-provisioner:v0.1.1
  docker pull docker.io/alpine:latest

具體部署步驟如下

1. 創(chuàng)建 ceph-overrides.yaml 文件

到此初步準(zhǔn)備工作完成,為了執(zhí)行 helm 安裝,需要提供覆蓋 values.yaml 中默認(rèn)值的配置項(xiàng),通常命名為ceph-overrides.yaml,其位置可以任意。
由于我用的是 openstack 上虛擬機(jī),網(wǎng)段為 10.24.0.0/24,并且虛擬機(jī) attach 一塊 cinder 創(chuàng)建的云硬盤,盤名為 /dev/vdb,那么就有了下面的配置文件。

network:
  public:   10.24.0.0/24
  cluster:  10.24.0.0/24

osd_devices:
  - name: dev-vdb
    device: /dev/vdb
    zap: "1"

storageclass:
  name: ceph-rbd
  pool: rbd
  user_id: admin

注意,這里的 storageclass中的user_id 如果不是 admin,則需要在 ceph 集群手動(dòng)創(chuàng)建并在 kubernetes 中創(chuàng)建對(duì)應(yīng)的 secret。

2. 在 kubernetes 環(huán)境提供權(quán)限和標(biāo)簽

首先,ceph-helm 會(huì)把ceph 集群安裝在 ceph 命名空間下,需要?jiǎng)?chuàng)建之。
其次,由于kubernetes >= 1.6使用了 RBAC 的 admission controller,ceph-helm 需要為每個(gè)組件提供 RBAC 角色和權(quán)限。
最后,由于安裝 ceph 組件的 ceph-mon 與ceph-osd-屬于 daemonsets,滿足label 條件后才會(huì)安裝。

# 創(chuàng)建 ceph namespace
kubectl create namespace ceph

# 創(chuàng)建相關(guān) rbac
kubectl create -f ~/ceph-helm/ceph/rbac.yaml

# 為節(jié)點(diǎn)打標(biāo)簽
kubectl label node node-1 ceph-mon=enabled
kubectl label node node-2 ceph-mon=enabled
kubectl label node node-3 ceph-mon=enabled

kubectl label node node-1 ceph-mgr=enabled

kubectl label node node-1  ceph-osd-device-dev-vdb=enabled ceph-osd=enabled
kubectl label node node-2  ceph-osd-device-dev-vdb=enabled ceph-osd=enabled
kubectl label node node-3  ceph-osd-device-dev-vdb=enabled ceph-osd=enabled

注意

1) 這里的 ceph-osd-dev-vdb 這個(gè)label 是根據(jù) ceps-overrides.yaml中的 osd_devices 的名稱創(chuàng)建,如果每個(gè)節(jié)點(diǎn)多個(gè) osd 盤,那么需要打相應(yīng)個(gè)數(shù)的 labels。
2) ceph-mgr 只能以單副本運(yùn)行
3. ceph 部署

運(yùn)行 helm 命令來(lái)安裝 Ceph:

cd ~/ceph-helm

helm install --name=ceph ceph/ceph-0.1.0.tgz --namespace=ceph -f ceph-overrides.yaml

等待一段時(shí)間執(zhí)行完成后,通過(guò)如下命令確定 ceph 集群是否成功運(yùn)行:

# 檢查 kubernetes 的 pod 狀態(tài)
~ # kubectl get po -n ceph
NAME                                    READY     STATUS    RESTARTS   AGE
ceph-mds-5696f9df5d-8fc7l               0/1       Pending   0          3h
ceph-mgr-8656b978df-kcb6f               1/1       Running   0          3h
ceph-mon-9xqms                          3/3       Running   0          3h
ceph-mon-check-7d49bd686c-pkk7w         1/1       Running   0          3h
ceph-mon-tw5n5                          3/3       Running   0          3h
ceph-mon-x25rv                          3/3       Running   0          3h
ceph-osd-dev-vdb-9t8fh                  1/1       Running   0          2h
ceph-osd-dev-vdb-fgl8w                  1/1       Running   0          2h
ceph-osd-dev-vdb-sssqq                  1/1       Running   0          2h
ceph-rbd-provisioner-5544dcbcf5-97nxn   1/1       Running   0          3h
ceph-rbd-provisioner-5544dcbcf5-nfkhw   1/1       Running   0          3h
ceph-rgw-65b4bd8cc5-ml7gk               0/1       Pending   0          3h

# 檢查 ceph 集群狀態(tài)
~ # kubectl exec -it ceph-mon-9xqms -n ceph -c ceph-mon -- ceph -s
  cluster:
    id:     726cc770-3daa-4792-8cd9-b100aea87711
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum host-10-24-0-14,host-10-24-0-15,host-10-24-0-16
    mgr: host-10-24-0-14(active)
    osd: 3 osds: 3 up, 3 in

  data:
    pools:   1 pools, 128 pgs
    objects: 3 objects, 16 bytes
    usage:   324 MB used, 104 GB / 104 GB avail
    pgs:     128 active+clean

至此,ceph 集群部署完成。 但是 創(chuàng)建的 storageclass 中的 secret 為空,需要更新 key:

# 獲取 ceph 集群的 client-admin-keyring
kubectl exec -it ceph-mon-9xqms -n ceph -c ceph-mon -- grep key /etc/ceph/ceph.client.admin.keyring |awk "{printf "%s", $NF}’|base64

# 將上面輸出的編碼的 keyring 填入到 storageclass使用的 secret: pvc-ceph-client-key中, 替換 null 為以上值
kubectl edit secret pvc-ceph-client-key  -n ceph

# 創(chuàng)建并初始化 rbd 池
kubectl exec -it ceph-mon-9xqms -n ceph -c ceph-mon -- ceph osd pool create rbd 128 
kubectl exec -it ceph-mon-9xqms -n ceph -c ceph-mon -- rbd pool init rbd

最后, 驗(yàn)證通過(guò) storageclass 動(dòng)態(tài)分配 rbd image。
~/template/ceph_connect # cat test-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: ceph-pvc-2
spec:
  accessModes:
   - ReadWriteOnce
  resources:
    requests:
       storage: 2Gi
  storageClassName: ceph-rbd


~/template/ceph_connect # kubectl get pvc
NAME         STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
ceph-pvc     Bound     pvc-a56fd3d2-9157-11e8-bd1d-fa163eaae838   2Gi        RWO            ceph-pool      1h
ceph-pvc-2   Bound     pvc-b28baac0-9161-11e8-bd1d-fa163eaae838   2Gi        RWO            ceph-rbd       7s

~/template/ceph_connect # kubectl exec -it ceph-mon-9xqms -n ceph -c ceph-mon -- rbd ls
kubernetes-dynamic-pvc-a57200fe-9157-11e8-9008-fa163eaae838
kubernetes-dynamic-pvc-b2931fd1-9161-11e8-9ac7-0a580ae9410b
注意事項(xiàng): 問(wèn)題1

遇到了一個(gè)問(wèn)題,重新安裝的時(shí)候 osd 會(huì)init/Error,是因?yàn)閛sd 盤頭部數(shù)據(jù)沒(méi)有被清理,導(dǎo)致osd的 initContainer 中的prepare-old-pod 這個(gè) container 腳本執(zhí)行錯(cuò)誤,內(nèi)容為:

雖然已經(jīng)在 ceph-overriders.yaml 的 osd-devices 中 設(shè)置了 zap=“1”,但可能是代碼邏輯有問(wèn)題,導(dǎo)致并沒(méi)有清理,需要手動(dòng)清理,步驟為:

# 查看/dev/vdb 設(shè)備狀態(tài)
~/template/ceph_connect # lsblk /dev/vdb
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdb    252:16   0  40G  0 disk
|-vdb1 252:17   0  35G  0 part
`-vdb2 252:18   0   5G  0 part

# 通過(guò) dd 向清空盤頭部的110M覆蓋分區(qū)信息
dd if=/dev/zero of=/dev/vdb1 bs=1M count=110 oflag=sync 
dd if=/dev/zero of=/dev/vdb2 bs=1M count=110 oflag=sync

# 通過(guò) parted 刪除分區(qū)
parted /dev/vdb rm 1
parted /dev/vdb rm 2
問(wèn)題2

storageclass 方式創(chuàng)建 pod 掛在 volume,總是報(bào)錯(cuò)

timeout expired waiting for volumes to attach/mount for pod : 
Error syncing pod 096ac42b-919a-11e8-bd1d-fa163eaae838 ("mypod_ceph(096ac42b-919a-11e8-bd1d-fa163eaae838)"), skipping: timeout expired waiting for volumes to attach/mount for pod "ceph"/"mypod". list of unattached/unmounted volumes=[vol1]

具體的創(chuàng)建步驟是:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: ceph-pvc
  namespace: ceph
spec:
  accessModes:
   - ReadWriteOnce
  resources:
    requests:
       storage: 2Gi
  storageClassName: ceph-rbd
---
kind: Pod
apiVersion: v1
metadata:
  name: mypod
  namespace: ceph
spec:
  containers:
    - name: nginx
      image: nginx
      command:
        - sleep
        - "3600"
      volumeMounts:
      - mountPath: "/mnt/rbd"
        name: vol1
  volumes:
    - name: vol1
      persistentVolumeClaim:
        claimName: ceph-pvc

這個(gè)問(wèn)題在網(wǎng)上目前沒(méi)有解決的明確說(shuō)法,由于看 log 沒(méi)有明顯報(bào)錯(cuò),pvc 和 pv 正常創(chuàng)建但是掛不上去,考慮可能是 kubernetes 這邊調(diào)用 ceph 有問(wèn)題,就將集群內(nèi)所有 host 的 ceph-common 包升級(jí)到對(duì)應(yīng)的版本,解決了這個(gè)問(wèn)題。如果遇到這個(gè)問(wèn)題,不妨一試。我 host 的 ceph-common是之前對(duì)接 j 版 ceph 時(shí)安裝, 現(xiàn)在安裝的 l 版。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/32684.html

相關(guān)文章

  • 使用Rook+CephKubernetes上作持久存儲(chǔ)

    摘要:充當(dāng)在的業(yè)務(wù)流程層,將和流程部署為副本集。來(lái)自的文件將存儲(chǔ)軟件轉(zhuǎn)變?yōu)樽晕夜芾碜晕覕U(kuò)展和自我修復(fù)的存儲(chǔ)服務(wù)。由于請(qǐng)求使用文件系統(tǒng)格式化的卷,因此我需要在所有節(jié)點(diǎn)上安裝工具。如果沒(méi)有指定特定的存儲(chǔ)類,我安裝的任何應(yīng)用程序都將使用進(jìn)行數(shù)據(jù)存儲(chǔ)。 作者:Earl C. Ruby III showImg(https://segmentfault.com/img/bVbljHL?w=300&h=1...

    kuangcaibao 評(píng)論0 收藏0
  • 使用Rook+CephKubernetes上作持久存儲(chǔ)

    摘要:充當(dāng)在的業(yè)務(wù)流程層,將和流程部署為副本集。來(lái)自的文件將存儲(chǔ)軟件轉(zhuǎn)變?yōu)樽晕夜芾碜晕覕U(kuò)展和自我修復(fù)的存儲(chǔ)服務(wù)。由于請(qǐng)求使用文件系統(tǒng)格式化的卷,因此我需要在所有節(jié)點(diǎn)上安裝工具。如果沒(méi)有指定特定的存儲(chǔ)類,我安裝的任何應(yīng)用程序都將使用進(jìn)行數(shù)據(jù)存儲(chǔ)。 作者:Earl C. Ruby III showImg(https://segmentfault.com/img/bVbljHL?w=300&h=1...

    muddyway 評(píng)論0 收藏0
  • k8s與caas--容器云caas平臺(tái)的落地實(shí)踐

    摘要:容器云將支持應(yīng)用的一鍵式部署交付,提供負(fù)載均衡,私有域名綁定,性能監(jiān)控等應(yīng)用生命周期管理服務(wù)。本容器云平臺(tái),對(duì)接持續(xù)集成發(fā)布系統(tǒng)。 前言 在移動(dòng)互聯(lián)網(wǎng)時(shí)代,新的技術(shù)需要新技術(shù)支持環(huán)境、新的軟件交付流程和IT架構(gòu),從而實(shí)現(xiàn)架構(gòu)平臺(tái)化,交付持續(xù)化,業(yè)務(wù)服務(wù)化。容器將成為新一代應(yīng)用的標(biāo)準(zhǔn)交付件,容器云將幫助企業(yè)用戶構(gòu)建研發(fā)流程和云平臺(tái)基礎(chǔ)設(shè)施??s短應(yīng)用向云端交付的周期,降低運(yùn)營(yíng)門檻。加速向互...

    h9911 評(píng)論0 收藏0
  • k8s與caas--容器云caas平臺(tái)的落地實(shí)踐

    摘要:容器云將支持應(yīng)用的一鍵式部署交付,提供負(fù)載均衡,私有域名綁定,性能監(jiān)控等應(yīng)用生命周期管理服務(wù)。本容器云平臺(tái),對(duì)接持續(xù)集成發(fā)布系統(tǒng)。 前言 在移動(dòng)互聯(lián)網(wǎng)時(shí)代,新的技術(shù)需要新技術(shù)支持環(huán)境、新的軟件交付流程和IT架構(gòu),從而實(shí)現(xiàn)架構(gòu)平臺(tái)化,交付持續(xù)化,業(yè)務(wù)服務(wù)化。容器將成為新一代應(yīng)用的標(biāo)準(zhǔn)交付件,容器云將幫助企業(yè)用戶構(gòu)建研發(fā)流程和云平臺(tái)基礎(chǔ)設(shè)施。縮短應(yīng)用向云端交付的周期,降低運(yùn)營(yíng)門檻。加速向互...

    KaltZK 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<