美文网首页
k8s 中使用 glusterfs 做存储

k8s 中使用 glusterfs 做存储

作者: Robin92 | 来源:发表于2022-05-04 17:51 被阅读0次

前面我们用了 nfs 做 pv,可以通过 kubectl explain pv.spec 查看支持的字段,其中包含 nfs、glusterfs,通过 kubectl explain pv.spec.glusterfs 查看 glusterfs 支持的选项

   endpoints    <string> -required- # gfs 入口终端(IP:PORT) 
   path <string> -required- # gfs 的路径
   readOnly <boolean> # 是否只读

创建 ep

apiVersion: v1
kind: Endpoints # 可通过 kubectl get ep 查看
metadata:
  name: glusterfs
  namespace: default
subsets:
  - addresses: # glasterfs 结点的所有 IP
    - ip: 192.168.208.130 
    - ip: 192.168.208.131
    - ip: 192.168.208.129
    ports:
    - port: 49152 # gfs 默认开启的端口,通过 netstat -lntup 查看
      protocol: TCP
查看 ep

创建 svc

kind: Service
apiVersion: v1
metadata:
  name: glusterfs # 需要和 endpoints 的名字一致,靠名字关联
  namespace: default
spec:
  type: ClusterIP
  ports:
  - port: 49152
    targetPort: 49152
    protocol: TCP 
  sessionAffinity: None
svc 关联到了 ep

注意:

  • svc 和 ep 是通过 metadata.name 进行关联的。
  • ep.subsets[].ports[].name 如果有设置的话,会导致 svc 关联不上,可能是用其他方式关联。

创建 pv/pvc

apiVersion: v1
kind: PersistentVolume
metadata:
  name: gluster
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteMany
  glusterfs:
    path: "test-gfs" # 路径就是卷的名字,通过 gluster volume list 查看
    endpoints: "glusterfs" # ep 资源名
    readOnly: false
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: gluster
spec:
  resources:
    requests:
      storage: 20Gi # 注意会找合适的最小的容量进行绑定
  accessModes:
    - ReadWriteMany

kubectl create -f k8s/gfs/gfs-pv-pvc.yml 创建之后:

pv/pvc 绑定关系

pod 使用 gluster pv/pvc

更改上次使用的 pv和pvc存储 - 创建 pv 部分的 deployment 资源配置文件

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: fs-deployment
spec:
  revisionHistoryLimit: 0
  replicas: 3
  template:
    metadata:
      labels:
        app: fs-svr 
    spec:
      containers:
        - name: fs-svr 
          resources:
            limits:
              memory: "128Mi"
              cpu: "500m"
          image: 192.168.208.130:5000/fs-svr:0.0.1
          args: ["-p", "9000", "-d", "/data/gfs"] # 更改程序运行的参数:文件目录
          ports:
            - containerPort: 9000
          volumeMounts:
            - name: fsdata         # 绑定 pod 定义的 volumes
              mountPath: /data/gfs # 本地目录
      volumes: # 定义 pod 内使用的卷
        - name: fsdata             # 自定义一个名称,必须小写,用于 containers[].volumeMounts[].name
          persistentVolumeClaim:   # 
            claimName: gluster     # 使用的 pvc 的名字

注意:
k8s 中的 kubectl explain deployment.spec.template.spec.containers.command 对应是 docker 的 ENTRYPOINT,args 对应 docker 的 CMD。

更改成功后,可通过浏览器界面查看目录,通过 postman 上传文件。

浏览器界面查看 容器内查看 glusterfs brick 中查看

在 node 使用 kubectl

在当前 1.5.2 版本,可以使用 kubectl -s <ip:port> get nodes 进行访问

node结点使用 kubectl

只更新镜像的命令

kubectl set image deploy fs-deployment fs-svr=192.168.208.130:5000/fs-svr:0.0.2
# kubectl set image deploy <deploy_name> <container_name>=<image:version>

当前版本下 kubectl set 后面支持两种资源,imageresources(镜像或资源申请/限制)

相关文章

网友评论

      本文标题:k8s 中使用 glusterfs 做存储

      本文链接:https://www.haomeiwen.com/subject/tqqwyrtx.html