LoginSignup
3
1

More than 1 year has passed since last update.

k3sクラスター上にLonghornをインストールする

Last updated at Posted at 2022-07-12

先日来、お試しで動かしているk3sクラスター上にLonghornをインストールします。

工場のエッジ側でk3sが使えないかという事で、色々勉強してます。k3sクラスタ自体をetcdでHA構成にしたわけですが、コンテナ用永続ストレージも簡単に失われないようにしたいと考え、Longhornに挑戦してみました。

1.事前準備

用意したインスタンス

サーバー用×3
名前:k3s-a,k3s-b,k3s-c
インスタンスタイプ:t3.large
ストレージ:20G
AMI:Debian 11を指定

エージェント用×1
名前:k3s-d
インスタンスタイプ:t2.micro
ストレージ:20G

  • 各インスタンスは、同じサブネットに所属するように設定しておきました。
  • セキュリティグループも各インスタンス同じものを設定しておきます。このセキュリティグループは、同じセキュリティグループに所属するインスタンスからは無制限にアクセスできるようにしておく必要があります。

ソフトウェア構成

k3s側
Debian GNU/Linux 11
k3s version v1.23.8+k3s1 (53f2d4e7)
go version go1.17.5
Longhorn v1.3.0
Windows端末側
Rancher Desktop 1.2.1
※kubectlはRancher Desktop付属のもの。
※Windows端末からkubectlできるようにしましたが、Linuxでもなんでも同様にできるはずです。

2.インストール

open-iscsiのインストール

Longhornインストールに先立ち、Open-iSCSIをインストールします。各インスタンスはDebianで動いてますので、それぞれのインスタンスで以下を実行します。

powershell
$ apt -y install open-iscsi

Longhornインストール

公式サイトに則ってインストールしていきます。インストールに使うyamlファイルを確認したかったので、https://raw.githubusercontent.com/longhorn/longhorn/v1.3.0/deploy/longhorn.yamlをローカルにダウンロードしてから以下を実行しました。同じyamlファイルでインストールするわけですから、当然同じ結果になります。

powershell
$ kubectl apply -f longhorn.yaml

次に以下コマンドを確認し、podが全てrunnningとなっていればOKです。

$ kubectl -n longhorn-system get pod

()
NAME                                           READY   STATUS    RESTARTS   AGE
longhorn-ui-b7c844b49-w25g5                    1/1     Running   0          2m41s
longhorn-conversion-webhook-xxxxxxxxxx-xxxxx   1/1     Running   0          2m41s
longhorn-conversion-webhook-xxxxxxxxxx-xxxxx   1/1     Running   0          2m41s
longhorn-admission-webhook-xxxxxxxxxx-xxxxx    1/1     Running   0          2m41s
longhorn-admission-webhook-xxxxxxxxxx-xxxxx    1/1     Running   0          2m41s
(以下略)

3.ハマった部分

open-iscsiを忘れてはいけない

先述した通りopen-iscsiを先に入れておかなくてはなりません。忘れたままLonghornをインストールすると以下のようになります。まず、longhorn--driver-deployerのステイタスがInit:0/1と表示されます。そして、longhorn-managerのステイタスはCrashLoopBackoffとなり動いていません。ちなみにCrashLoopBackoffとはコンテナ内のプロセスの終了を検知してコンテナの再起動を繰り返している状態だそうです(参考)

$ kubectl -n longhorn-system get pod

()
NAME                                        READY   STATUS             RESTARTS   AGE
longhorn-driver-deployer-xxxxxxxxxx-xxxxx   0/1     Init:0/1           0          118s
longhorn-manager-xxxxx                      0/1     CrashLoopBackOff   4          118s
longhorn-ui-xxxxxxxxxx-xxxxx                1/1     Running            0          118s

公式のどこかにはopen-iscsiが必要な事が書いてあったのかもしれませんね。一つ目のハマり処でした。

4.おわりに

今回はk3sクラスタにLonghornのインストールを行いました。
今後は、実際に永続ボリュームを作ってみます。また、LonghornUIにもアクセスしてみます。

5.参考文献

Install with Kubectl・・・公式
[Question] longhorn-driver-deployer can not start #1549・・・この記事でopen-iscsiが必要であることに気付いた
Kubernetesのポッドが起動しない原因と対策・・・CrashLoopBackOff等statusの意味をここで知りました

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1