Help us understand the problem. What is going on with this article?

KubernetesでGlusterFSを使う。

More than 1 year has passed since last update.

初めに

共有ストレージが欲しかったんや。
NASでNFS使ってもよかったけど、メンテナスするときにサーバ全体を停止させるのが面倒。
だったらHCIライクにすればよいのではと。

前提

・自宅でKubernetes環境を構築(3台)
・GlusterFS構築済み

目的

共有ストレージを設定する。

GlusterFSの構成

GlusterFS.png

[root]# gluster peer status
Number of Peers: 2

Hostname: etcd-master3
Uuid: 36d78117-e3ba-4bcc-b8bd-aa53109b7de7
State: Peer in Cluster (Connected)

Hostname: etcd-master2
Uuid: 03b802d9-dc51-4105-91b6-8720baabe80e
State: Peer in Cluster (Connected)
[root]#

Endpointsの設定

glusterfs-endpoint.yaml
kind: Endpoints
apiVersion: v1
metadata:
  name: glusterfs
subsets:
- addresses:
  - ip: "192.168.1.21" ★GlusterFS peer ipアドレスを指定する。
  ports:
  - port: 1
- addresses:
  - ip: "192.168.1.22" ★GlusterFS peer ipアドレスを指定する。
  ports:
  - port: 1
- addresses:
  - ip: "192.168.1.23" ★GlusterFS peer ipアドレスを指定する。
  ports:
  - port: 1 ★適当に指定

上記ファイルを適用する。

$ kubectl create -f glusterfs-endpoint.yaml

Serviceの設定

glusterfs-service.yaml
kind: Service
apiVersion: v1
metadata:
  name: glusterfs
spec:
  ports:
  - port: 1 ★endpointで指定したポート番号

上記ファイルを適用する。

$ kubectl create -f glusterfs-service.yaml

これで準備おっけー

ボリュームの準備

/home/glusterfs/ 配下にディレクトリを作成してGlusterFS用の領域としている。

各サーバで実行する。

[root]# mkdir /home/glusterfs/docker-registry/

□ etcd-master1
□ etcd-master2
□ etcd-master3

ボリュームを3台でミラーする構成を取る。

いずれか1台で実行する。

3台でミラー構成を構築
[root]# gluster vol create docker-registry replica 3 etcd-master1:/home/glusterfs/docker-registry/ etcd-master2:/home/glusterfs/docker-registry/ etcd-master3:/home/glusterfs/docker-registry/

ボリューム作成
[root]# gluster vol set docker-registry

ボリュームの提供を開始する。
[root]# gluster vol start docker-registry

作成したボリュームを確認する。

[root]# gluster vol status
Status of volume: docker-registry
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick etcd-master1:/home/glusterfs/docker-r
egistry                                     49158     0          Y       13108
Brick etcd-master2:/home/glusterfs/docker-r
egistry                                     49158     0          Y       5667
Brick etcd-master3:/home/glusterfs/docker-r
egistry                                     49158     0          Y       10874
Self-heal Daemon on localhost               N/A       N/A        Y       13131
Self-heal Daemon on etcd-master2            N/A       N/A        Y       5692
Self-heal Daemon on etcd-master3            N/A       N/A        Y       10951

Task Status of Volume docker-registry
------------------------------------------------------------------------------
There are no active volume tasks

ボリュームをマウントし、ディレクトリ作成

[root]# mount -t glusterfs localhost:docker-registry /mnt
[root]# mkdir /mnt/regi-pv

ボリューム定義

pv.yaml
kind: PersistentVolume
apiVersion: v1
metadata:
  name: regi-docker-registry-pv
  labels:
    name: regi-docker-registry-pv
spec:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 20Gi ★20GiB分確保する
  glusterfs:
    endpoints: glusterfs
    path: docker-registry/regi-pv ★作成したボリューム/ディレクトリ
    readOnly: false

上記ファイルを適用する。

$ kubectl create -f pv.yaml

ボリューム要求

pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  creationTimestamp: null
  labels:
    io.kompose.service: regi-docker-registry-pvc
  name: regi-docker-registry-pvc
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 20Gi
  selector:
     matchLabels:
       name: regi-docker-registry-pv
status: {}

上記ファイルを適用する。

$ kubectl create -f pvc.yaml

ボリュームの確認

[root]# kubectl get pv
NAME                      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM                               STORAGECLASS   REASON    AGE
regi-docker-registry-pv   20Gi       RWX            Retain           Bound      default/regi-docker-registry-pvc                             8s
[root]# 
[root]# kubectl get pvc
NAME                       STATUS    VOLUME                    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
regi-docker-registry-pvc   Bound     regi-docker-registry-pv   20Gi       RWX                           45s
[root]#

以上。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away