【问题标题】:Why do I get "unbound immediate PersistentVolumeClaims" on Minikube?为什么我在 Minikube 上得到“未绑定的即时 PersistentVolumeClaims”?
【发布时间】:2019-07-22 06:10:18
【问题描述】:

我得到“pod has unbound immediate PersistentVolumeClaims”,我不知道为什么。我在 macOS 上运行 minikube v0.34.1。 以下是配置:

es-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch
spec:
  capacity:
    storage: 400Mi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/data/elasticsearch/"

es-statefulset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: es-cluster
spec:
  serviceName: elasticsearch
  replicas: 3
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      containers:
        - name: elasticsearch
          image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.4.3
          resources:
            limits:
              cpu: 1000m
            requests:
              cpu: 100m
          ports:
            - containerPort: 9200
              name: rest
              protocol: TCP
            - containerPort: 9300
              name: inter-node
              protocol: TCP
          volumeMounts:
            - name: data
              mountPath: /usr/share/elasticsearch/data
          env:
            - name: cluster.name
              value: k8s-logs
            - name: node.name
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: discovery.zen.ping.unicast.hosts
              value: "es-cluster-0.elasticsearch,es-cluster-1.elasticsearch,es-cluster-2.elasticsearch"
            - name: discovery.zen.minimum_master_nodes
              value: "2"
            - name: ES_JAVA_OPTS
              value: "-Xms256m -Xmx256m"
      initContainers:
        - name: fix-permissions
          image: busybox
          command: ["sh", "-c", "chown -R 1000:1000 /usr/share/elasticsearch/data"]
          securityContext:
            privileged: true
          volumeMounts:
            - name: data
              mountPath: /usr/share/elasticsearch/data
        - name: increase-vm-max-map
          image: busybox
          command: ["sysctl", "-w", "vm.max_map_count=262144"]
          securityContext:
            privileged: true
        - name: increase-fd-ulimit
          image: busybox
          command: ["sh", "-c", "ulimit -n 65536"]
          securityContext:
            privileged: true
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes: [ "ReadWriteOnce" ]
        storageClassName: "standard"
        resources:
          requests:
            storage: 100Mi

es-svc.yaml

kind: Service
apiVersion: v1
metadata:
  name: elasticsearch
  labels:
    app: elasticsearch
spec:
  selector:
    app: elasticsearch
  clusterIP: None
  ports:
    - port: 9200
      name: rest
    - port: 9300
      name: inter-node

【问题讨论】:

  • 嗨,你可以运行kubectl describe pvc $PVC_NAME
  • 这是输出:pastebin.com/PFNB0q76
  • kubectl get po 显示:es-cluster-0 0/1 CrashLoopBackOff 6 20m es-cluster-1 1/1 Running 6 19m es-cluster-2 0/1 CrashLoopBackOff 6 19m 所以一个 pod 成功了,其他的没有。
  • 似乎 pvc 绑定到 pv,我很想知道如何使用 kubectl descrive pod $POD_NAMEkubectl get pod $POD_NAME -o yaml 将卷安装在 pod 内
  • kubectl describe pod $POD_NAME: pastebin.com/539xWt7A

标签: kubernetes minikube


【解决方案1】:

为了使一个卷可以访问我的许多 pod,accessModes 需要是 "ReadWriteMany" 。此外,如果每个 pod 都想拥有自己的目录,则需要使用 subPath

由于问题已在评论部分@Michael Böckling 中解决。这是更多信息using-subpath

volumeMounts: 
- name: data 
mountPath: /usr/share/elasticsearch/data 
subPath: $(POD_NAME) 

【讨论】:

    【解决方案2】:

    您可以使用环境变量作为子路径名称。像这样:

    env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
    volumeMounts:
        - name: workdir1
          mountPath: /logs
          subPathExpr: $(POD_NAME)
    

    【讨论】:

      猜你喜欢
      • 2021-01-06
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 2019-12-07
      • 2022-10-18
      • 2020-12-27
      • 2020-12-19
      • 2019-03-11
      相关资源
      最近更新 更多