今天测试pvc与pv绑定

代码如下:

PersistentVolume如下:

kind: PersistentVolume
apiVersion: v1
metadata:
  name: pv-01
  namespace: test123
spec:
  accessModes: ['RWM']
  capacity:
    storage: 1Gi
  nfs:
    path: /opt/k8s/nfs_test1
    server: 192.168.5.183

Headless 服务如下:

kind: Service
apiVersion: v1
metadata:
  name: headless-svc
  namespace: test123
spec:
  clusterIP: None
  selector:
    app: nginx 
  ports:
  - port: 80
    targetPort: 80

statefulSet Pod如下:

kind: StatefulSet
apiVersion: apps/v1
metadata:
  name: web
  namespace: test123
spec:
  selector:
    matchLabels:
      app: nginx
  serviceName: 'nginx'   --- 声明它属于的headless Service 
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx
        image: harbor-xxx.host.com/public/nginx:1.21-perl
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: nginx-pvc
          path: /usr/share/nginx/wwww
  volumeClaimTemplates:
  - metadata:
      name: nginx-pvc
    spec:
      accessModes: ['ReadWriteMany']
      storageClassName: 'nfs'
      resources:
        requests:
          storage: 1Gi  

执行以后,pod一直处理Pending

查看 kubectl describe pod pod/web-0  -n mlamps

报错信息:pod has unbound immediate PersistentVolumeClaims

步骤一:检查 pvc(由于pod的删除并不会删除 pod的pvc,需要手动删除),清除以前的 pvc 

步骤二:检查 pv , pvc , pod是否在一个namespace下

最后我的问题是没有指定 pvc的namespace,导致pvc去 default下查找pv,所以无法找到。

正确代码如下:

kind: StatefulSet
apiVersion: apps/v1
metadata:
  name: web
  namespace: mlamps
spec:
  selector:
    matchLabels:
      app: nginx
  serviceName: 'nginx'   
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: harbor-59.host.com/public/nginx:1.21-perl
        ports:
        - containerPort: 80
        volumeMounts:
        - name: nginx-pvc
          mountPath: /usr/share/nginx/wwww
  volumeClaimTemplates:
  - metadata:
      name: nginx-pvc
      namespace: mlamps
    spec:
      accessModes: ['ReadWriteMany']
      storageClassName: "nfsv1"
      resources:
        requests:
          storage: 1Gi

Logo

鸿蒙生态一站式服务平台。

更多推荐