前提¶
手順¶
- longhorn.shを実行するだけ
導入¶
これを実行すれば,PVCのStorageClassをLonghornに設定するだけで,使うことができます.
参考
https://longhorn.io/docs/1.5.3/deploy/install/
https://longhorn.io/docs/1.5.3/deploy/install/install-with-kubectl/
longhorn.sh
#!/bin/bash
set -eux
# LonghornのiSCSIサポートをインストール
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/prerequisite/longhorn-iscsi-installation.yaml
# LonghornのNFSサポートをインストール
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/prerequisite/longhorn-nfs-installation.yaml
# Longhorn v1.5.3のインストール
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/longhorn.yaml
# ステータス確認前に待つ
echo "Sleeping for 120 seconds for resources to be up..."
kubectl wait --for=condition=Ready pod -l app=longhorn-manager -n longhorn-system --timeout=120s
# LonghornのPodとサービスの状態を確認
kubectl -n longhorn-system get pod
kubectl -n longhorn-system get svc longhorn-frontend
longhorn.sh
#!/bin/bash
set -eux
# LonghornのiSCSIサポートをインストール
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.6.2/deploy/prerequisite/longhorn-iscsi-installation.yaml
# LonghornのNFSサポートをインストール
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.6.2/deploy/prerequisite/longhorn-nfs-installation.yaml
# 前提環境の確認
if ! curl -sSfL https://raw.githubusercontent.com/longhorn/longhorn/v1.6.2/scripts/environment_check.sh | bash; then
echo "環境チェックに失敗しました。終了します。"
exit 1
fi
# Longhorn v1.6.2のインストール
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.6.2/deploy/longhorn.yaml
# LonghornマネージャーPodが準備完了になるのを待機(タイムアウト付き)
echo "LonghornマネージャーのPodが起動するのを待っています。"
if ! kubectl wait --for=condition=Ready pod -l app=longhorn-manager -n longhorn-system --timeout=300s; then
echo "LonghornマネージャーPodが時間内に準備完了になりませんでした。終了します。"
exit 1
fi
# LonghornのPodとサービスの状態を確認
kubectl -n longhorn-system get pod
kubectl -n longhorn-system get svc longhorn-frontend
しばらくした後のLonghornのPodとサービスの状態¶
LonghornのPod状態¶
$ kubectl -n longhorn-system get pod
NAME READY STATUS RESTARTS AGE
longhorn-manager-fkfww 1/1 Running 0 5m32s
longhorn-ui-8568cffb59-dp4pv 1/1 Running 0 5m32s
longhorn-driver-deployer-7bbc9d5b6f-wgjqh 1/1 Running 0 5m32s
longhorn-ui-8568cffb59-948dm 1/1 Running 0 5m32s
instance-manager-4752bede5aca439f851e177acd21ab5c 1/1 Running 0 5m10s
engine-image-ei-68f17757-kj65n 1/1 Running 0 5m11s
longhorn-manager-88jnq 1/1 Running 0 5m32s
csi-resizer-77cddbfc7c-75rvl 1/1 Running 0 3m6s
csi-resizer-77cddbfc7c-tjkf5 1/1 Running 0 3m6s
csi-provisioner-65cb5cc4ff-b42fg 1/1 Running 0 3m6s
csi-snapshotter-78cb65cc4f-m482q 1/1 Running 0 3m6s
csi-provisioner-65cb5cc4ff-whb9l 1/1 Running 0 3m6s
csi-snapshotter-78cb65cc4f-d47nl 1/1 Running 0 3m6s
csi-attacher-f98ff75fb-5jr5j 1/1 Running 0 3m6s
csi-attacher-f98ff75fb-nr87r 1/1 Running 0 3m6s
longhorn-csi-plugin-5qmcq 3/3 Running 0 3m5s
engine-image-ei-68f17757-n64sh 1/1 Running 0 5m11s
csi-snapshotter-78cb65cc4f-c8mv7 1/1 Running 0 3m6s
csi-attacher-f98ff75fb-7xtfm 1/1 Running 0 3m6s
csi-resizer-77cddbfc7c-rspl9 1/1 Running 0 3m6s
csi-provisioner-65cb5cc4ff-qwx7w 1/1 Running 0 3m6s
instance-manager-87b6b37139b0b23aa2410eb6ade3ab5e 1/1 Running 0 4m16s
longhorn-csi-plugin-z97g4 3/3 Running 0 3m5s
LonghornのPodとサービスの状態¶
$ kubectl -n longhorn-system get svc longhorn-frontend
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
longhorn-frontend ClusterIP 10.43.85.54 <none> 80/TCP 11m
クラスタ内の80ポートからkubectlを実行しているPCの8080ポートへポートフォワーディング
$ kubectl port-forward -n longhorn-system svc/longhorn-frontend 8080:80 --address 0.0.0.0
Forwarding from 127.0.0.1:8080 -> 8000
Forwarding from [::1]:8080 -> 8000
ブラウザでlocalhost:8080へアクセス

注意点¶
ノードが2台のときは,Default Replica Countを2にすると,Degradedを回避できると思っていたけど,できなかったことを下記に載せます.

ただ,ここを変えるだけでは回避できないっぽいので,ConfigMapをいじりましょう!
longhorn-storageclassというConfigMapのnumberOfReplicas: \"3\"を2に書き換えることで改善できる.
https://tech.opst.co.jp/2022/07/05/%E5%88%86%E6%95%A3%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E3%80%8Clonghorn%E3%80%8D%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F/
さらにできない場合は以下のコマンドを使ってValueを2に書き換えましょう!
kubectl -n longhorn-system edit settings default-replica-count