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 案例