2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

KubernetesでGlusterFSを使う。

Posted at

#初めに
共有ストレージが欲しかったんや。
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]#

以上。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?