空目录
空目录会随机生成数据卷,不利于数据持久化
主机目录
apiVersion: apps/v1kind: Deploymentmetadata:name: nginx-hostpath-volspec:selector:matchLabels:app: nginx-hostpath-volrelease: canarytemplate:metadata:labels:app: nginx-hostpath-volrelease: canaryspec:containers:- name: nginx-hostpath-volimage: nginx:1.13-alpinevolumeMounts:- name: hostpathmountPath: /usr/share/nginx/html/- name: busyboximage: busybox:latestvolumeMounts:- name: hostpathmountPath: /data/command: ["/bin/sh","-c","while true;do echo $(date) >> /data/index.html;sleep 3;done"]volumes:- name: hostpathhostPath:path: /data/hostpath/type: DirectoryOrCreate---apiVersion: v1kind: Servicemetadata:name: hostpath-servicespec:type: NodePortports:- protocol: TCPport: 80nodePort: 30001targetPort: 80selector:app: nginx-hostpath-vol
NFS目录
安装NFS
yum install -y nfs-utils
配置NFS
vi /etc/exports
/vol/vol01 10.0.0.0/24(rw,no_root_squash)
/vol/vol02 10.0.0.0/24(rw,no_root_squash)
/vol/vol03 10.0.0.0/24(rw,no_root_squash)
# 重启生效
systemctl restart nfs
# 查看
showmount -e 10.0.0.67
使用NFS目录
apiVersion: v1
kind: Pod
metadata:
name: nginx-nfs-vol
namespace: default
spec:
containers:
- name: nginx-nfs-vol
image: nginx:1.13-alpine
volumeMounts:
- name: nfs
mountPath: /usr/share/nginx/html/
volumes:
- name: nfs
nfs:
path: /vol/vol01/
server: 10.0.0.67
PV资源
创建PV资源
需要在集群所有机器安装nfs工具yum install -y nfs-utils
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv001
labels:
name: pv001
spec:
nfs:
path: /vol/vol01
server: 10.0.0.67
accessModes: ["ReadWriteMany","ReadWriteOnce"]
capacity:
storage: 2Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv002
labels:
name: pv002
spec:
nfs:
path: /vol/vol02
server: 10.0.0.67
accessModes: ["ReadWriteMany","ReadWriteOnce"]
capacity:
storage: 5Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv003
labels:
name: pv003
spec:
nfs:
path: /vol/vol03
server: 10.0.0.67
accessModes: ["ReadWriteMany","ReadWriteOnce"]
capacity:
storage: 10Gi
使用PV资源
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-demo
namespace: default
spec:
accessModes: ["ReadWriteMany"]
resources:
requests:
storage: 6Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-pvc-vol
namespace: default
spec:
selector:
matchLabels:
app: pvc-nginx
release: canary
template:
metadata:
labels:
app: pvc-nginx
release: canary
spec:
containers:
- name: nginx-pvc-vol
image: nginx:1.13-alpine
volumeMounts:
- name: pvc
mountPath: /usr/share/nginx/html/
- name: busybox
image: busybox:latest
volumeMounts:
- name: pvc
mountPath: /data/
command: ["/bin/sh","-c","while true;do echo $(date) >> /data/index.html;sleep 3;done"]
volumes:
- name: pvc
persistentVolumeClaim:
claimName: pvc-demo
---
apiVersion: v1
kind: Service
metadata:
name: pvc-nginx
spec:
type: NodePort
ports:
- protocol: TCP
port: 80
nodePort: 30002
targetPort: 80
selector:
app: pvc-nginx
Configmap
1. 定义一个配置文件
server {
server_name ohmy.volume;
listen 80;
root /usr/share/html/;
}
2. 生成configmap
kubectl create configmap nginx-configmap --from-file=www.conf=./www.conf
3. 使用configmap资源
apiVersion: apps/v1
kind: Deployment
metadata:
name: configmap-pod
namespace: default
spec:
selector:
matchLabels:
app: configmap-pod
template:
metadata:
labels:
app: configmap-pod
spec:
containers:
- name: configmap-pod
image: nginx:1.13-alpine
volumeMounts:
- name: nginx-configmap
mountPath: /etc/nginx/conf.d/
readOnly: true
volumes:
- name: nginx-configmap
configMap:
name: nginx-configmap
---
apiVersion: v1
kind: Service
metadata:
name: configmap-pod-svc
namespace: default
spec:
type: NodePort
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
nodePort: 30003
selector:
app: configmap-pod
