1.创建nfs文件夹
mkdir -p /data/springboot-service
2.在k8s上配置pvc挂载
2.1新建 PV持久卷(springboot-service-pv.yaml)
PV:持久卷(Persistent Volume),将应用需要持久化的数据保存到指定位置
apiVersion: v1
kind: PersistentVolume
metadata:
name: springboot-service-pv
labels:
pv: springboot-service-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs
nfs:
path: /data/springboot-service
#nfs 主节点地址
server: 172.16.0.4
执行申请命令
kubectl apply -f springboot-service-pv.yaml
#查看执行结果
kubectl get PersistentVolume
2.2 新建PVC持久卷声明(springboot-service-pvc.yaml)
PVC:持久卷申明(Persistent Volume Claim),申明需要使用的持久卷规格大小
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: springboot-service-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: nfs
resources:
requests:
storage: 5Gi
selector:
matchLabels:
pv: springboot-service-pv
执行命令
kubectl apply -f springboot-service-pvc.yaml
#查看执行结果
kubectl get pvc
3.创建pod的发布文件(springboot-service.yaml)
apiVersion: apps/v1
kind: Deployment
metadata:
name: springboot-service
labels:
app: springboot-service
spec:
replicas: 1
selector:
matchLabels:
app: springboot-service
template:
metadata:
labels:
app: springboot-service
annotations:
app: springboot-service
spec:
containers:
- name: springboot-service
image: springboot-service:0.0.1-SNAPSHOT
imagePullPolicy: Always
env:
- name: springboot-service
valueFrom:
fieldRef:
fieldPath: metadata.name
ports:
- name: http
containerPort: 18080
protocol: TCP
resources:
limits:
# cpu: 100m
memory: 4Gi
requests:
# cpu: 100m
memory: 1Gi
volumeMounts:
- mountPath: /data/springboot-service
name: springboot-service-storage
volumes:
#自定义挂载卷名称,上边引用volumeMounts.name的需要和这里一致
- name: springboot-service-storage
persistentVolumeClaim:
claimName: springboot-service-pvc
# podManagementPolicy: "Parallel"
---
apiVersion: v1
kind: Service
metadata:
name: springboot-service
spec:
selector:
app: springboot-service
type: NodePort
ports:
- port: 18080
targetPort: 18080
nodePort: 32080
执行命令
kubectl apply -f springboot-service.yaml
#查看结果
kubectl get pvc