K8S Pod引用PVC 案例
cat 05-deploy-nginx-pvc.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: baimei-nginx-pvc
spec:
replicas: 2
selector:
matchExpressions:
- key: apps
values:
- "nginx"
operator: In
template:
metadata:
labels:
apps: nginx
spec:
volumes:
- name: data
# 声明是一个PVC类型
persistentVolumeClaim:
# 引用哪个PVC
claimName: baimei-linux-pvc
containers:
- name: web
image: harbor.baimei.com/baimei-web/nginx:1.25.1-alpine
volumeMounts:
- name: data
mountPath: /usr/share/nginx/html
apiVersion: v1
kind: Service
metadata:
name: baimei-linux-nginx
spec:
type: NodePort
selector:
apps: nginx
ports:
port: 80 targetPort: 80 nodePort: 30080
创建资源:
kubectl apply -f 05-deploy-nginx-pvc.yaml
kubectl get pods,svc
进入容器:
kubectl exec -it baimei-nginx-pvc-844977cfd9-wlxwx -- sh
cd /usr/share/nginx/html/ echo "<h1>www.baimei.com</h1>" > index.html
如何验证,待完善
小彩蛋: 查看某个Pod的底层使用的存储卷类型。 [root@master231 deployments]# cat /tmp/get-pods-pv-soursh.sh #!/bin/bash
POD_NAME=${1:-baimei-nginx-pvc-54b6bccf47-4ckv8} PVC_NAME=
kubectl describe pods ${POD_NAME} | awk '/ClaimName/{print $2}'
PV_NAME=kubectl get pvc ${PVC_NAME} | awk 'NR==2{print $3}'
#kubectl describe pv ${PV_NAME} | sed -n '/Source/,/ReadOnly/p' #kubectl describe pv ${PV_NAME} | grep Source -A 4 kubectl describe pv ${PV_NAME} | awk '/Source/,/ReadOnly/' [root@master231 deployments]# [root@master231 deployments]# kubectl get pods NAME READY STATUS RESTARTS AGE baimei-nginx-pvc-54b6bccf47-4ckv8 1/1 Running 0 16m baimei-nginx-pvc-54b6bccf47-kxf79 1/1 Running 0 16m baimei-python3-sa-799bdd87b4-4cdsh 1/1 Running 0 69m baimei-python3-sa-799bdd87b4-crpl7 1/1 Running 0 69m [root@master231 deployments]# [root@master231 deployments]# [root@master231 deployments]# bash /tmp/get-pods-pv-soursh.sh baimei-nginx-pvc-54b6bccf47-kxf79 Source: Type: NFS (an NFS mount that lasts the lifetime of a pod) Server: 10.0.0.231 Path: /baimei/data/kubernetes/pv/linux86/pv002 ReadOnly: false [root@master231 deployments]# [root@master231 deployments]# bash /tmp/get-pods-pv-soursh.sh Source: Type: NFS (an NFS mount that lasts the lifetime of a pod) Server: 10.0.0.231 Path: /baimei/data/kubernetes/pv/linux86/pv002 ReadOnly: false [root@master231 deployments]#
- 删除pvc验证pv的回收策略 Retain: "保留回收"策略允许手动回收资源,删除pvc时,pv仍然存在,并且该卷被视为"已释放(Released)"。 在管理员手动回收资源之前,使用该策略其他Pod将无法直接使用。 温馨提示: (1)在k8s1.15.12版本测试时,删除pvc发现nfs存储卷的数据并不会被删除,pv也不会被删除;
Delete: 对于支持删除回收策略的卷插件,k8s将删除pv及其对应的数据卷数据。建议使用动态存储类(sc)实现,才能看到效果哟! 对于AWS EBS, GCE PD, Azure Disk, or OpenStack Cinder等存储卷会被删除。 温馨提示: (1)在k8s1.15.12版本测试时,在不使用sc时,则删除pvc发现nfs存储卷的数据并不会被删除; (2)在k8s1.15.12版本测试时,在使用sc后,可以看到删除效果哟;
Recycle: 对于"回收利用"策略官方已弃用。相反,推荐的方法是使用动态资源调配。而动态存储类已经不支持该类型啦! 如果基础卷插件支持,回收回收策略将对卷执行基本清理(rm -rf /thevolume/*),并使其再次可用于新的声明。 温馨提示,在k8s1.15.12版本测试时,删除pvc发现nfs存储卷的数据被删除。
-
临时更改pv的回收策略
kubectl patch pv baimei-linux86-pv03 -p '{"spec":{"persistentVolumeReclaimPolicy":"Recycle"}}'
https://kubernetes.io/docs/tasks/administer-cluster/change-pv-reclaim-policy/
基于命令行的方式修改配置,基本上都是临时修改,当资源被删除后,重新创建时依旧会根据资源清单的配置创建。
持久卷Persistent Volume(简称"PV") 案例 : 连接
持久卷声明Persistent Volume Claim(简称"PVC") 案例 : 连接