前面我们用了 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
创建之后:
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
进行访问
只更新镜像的命令
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
后面支持两种资源,image
或 resources
(镜像或资源申请/限制)
网友评论