Kubernetes 使用GlusterFS 做静态模式共享存储

2019-08-07 0 By admin

Kubernetes 服务使用 GlusterFS 共享服务做静态模式资源供应的共享存储的配置过程记录如下;当然也可以配置动态模式的资源工程,不过本文不涉及。

一、准备工作

要配置 Kubernetes 服务的静态模式资源供应,自然要一套运行正常的 kubernetes 服务了;另外因为这里使用GlusterFS 做共享存储,所以也要一套运行正常的GlusterFS 服务。
1、需要提供GlusterFS 服务的节点。
2、需要提供GlusterFS 服务的Volume 名称和存储空间大小。

二、Kubernetes 创建Endpoints 资源

将GlusterFS 服务的节点信息,创建为一个统一的 Kubernetes 的Eendponits 资源。
gluster-endpoints.yaml 文件如下:

apiVersion: v1
kind: Endpoints
metadata:
  name: gluster-endpoints
subsets:
  - addresses:
    - ip: 10.0.1.1
    ports:
    - port: 24007
      name: glusterd
  - addresses:
    - ip: 10.0.1.2
    ports:
    - port: 24007
      name: glusterd
  - addresses:
    - ip: 10.0.1.3
    ports:
    - port: 24007
      name: glusterd

创建Endpoints资源和查看资源
kubectl create -f gluster-endpoints.yaml
kubectl get ep

三、kubernetes 创建 PersistentVolume 资源

创建PV 资源,需要使用到之前创建的Endpoints 和GlusterFS 文件共享的Volume 名称和存储空间大小。
gluster-pv.yaml 文件如下:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: gluster-pv
spec:
  capacity:
    storage: 90Gi
  accessModes:
    - ReadWriteMany
  glusterfs:
    endpoints: "gluster-endpoints"
    path: "models"
    readOnly: false

创建PersistentVolume 和查看资源
kubectl create -f gluster-pv.yaml
kubectl get pv

四、kubernetes 创建PersistentVolumeClaim 资源

创建gluster-pvc.yaml 文件,指定请求资源大小。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: gluster-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 90Gi

创建PersistentVolumeClaim 和查看资源

kubectl create -f gluster-pvc.yaml
kubectl get pvc

五、deployment 中使用PVC资源

    spec:
      containers:
      - name: nginx
	env:
	- name: POD_NAME
	  valueFrom:
		fieldRef:
		  apiVersion: v1
		  fieldPath: metadata.name
        image: nginx
        volumeMounts:
          - name: gluster-pvc
            mountPath: "/html"
          - name: gluster-pvc
            mountPath: "/logs"
            subPathExpr: $(POD_NAME)
      volumes:
        - name: gluster-pvc
          persistentVolumeClaim:
            claimName: gluster-pvc

创建Depolyment和查看资源

kubectl create -f gluster-deployment.yaml
kubectl get pods