在 k8s 里如果需要使用可以共享的存储空间,简单的做法就是使用 NFS 服务。生产环境可以使用一个独立的服务器搭建 NFS 服务,测试环境则可以直接在 k8s 里面用 Deployment 搭建 NFS 服务。
成果物
安装成功后,会在 default
名字空间里创建一个名为 nfs-server
的 Deployment。
安装
kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/deploy/example/nfs-provisioner/nfs-server.yaml
如无法下载该文件,也可将以下内容保存后执行(镜像地址加上了 docker.1ms.run/
前缀,避免无法拉取的情况):
---
kind: Service
apiVersion: v1
metadata:
name: nfs-server
namespace: default
labels:
app: nfs-server
spec:
type: ClusterIP # use "LoadBalancer" to get a public ip
selector:
app: nfs-server
ports:
- name: tcp-2049
port: 2049
protocol: TCP
- name: udp-111
port: 111
protocol: UDP
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: nfs-server
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: nfs-server
template:
metadata:
name: nfs-server
labels:
app: nfs-server
spec:
nodeSelector:
"kubernetes.io/os": linux
containers:
- name: nfs-server
image: docker.1ms.run/itsthenetwork/nfs-server-alpine:latest
env:
- name: SHARED_DIRECTORY
value: "/exports"
volumeMounts:
- mountPath: /exports
name: nfs-vol
securityContext:
privileged: true
ports:
- name: tcp-2049
containerPort: 2049
protocol: TCP
- name: udp-111
containerPort: 111
protocol: UDP
volumes:
- name: nfs-vol
hostPath:
path: /nfs-vol # modify this to specify another path to store nfs share data
type: DirectoryOrCreate