我将kubernetes从Google GKE移到了自己的机架中。我应该使用什么持久性存储?
Kubernetes Local Persistent仅在2018年4月13日成为beta版本 https://kubernetes.io/blog/2018/04/13/local-persistent-volumes-beta/
我看到了很多选择: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes
不确定应该选择什么。可以解决GKE部署文件的问题吗?
答案 0 :(得分:3)
在GKE的部署文件中,您需要根据持久卷设置更改spec.volumes
设置。
我建议您选择以下选项之一:
最简单的方法是使用HostPath
。它将来自主机节点文件系统的文件或目录装载到Pod中。请注意,在这种情况下,如果没有其他配置,则无法从另一个节点访问一个节点上的数据。在Kubernetes中的用法示例:
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /test-pd
name: test-volume
volumes:
- name: test-volume
hostPath:
# directory location on host
path: /data
# this field is optional
type: Directory
您可以使用NFS
。您需要配置NFS服务器,然后可以通过持久卷声明在“部署”中使用其卷。在Kubernetes中的用法示例:
apiVersion: v1
kind: Deployment
metadata:
name: nfs-busybox
spec:
replicas: 2
selector:
name: nfs-busybox
template:
metadata:
labels:
name: nfs-busybox
spec:
containers:
- image: busybox
command:
- sh
- -c
- 'while true; do date > /mnt/index.html; hostname >> /mnt/index.html; sleep $(($RANDOM % 5 + 5)); done'
imagePullPolicy: IfNotPresent
name: busybox
volumeMounts:
# name must match the volume name below
- name: nfs
mountPath: "/mnt"
volumes:
- name: nfs
persistentVolumeClaim:
claimName: nfs
您可以浏览link,以获取有关使用NFS的更多信息。
您可以使用GlusterFS
。您需要配置自己的GlusterFS安装,然后可以在Deployments中使用其卷。在Kubernetes中的用法示例:
apiVersion: v1
kind: Deployment
metadata:
name: nfs-busybox
spec:
replicas: 2
selector:
name: nfs-busybox
template:
metadata:
labels:
name: nfs-busybox
spec:
containers:
- image: busybox
command:
- sh
- -c
- 'while true; do date > /mnt/index.html; hostname >> /mnt/index.html; sleep $(($RANDOM % 5 + 5)); done'
imagePullPolicy: IfNotPresent
name: busybox
volumeMounts:
# name must match the volume name below
- name: nfs
mountPath: "/mnt"
volumes:
- name: glusterfsvol
glusterfs:
endpoints: glusterfs-cluster
path: kube_vol
readOnly: true
您可以浏览link,以获取有关使用GlusterFS的更多信息。
您可以找到有关持久卷和持久卷声明here的更多信息。