【问题标题】:PersistentVolumeClaim unknown in kubernetesKubernetes 中的 PersistentVolumeClaim 未知
【发布时间】:2018-06-27 21:42:26
【问题描述】:

我尝试部署一个容器,但不幸的是,当我尝试执行 kubectl apply -f *.yaml

时出现错误

错误是:

错误验证数据:ValidationError(Pod.spec.containers[1]): io.k8s.api.core.v1.Container 中的未知字段“persistentVolumeClaim”;

我不明白为什么会出现错误,因为我在 pd.yaml 配置中的 persistentVolumeClaim: 下写了 claimName: :(

Pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: karafpod
spec:
  containers:
  - name: karaf
    image: xxx/karaf:ids-1.1.0
    volumeMounts:
    - name: karaf-conf-storage
      mountPath: /apps/karaf/etc
  - name: karaf-conf-storage
    persistentVolumeClaim:
      claimName: karaf-conf-claim

PersistentVolumeClaimKaraf.yml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: karaf-conf-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Mi

部署.yaml

 apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
   name: karaf
   namespace: poc 
 spec:
   replicas: 1
   template:
     metadata:
       labels:
         app: karaf
     spec:
       containers:
       - name: karaf
         image: "xxx/karaf:ids-1.1.0"
         imagePullPolicy: Always
         ports:
         - containerPort: 6443
         - containerPort: 6100
         - containerPort: 6101
         resources: 
         volumeMounts:
         - mountPath: /apps/karaf/etc
           name: karaf-conf
       volumes:
       - name: karaf-conf
         persistentVolumeClaim:
           claimName: karaf-conf

【问题讨论】:

  • 了解您在此处运行的 K8s 版本真的很有帮助。

标签: kubernetes google-kubernetes-engine


【解决方案1】:

您看到该错误的原因是您在 pod 规范的容器规范下指定了 persistentVolumeClaim。正如您在此处自动生成的文档中看到的那样:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.10/#container-v1-core

persistentVolumeClaims 在此级别/API 对象上不受支持,这就是您所看到的错误。

您应该修改pod.yml 以将其指定为卷。

例如:

apiVersion: v1
kind: Pod
metadata:
  name: karafpod
spec:
  containers:
    - name: karaf
      image: xxx/karaf:ids-1.1.0
      volumeMounts:
      - name: karaf-conf-storage
        mountPath: /apps/karaf/etc
  volumes:
    - name: karaf-conf-storage
      persistentVolumeClaim:
        claimName: karaf-conf-claim

【讨论】:

    【解决方案2】:

    根据kubernetes documentationpersistentVolumeClaim.spec.volume 级别的一部分,而不是pod 对象的.spec.container 级别。

    正确的pod.yaml 是:

    apiVersion: v1
    kind: Pod
    metadata:
      name: karafpod
    spec:
      volumes:
        - name: efgkaraf-conf-storage
          persistentVolumeClaim:
            claimName: efgkaraf-conf-claim
      containers:
        - name: karaf
          image: docker-all.attanea.net/library/efgkaraf:ids-1.1.0
          volumeMounts:
          - name: efgkaraf-conf-storage
            mountPath: /apps/karaf/etc
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-06
      • 2018-12-23
      • 2019-08-17
      • 1970-01-01
      • 2020-01-12
      • 1970-01-01
      相关资源
      最近更新 更多