簡體   English   中英

0/1 個節點可用:1 個 pod 具有未綁定的即時 PersistentVolumeClaims

[英]0/1 nodes are available: 1 pod has unbound immediate PersistentVolumeClaims

正如文檔所述:

對於 StatefulSet 中定義的每個 VolumeClaimTemplate 條目,每個 Pod 都會收到一個 PersistentVolumeClaim。 在上面的 nginx 示例中,每個 Pod 接收一個 PersistentVolume,其 StorageClass 為 my-storage-class 和 1 Gib 的預配置存儲。 如果未指定 StorageClass,則將使用默認 StorageClass。 當一個 Pod 被(重新)調度到一個節點上時,它的 volumeMounts 掛載與其 PersistentVolume Claims 關聯的 PersistentVolumes。 請注意,當 Pod 或 StatefulSet 被刪除時,與 Pod 的 PersistentVolume Claims 關聯的 PersistentVolumes 不會被刪除。 這必須手動完成。

我感興趣的部分是: If no StorageClassis specified, then the default StorageClass will be used

我像這樣創建一個 StatefulSet:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  namespace: ches
  name: ches
spec:
  serviceName: ches
  replicas: 1
  selector:
    matchLabels:
      app: ches
  template:
    metadata:
      labels:
        app: ches
    spec:
      serviceAccountName: ches-serviceaccount
      nodeSelector:
        ches-worker: "true"
      volumes:
      - name: data
        hostPath:
          path: /data/test
      containers:
      - name: ches
        image: [here I have the repo]
        imagePullPolicy: Always
        securityContext:
            privileged: true
        args:
        - server
        - --console-address
        - :9011
        - /data
        env:
        - name: MINIO_ACCESS_KEY
          valueFrom:
            secretKeyRef:
              name: ches-keys
              key: access-key
        - name: MINIO_SECRET_KEY
          valueFrom:
            secretKeyRef:
              name: ches-keys
              key: secret-key
        ports:
        - containerPort: 9000
          hostPort: 9011
        resources:
          limits:
            cpu: 100m
            memory: 200Mi
        volumeMounts:
        - name: data
          mountPath: /data
      imagePullSecrets:
        - name: edge-storage-token
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi

當然,我已經創建了秘密、imagePullSecrets 等,並將該節點標記為 ches-worker。

當我應用 yaml 文件時,pod 處於 Pending 狀態並且kubectl describe pod ches-0 -n ches給出以下錯誤:

警告 FailedScheduling 6s default-scheduler 0/1 節點可用:1 個 pod 具有未綁定的即時 PersistentVolumeClaims。 preemption: 0/1 nodes available: 1 搶占對調度沒有幫助

我在這里錯過了什么嗎?

您需要創建一個 PV 才能綁定 PVC。 如果您希望從 PVC 聲明自動創建 PV,您需要在您的集群中安裝 Provisioner。

首先創建一個至少具有 PVC 所需空間量的 PV。 然后您可以應用包含 PVC 聲明的部署 yaml。

安裝 K3s 時,還會下載一個存儲類,使其成為默認存儲類。

使用kubectl get storageclass檢查:

NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE 本地路徑 rancher.io/local-path Delete WaitForFirstConsumer false 8s

另一方面,K8s 集群不下載默認存儲類。

為了解決問題:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM