51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

K8S Pod引用PVC 案例

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") 案例 : 连接

赞(7)
未经允许不得转载:工具盒子 » K8S Pod引用PVC 案例