为什么我在运行 Docker Desktop 时收到“0/1 个节点可用”?

Sno*_*ash 8 docker kubernetes kubernetes-statefulset

我正在使用 Kubernetes 运行 Docker Desktop。

我可以通过 ssh 连接到该节点,并且该节点上正在运行其他 pod。

但是,当我将 StatefulSet 应用于集群时,我得到:

0/1 nodes are available: 1 pod has unbound immediate PersistentVolumeClaims. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling.
Run Code Online (Sandbox Code Playgroud)

状态集在这里:

https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#components

kubectl get no
NAME             STATUS   ROLES           AGE    VERSION
docker-desktop   Ready    control-plane   6d2h   v1.24.1
Run Code Online (Sandbox Code Playgroud)

P..*_*... 7

如果您按原样应用此处定义的清单,则问题出在下面的代码片段中,特别是对于storageClassName. 可能,您的集群没有名为的存储类my-storage-class.

 volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "my-storage-class"
      resources:
        requests:
          storage: 1Gi
Run Code Online (Sandbox Code Playgroud)

要获取明确的错误语句,您可以运行以下命令:

kubectl describe  pvc www-web-0
Run Code Online (Sandbox Code Playgroud)

你会注意到类似的东西:

storageclass.storage.k8s.io "my-storage-class" not found
Run Code Online (Sandbox Code Playgroud)

解决方案:

您可以运行以下命令来获取集群可用storage class并将其替换到 yaml 文件中。

kubectl get sc
Run Code Online (Sandbox Code Playgroud)

或者,您可以删除storageClassName并让默认存储类发挥作用。但是,要使其正常工作,您的集群中必须有一个默认的 sc。

如果您没有存储类,则需要创建一个。看一下这个