Longhorn with Rancher
はじめに
今回は Rancher で Longhorn です。
いわゆるコンテナ用永続ストレージです。
特徴として、
- PVC から動的プロビジョニング
- 複数 Node でレプリカ
- Web ダッシュボード付属
- etc.
詳しいお話は弊社 Iさんの記事を。
⇒ Longhorn + WordPress on GKE
構成
Host Machine
OS:Windows 10
VirtualBox:6.0.18
Guest Machine
CentOS:7.6
docker-ce:18.09
kubernetes:1.17
Rancher:2.4.2
Rancher & k8s
Rancher & k8s controller/etcd x1
k8s worker x3
※worker にはストレージとして、/(8G) の他に docker(50G)、longhorn(50G) をアタッチ
前準備
上記のサーバ構成を構築後からスタートです。
公式通り、iscsi-initiator-utils をインストールし、必要なディスクをマウントします。
$ yum install iscsi-initiator-utils -y
今回はストレージを別に用意してますが、お試しであれば不要です。
必要なディスクサイズだけ確保してください。
※「/var/lib/rancher/longhorn」に pv が作成されていきます。
$ lsblk -o NAME,FSTYPE,MOUNTPOINT -i
NAME FSTYPE MOUNTPOINT
sda
|-sda1 xfs /boot
`-sda2 LVM2_member
|-centos-root xfs /
`-centos-swap swap ★swap は無効化済み
sdb
`-sdb1 LVM2_member
`-var-docker ext4 /var/lib/docker
sdc
`-sdc1 LVM2_member
`-longhorn-data ext4 /var/lib/rancher/longhorn
Deploy
Rancher の library catalog に含まれているので、「apps」⇒「起動」から Deploy します。
Longhorn を選択すると以下の画面が表示されます。
名前、名前空間(namespace) はデフォルトの「longhorn-system」です。
テンプレートバージョンは「0.8.0」です。
私の場合「loghorn-driver-deployer」Pod が CrashLoopBack で起動しませんでした。
このため、「Kubelet Root Directory」に以下を指定することで起動しました。
Kubelet Root Directory:/var/lib/kubelet
PV 作成先のパスを「Default Data Path」で指定します。
Default Data Path:/var/lib/rancher/longhorn
Dashboard(管理画面) のサービスを今回は「NodePort」で指定しています。
L7 LB もあるのでお好みで指定してください。
最後に「起動」ボタンで Deploy です。
環境にもよりますが、5分以内で起動すると思います。
テスト
実際に PV/PVC を作ってみましょう
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: tmp
namespace: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: longhorn
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mnt
namespace: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
storageClassName: longhorn
$ kubectl apply -f pvc.yaml
persistentvolumeclaim/tmp created
persistentvolumeclaim/mnt created
$ kubectl get pvc,pv
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/mnt Bound pvc-xxx 3Gi RWO longhorn 9s
persistentvolumeclaim/tmp Bound pvc-yyy 1Gi RWO longhorn 10s
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/pvc-xxx 3Gi RWO Delete Bound default/mnt longhorn 5s
persistentvolume/pvc-yyy 1Gi RWO Delete Bound default/tmp longhorn 5s
テスト Pod 作ってマウントしてみましょう。
apiVersion: v1
kind: Pod
metadata:
name: alpine
namespace: default
spec:
containers:
- image: alpine:edge
name: alpine
volumeMounts:
- mountPath: /mnt
name: mnt
- mountPath: /tmp
name: tmp
tty: true
volumes:
- name: mnt
persistentVolumeClaim:
claimName: mnt
- name: tmp
persistentVolumeClaim:
claimName: tmp
$ kubectl apply -f pod.yaml
pod/alpine created
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
alpine 1/1 Running 0 16s
$ kubectl exec alpine -- df -hT /mnt /tmp
Filesystem Type Size Used Available Use% Mounted on
/dev/longhorn/pvc-xxx
ext4 2.9G 9.0M 2.9G 0% /mnt
/dev/longhorn/pvc-yyy
ext4 975.9M 2.5M 957.4M 0% /tmp
無事に pv/pvc が作成され、pod にマウントできました。
Dashboard
折角なので Dashboard のスクリーンショットを何枚か。
Dashboard は Apps にリンクあります。
※以下の場合「31833/tcp」が Dashboard へのリンクです。
まずは、「dashboard」画面です。
グラフと下にはイベントログが表示されています。
次に「Node」画面です。
Node 毎のリソース状況が表示されます。
最後に「Volume」画面です。
pv で払い出しているボリュームの一覧が表示されます。
Attach 先の Pod も表示されています。
また、各 Volume を選択すると詳細な画面に遷移します。
Volume の Snapshot の状況の表示や Snapshot/Backup のスケジュールも設定できます。
おわりに
クラスタストレージ環境が Rancher のカタログで Deploy できるので非常にお手軽に利用できます。
また、機能も必要十分にあるため、色々使い倒していけるのではと思います。
どこかで他のストレージ環境との I/O ベンチマークなども見ていければと思います。
Author And Source
この問題について(Longhorn with Rancher), 我々は、より多くの情報をここで見つけました https://qiita.com/t_ume/items/425f7c93e2e7cfaa7d1c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .