rook を使用して Ceph クラスターを構築する

ホスト:

MacBook Pro(Apple M2 Max)

VMware Fusion Player バージョン 13.0.2 

VM ソフトウェアとハ​​ードウェア:

ubuntu 22.04.2

4コアCPU、5Gメモリ、40Gハードドライブ

※各マシンにハードウェアリソースを割り当てることが重要であり、ホストマシンのリソース量を適切に超えると、さまざまな問題が発生します。

IP と役割 (163 はマスター、その他はノード):

192.168.19.163 k8sマスター

192.168.19.161 k8sworker3

192.168.19.162 k8sworker2

192.168.19.164 k8sworker1

k8s スイート:

Kubernetes v1.28.0

Docker バージョン 24.0.5

コンテナー.io 1.6.22

ルーク v1.12.2

1. 各マシンの時間が同期されていることを確認します。

設定リファレンス: Ubuntu で NTP 時刻同期をオンにする_ubuntu 同期時刻_現代の三流魔術師のブログ - CSDN ブログ

2. 各ワーカー ノードに RAW ディスクがあることを確認します。

VM がシャットダウンされたら、設定に「新しいハード ドライブ」を追加するだけです。

新しいハード ディスクを追加して仮想マシンを起動した後、次の lsblk -f を実行して新しいハード ディスク名を表示します。ここでの作成者は nvme0n2 です。FSTYPE 列の値が空であることに注意してください

マスターを除く 3 つのマシンすべて (k8sworker1、k8sworker2、および k8sworker3) に新しいハードドライブがあることを確認します。

 lsblk -f

3. Rook v1.12.2 ソースコードをダウンロードする

git clone --single-branch --branch v1.12.2 ​​​​​​​https://github.com/rook/rook.git

  ここでダウンロードしたディレクトリは /home/zhangzhaokun/rook で、次の手順はこのディレクトリに基づいています。

4. Rook の CSI ミラー アドレスを変更する

rook/deploy/examples ディレクトリに入り、Rook の CSI ミラー アドレスを変更します。元のアドレスは registry.k8s.io ですが、中国では壁のせいでアクセスできません。registry.lank8s.cn に置き換える必要があります。

registry.lank8s.cn とは何かについては、 「Lank8s.cn とは」のドキュメントを参照してください。 

cat operator.yaml |grep IMAGE

結果は次のとおりです。

​​​​​​​

 改訂内容は以下のとおりです。

5.operator.yam 設定を変更する

cat operator.yaml |grep DISCOVERY

ROOK_ENABLE_DISCOVERY_DAEMON: "false"

true に変更する必要があります。

6. ルークのイメージを事前に引く

1) Operator.yaml ファイルでイメージを見つけます。

  1.1) 「image:」形式の画像ファイルを見つけます。

cat operator.yaml |grep "image:"

    結果は次のとおりです。

 1.2) 「_IMAGE」形式の画像ファイルを見つけます。

 cat operator.yaml |grep "_IMAGE"

     結果は次のとおりです。

2)cluster.yaml ファイルでイメージを見つけます。

cat cluster.yaml |grep image

 結果は次のとおりです。

3) 事前にcontainerd経由でイメージを取得します

ここでの速度はあなたの性格によって異なります。速度が非常に遅く失敗することもありますが、非常に速い場合もあります。速度が非常に遅い場合は、ネットワークを切り替える(モバイルから通信 WI-FI に切り替えるなど)可能性があります。大きな問題を引き起こします。

sudo ctr images pull docker.io/rook/ceph:v1.12.2
sudo ctr images pull quay.io/csiaddons/k8s-sidecar:v0.7.0
sudo ctr images pull quay.io/ceph/ceph:v17.2.6
sudo ctr images pull quay.io/cephcsi/cephcsi:v3.9.0
sudo ctr images pull registry.lank8s.cn/sig-storage/csi-node-driver-registrar:v2.8.0
sudo ctr images pull registry.lank8s.cn/sig-storage/csi-resizer:v1.8.0
sudo ctr images pull registry.lank8s.cn/sig-storage/csi-provisioner:v3.5.0
sudo ctr images pull registry.lank8s.cn/sig-storage/csi-snapshotter:v6.2.2
sudo ctr images pull registry.lank8s.cn/sig-storage/csi-attacher:v4.3.0

7. ルークをデプロイする

これは、ディレクトリ rook/deploy/examples に入った後にのみ実行されることに注意してください。

kubectl create -f crds.yaml -f common.yaml -f operator.yaml

rook-ceph 名前空間の下にあるすべてのポッドが 1/1 実行中になる必要があることに注意してください。その後、OK とみなされ、次のステップに進むことができます。

kubectl get pods -n rook-ceph

名前の準備完了ステータスが年齢を再開します

rook-ceph-operator-6ff688d999-wkhcb 1/1 実行中 2 (93 分前) 11 時間

rook-discover-86vc8 1/1 実行中 1 (3 時間 32 分前) 11 時間

rook-discover-b56f8 1/1 実行中 1 (3 時間 32 分前) 11 時間

rook-discover-djfqw 1/1 実行中 2 (93 分前) 11 時間

8.cluster.yamlを変更する

変更点その1:

useAllNodes: false

useAllDevices: false

変更 2:

Ceph で使用されるノード名とディスク名を指定すると、OSD ノードがこれらのノード上で実行されます。

nodes:
  - name: "k8sworker1"
    devices:
      - name: "nvme0n2"
  - name: "k8sworker2"
    devices:
      - name: "nvme0n2"
  - name: "k8sworker3"
    devices:
      - name: "nvme0n2"

9. Ceph クラスターのデプロイ

kubectl create -f cluster.yaml

作成が完了したら、Pod のステータスを確認できます。osd-0/1/2、mon-a/b/c などの Pod は後から登場するもので、問題がある場合はステータスが異常になることが多いので注意してください。

ceph クラスターのステータスを表示します。

kubectl get cephcluster -n rook-ceph

10. ceph クライアント ツール ツールボックスをインストールする

kubectl apply -f toolbox.yaml

結果は次のとおりです。 rook-ceph-tools を見つけます。

コマンドラインを入力します:

kubectl exec -it -n rook-ceph rook-ceph-tools-84f9854d5f-cr7kt -- bash

コマンドラインで ceph のステータスを確認します。

ceph -s
ceph osd status

出力は次のとおりです。

11. ダッシュボードの展開

ダッシュボードを展開します。

kubectl create -f dashboard-external-https.yaml

サービスを見る:

kubectl get svc -n rook-ceph

結果は次のとおりです。

ホスト上の任意のワーカーにアクセスすることで、ダッシュボードにアクセスできます。

https://192.168.19.161:31052

デフォルトのユーザー名は admin で、パスワードは次のコードを通じて取得できます。

kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}"|base64 --decode && echo

結果は次のとおりです。

a's?6XlvZk'75dc7*X[~

おすすめ

転載: blog.csdn.net/zhangzhaokun/article/details/132424595