kubernetes - k8s 在 GCP 上调度本地 SSD 卷失败

标签 kubernetes google-kubernetes-engine

我尝试将 Google Cloud 中的本地 SSD 指定为 PersistedVolume。我关注了docs设置automated SSD provisioning ,并且运行 kubectl get pv 返回有效卷:

NAME                CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM     STORAGECLASS   REASON    AGE
local-pv-9721c951   368Gi      RWO            Delete           Available             local-scsi               1h

问题是我无法将我的 pod 绑定(bind)到它。 kubectl get pvc 不断显示:

NAME      STATUS    VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
mapdata   Pending                                       local-scsi     7m

kubectl get events给了我这些:

LAST SEEN   FIRST SEEN   COUNT     NAME                                                KIND                    SUBOBJECT   TYPE      REASON                 SOURCE                        MESSAGE
7m          7m           1         v3tiles.1551c0bbcb23d983                            Service                             Normal    EnsuredLoadBalancer    service-controller            Ensured load balancer
2m          8m           24        maptilesbackend-8645566545-x44nl.1551c0ae27d06fca   Pod                                 Warning   FailedScheduling       default-scheduler             0/1 nodes are available: 1 node(s) didn't find available persistent volumes to bind.
2m          8m           26        mapdata.1551c0adf908e362                            PersistentVolumeClaim               Normal    WaitForFirstConsumer   persistentvolume-controller   waiting for first consumer to be created before binding

我需要做什么才能将该 SSD 绑定(bind)到我的 Pod?这是我一直在尝试的代码:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: maptilesbackend
  namespace: default
spec:
  selector:
    matchLabels:
      app: maptilesbackend
  strategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: maptilesbackend
    spec:
      containers:
      - image: klokantech/openmaptiles-server
        imagePullPolicy: Always
        name: maptilesbackend
        volumeMounts:
          - mountPath: /data
            name: mapdata
            readOnly: true
      volumes:
        - name: mapdata
          persistentVolumeClaim:
            claimName: mapdata
            readOnly: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: "local-scsi"
provisioner: "kubernetes.io/no-provisioner"
volumeBindingMode: "WaitForFirstConsumer"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mapdata
spec:
  storageClassName: local-scsi
  accessModes:
    - ReadOnlyMany
  resources:
    requests:
      storage: 300Gi

最佳答案

ReadOnlyMany 对于本地 SSD 没有意义

根据文档:

ReadOnlyMany – the volume can be mounted read-only by many nodes

您无法在多个节点上安装本地 SSD,因为它仅适用于一个节点。

关于kubernetes - k8s 在 GCP 上调度本地 SSD 卷失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52199456/

相关文章:

kubernetes - 如何在 `kubernetes.io/hostname` 节点选择器中提供主机名列表

spring-boot - 在kubernetes集群上部署spring应用

kubernetes - Helm 回滚到以前的版本

node.js - nodejs kubernetes无法执行滚动更新

google-cloud-platform - 使用 cli :/home/user/. kube/config 在 GCP CloudShell 上部署 kubeflow:没有此类文件或目录

kubernetes - 我很难在 gke 上设置 kafka 并且想知道设置它的最佳方式?

docker - 如何在Kubernetes下使用Fail2ban?

kubernetes - 如何通过 Rest API 获取正在运行的 pod 状态

networking - 如何为 GKE 上的 Kubernetes v1.2 Ingress 资源分配自定义外部/公共(public) IP?

kubernetes - storageClassName “standard”的GKE PersistentVolumeClaim永远处于待命状态