安装 GlusterFS
可以看我的另一篇博客:CentOS 7.6 部署 GlusterFS 分布式存储系统
整合到 Kubernetes 集群
配置 endpoint
--- apiVersion: v1 kind: Endpoints metadata: annotations: name: glusterfs # 注意修改成自己需要使用的 namespace namespace: monitor subsets: - addresses: # 配置成自己的 GlusterFS 节点 ip - ip: 172.72.0.96 - ip: 172.72.0.97 ports: # GlusterFS 默认端口是 49152,注意修改 - port: 49152 protocol: TCP
配置 service
--- apiVersion: v1 kind: Service metadata: annotations: name: glusterfs # 注意修改成自己需要使用的 namespace namespace: monitor spec: ports: # GlusterFS 默认端口是 49152,注意修改 - port: 49152 protocol: TCP targetPort: 49152 sessionAffinity: None type: ClusterIP
创建 pv
accessModes
-访问模式
ReadWriteOnce
-卷可以被一个节点以读写方式挂载。 ReadWriteOnce 访问模式也允许运行在同一节点上的多个 Pod 访问卷。
ReadOnlyMany
-卷可以被多个节点以只读方式挂载
ReadWriteMany
-卷可以被多个节点以读写方式挂载
ReadWriteOncePod
-卷可以被单个 Pod 以读写方式挂载;这只支持 CSI 卷以及需要 Kubernetes 1.22 以上版本
persistentVolumeReclaimPolicy
-定义当从持久卷声明释放持久卷时会发生什么
Retain
-手动创建
Delete
-动态制备 PersistentVolumes 所用的默认值
Recycle
-已弃用
--- apiVersion: v1 kind: PersistentVolume metadata: annotations: labels: name: monitor-config-pv spec: accessModes: - ReadOnlyMany capacity: storage: 10Gi glusterfs: endpoints: glusterfs # k8s-gfs-data 是我的 GlusterFS 卷的名称,注意修改成自己的 # config 是我定义的路径,注意修改成自己的 path: k8s-gfs-data/kubernetest/config readOnly: false persistentVolumeReclaimPolicy: Retain
验证
kubectl get pv | grep monitor
pv
目前处于 Available
状态
monitor-config-pv 10Gi ROX Retain Available 21s
创建 pvc
--- apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: labels: name: monitor-config-pvc namespace: monitor spec: accessModes: - ReadOnlyMany resources: requests: storage: 10Gi selector: matchLabels:
验证
查看
pv
的状态
kubectl get pv | grep monitor
pv
此时处于 Bound
状态
monitor-config-pv 10Gi ROX Retain Bound monitor/monitor-config-pvc 22s
查看 pvc
的状态
kubectl get pvc -n monitor | grep monitor
pvc
处于 Bound
的状态,绑定的 pv
是 monitor-config-pv
monitor-config-pvc Bound monitor-config-pv 10Gi ROX 5s
接下来就可以在 pod
中应用 pvc
了