卷[名称]的Kubernetes MountVolume.NewMounter初始化失败:路径[名称]不存在

ggazkfy8  于 2022-11-28  发布在  Kubernetes
关注(0)|答案(1)|浏览(260)

我尝试在Kubernetes上部署ElasticSearch集群,为此我使用本地持久卷
这是我的清单文件

persistantvolume.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: example-local-pv
spec:
  capacity:
    storage: 500Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /home/kb/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - minikube

storage.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer  

service.yaml
apiVersion: v1
kind: Service
metadata:
 name: es
 labels:
  service: elasticsearch
spec:
 clusterIP: None
 ports:
 - port: 9200
   name: serving
 - port: 9300
   name: node-to-node
 selector:
  service: elasticsearch

elasticsearch.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: elasticsearch
  labels:
    service: elasticsearch
spec:
  serviceName: es
  replicas: 3
  selector:
    matchLabels:
      service: elasticsearch
  template:
    metadata:
      labels:
        service: elasticsearch
    spec:
      terminationGracePeriodSeconds: 300
      initContainers:
      - name: fix-the-volume-permission
        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-the-vm-max-map-count
        image: busybox
        command:
        - sysctl
        - -w
        - vm.max_map_count=262144
        securityContext:
          privileged: true
      - name: increase-the-ulimit
        image: busybox
        command:
        - sh
        - -c
        - ulimit -n 65536
        securityContext:
          privileged: true
      containers:
      - name: elasticsearch
        image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.4
        ports:
        - containerPort: 9200
          name: http
        - containerPort: 9300
          name: tcp
        resources:
          requests:
            memory: 4Gi
          limits:
            memory: 6Gi
        env:
          - name: cluster.name
            value: elasticsearch-cluster
          - name: node.name
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          - name: discovery.zen.ping.unicast.hosts
            value: "elasticsearch-0.es.default.svc.cluster.local,elasticsearch-1.es.default.svc.cluster.local,elasticsearch-2.es.default.svc.cluster.local"
          - name: ES_JAVA_OPTS
            value: -Xms4g -Xmx4g
        volumeMounts:
        - name: data
          mountPath: /usr/share/elasticsearch/data
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: local-storage
      resources:
        requests:
          storage: 10Gi

kubectl apply -f persistantvolume.yaml
kubectl apply -f storage.yaml
kubectl apply -f service.yaml
kubectl apply -f elasticsearch.yaml

我pod处于Init:0/3状态,kube描述pod的podname为

Events:
  Type     Reason       Age                From               Message
  ----     ------       ----               ----               -------
  Normal   Scheduled    44s                default-scheduler  Successfully assigned default/elasticsearch-0 to minikube
  Warning  FailedMount  12s (x7 over 44s)  kubelet            MountVolume.NewMounter initialization failed for volume "example-local-pv" : path "/home/kb/data" does not exist

我是一个初学者在Kubernetes请帮助我什么我错过了这里/home/kb/data做存在于我的本地驱动器

toiithl6

toiithl61#

假设你启动了minikube的一个VM驱动程序,/home/kb/data目录存在于你的本地驱动器中,但可能不在它的VM中。这有意义吗?Kubernetes local-storage不会创建丢失的目录。如果你只是想“修复错误”,那么minikube ssh -- mkdir /home/kb/data可能会起作用。This answer解释了更多关于这个的背景细节。

相关问题