使用Heketi作为Kubernetes的持久存储GlusterFS的external provisioner

已经通过Helm 部署的一个mysql2 实例,使用存储2G,信息查看如下:

# helm list
NAME        REVISION    UPDATED                     STATUS      CHART                   NAMESPACE
mysql2      1           Thu Apr 12 15:27:11 2018    DEPLOYED    mysql-0.3.7             default

查看PVC和PV,大小2G,mysql2-mysql

# kubectl get pvc
NAME                        STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
mysql2-mysql                Bound     pvc-ea4ae3e0-3e22-11e8-8bb6-08002795cb26   2Gi        RWO            slow           19h

# kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS        CLAIM                               STORAGECLASS   REASON    AGE
pvc-ea4ae3e0-3e22-11e8-8bb6-08002795cb26   2Gi        RWO            Delete           Bound         default/mysql2-mysql                slow                     19h

查看mysql的pod

# kubectl get pod|grep mysql2
mysql2-mysql-56d64f5b77-j2v84                             1/1       Running   2          19h

进入mysql所在容器

# kubectl exec -it mysql2-mysql-56d64f5b77-j2v84  /bin/bash

查看挂载路径,查看挂载信息

[email protected]:/#cd /var/lib/mysql
[email protected]:/var/lib/mysql#
[email protected]:/var/lib/mysql# df -h
Filesystem                                          Size  Used Avail Use% Mounted on
none                                                 48G  9.2G   37G  21% /
tmpfs                                               1.5G     0  1.5G   0% /dev
tmpfs                                               1.5G     0  1.5G   0% /sys/fs/cgroup
/dev/mapper/ubuntu--1--vg-root                       48G  9.2G   37G  21% /etc/hosts
shm                                                  64M     0   64M   0% /dev/shm
192.168.5.191:vol_2c2227ee65b64a0225aa9bce848a9925  2.0G  264M  1.8G  13% /var/lib/mysql
tmpfs                                               1.5G   12K  1.5G   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs                                               1.5G     0  1.5G   0% /sys/firmware

使用dd写入数据,写入一段时间以后,空间满了,会报错(报错信息有bug,不是报空间满了,而是报文件系统只读,应该是glusterfs和docker配合的问题)

[email protected]:/var/lib/mysql# dd if=/dev/zero of=test.img bs=8M count=300 

dd: error writing 'test.img': Read-only file system
dd: closing output file 'test.img': Input/output error

查看写满以后的文件大小

[email protected]:/var/lib/mysql# ls -l
total 2024662
-rw-r----- 1 mysql mysql         56 Apr 12 07:27 auto.cnf
-rw-r----- 1 mysql mysql       1329 Apr 12 07:27 ib_buffer_pool
-rw-r----- 1 mysql mysql   50331648 Apr 12 12:05 ib_logfile0
-rw-r----- 1 mysql mysql   50331648 Apr 12 07:27 ib_logfile1
-rw-r----- 1 mysql mysql   79691776 Apr 12 12:05 ibdata1
-rw-r----- 1 mysql mysql   12582912 Apr 12 12:05 ibtmp1
drwxr-s--- 2 mysql mysql       8192 Apr 12 07:27 mysql
drwxr-s--- 2 mysql mysql       8192 Apr 12 07:27 performance_schema
drwxr-s--- 2 mysql mysql       8192 Apr 12 07:27 sys
-rw-r--r-- 1 root  mysql 1880887296 Apr 13 02:47 test.img

查看挂载信息(挂载信息显示bug,应该是glusterfs的bug)

[email protected]:/var/lib/mysql# df -h
Filesystem                                          Size  Used Avail Use% Mounted on
none                                                 48G  9.2G   37G  21% /
tmpfs                                               1.5G     0  1.5G   0% /dev
tmpfs                                               1.5G     0  1.5G   0% /sys/fs/cgroup
/dev/mapper/ubuntu--1--vg-root                       48G  9.2G   37G  21% /etc/hosts
shm                                                  64M     0   64M   0% /dev/shm
192.168.5.191:vol_2c2227ee65b64a0225aa9bce848a9925  2.0G  -16E     0 100% /var/lib/mysql
tmpfs                                               1.5G   12K  1.5G   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs                                               1.5G     0  1.5G   0% /sys/firmware

查看文件夹大小,为2G

# du -h
25M        ./mysql
825K    ./performance_schema
496K    ./sys
2.0G    .

如上说明glusterfs的限额作用是起效的,限制在2G的空间大小。