LoginSignup
2
3

More than 3 years have passed since last update.

はじめに

今回は Rancher で Longhorn(v1.0) です。
以前の記事でも取り上げたのですが、今回は正式リリース版で試そうと思います。

※以前の記事(v0.8):Longhorn with Rancher

構成

VM
CentOS:7.6
docker-ce:18.09
kubernetes:1.18
Rancher:2.4.6

Rancher & k8s
Rancher & k8s controller/etcd x1
k8s worker x3
Longhorn:1.0.2
※worker にはストレージとして、/(8G) の他に docker(50G)、longhorn(50G) をアタッチ

前準備

まずは必要なパッケージをインストールします。

必須パッケージインストール
$ yum install iscsi-initiator-utils -y

ディスク、マウントの構成は以下の通りです。
※前の記事からの変更点として Longhorn のデフォルトディレクトリに変更があったので、
マウントポイントのパスを「/var/lib/rancher/longhorn」から「/var/lib/longhorn」に変更しています。

ディレクトリ構成
$ lsblk
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                 8:0    0    8G  0 disk
├─sda1              8:1    0    1G  0 part /boot
└─sda2              8:2    0    7G  0 part
  ├─centos-root   253:0    0  6.2G  0 lvm  /
  └─centos-swap   253:1    0  820M  0 lvm  [SWAP]
sdb                 8:16   0   50G  0 disk
└─sdb1              8:17   0   50G  0 part
  └─var-docker    253:2    0   50G  0 lvm  /var/lib/docker
sdc                 8:32   0   50G  0 disk
└─sdc1              8:33   0   50G  0 part
  └─longhorn-data 253:3    0   50G  0 lvm  /var/lib/longhorn

Deploy

Rancher の library catalog に含まれているので、「apps」⇒「起動」から Deploy します。

Longhorn を選択すると以下の画面が表示されます。
テンプレートバージョンは「1.0.2」です。
前の記事では「Kubelet Root Directory」を設定しないと起動しなかったのですが、今回は指定せず起動しました。

image.png

Dashboard(管理画面) のアクセス方法を「NodePort」で指定します。

image.png

「起動」をクリックするとデプロイが始まります。

Apps
image.png

ワークロード
image.png

テスト

テスト用に PV / PVC を作って Pod にマウントさせてみましょう。

pvc.yaml
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
pv,pvc作成
$ 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-xxxxx   3Gi        RWO            longhorn       20s
persistentvolumeclaim/tmp   Bound    pvc-yyyyy   1Gi        RWO            longhorn       20s

NAME                         CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM         STORAGECLASS   REASON   AGE
persistentvolume/pvc-xxxxx   3Gi        RWO            Delete           Bound    default/mnt   longhorn                13s
persistentvolume/pvc-yyyyy   1Gi        RWO            Delete           Bound    default/tmp   longhorn                13s

pv/pvc が作成できたので、Pod にマウントさせてみましょう。

pod.yaml
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
pod作成
$ kubectl apply -f pod.yaml
pod/alpine created

$ kubectl get pod
NAME     READY   STATUS    RESTARTS   AGE
alpine   1/1     Running   0          33s

$  kubectl exec alpine -- df -hT /mnt /tmp
Filesystem               Type     Size      Used  Available Use% Mounted on
/dev/longhorn/pvc-xxxxx  ext4     975.9M    2.5M  957.4M    0%   /tmp
/dev/longhorn/pvc-yyyyy  ext4     2.9G      9.0M  2.9G      0%   /mnt

無事に pv/pvc が作成され、pod にマウントできました。

おわりに

正式版になりましたが、相変わらずシンプルで使いやすいです。
PV/PVC を簡単に用意できるのは魅力的だと思います。

今回は Rancher の管理画面からデプロイしましたが、helm 版もあるので helm を使っている方は下記でお試しできます。
https://longhorn.io/docs/1.0.2/deploy/install/install-with-helm/

2
3
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
2
3