Deployment.apps недействительно: spe c .template.spe c .containers [0] .volumeMounts [1] .name: Not found: "data" - PullRequest
0 голосов
/ 10 июля 2020

Я развертываю приложение с именем soa-illidan-hub-service с постоянным томом в версии kubernetes v1.16.0. Когда я применяю yaml, я получаю эту ошибку:

Deployment.apps "soa-illidan-hub-service" is invalid: spec.template.spec.containers[0].volumeMounts[1].name: Not found: "data"

Это мой файл yaml:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: soa-illidan-hub-service
  namespace: dabai-pro
  selfLink: /apis/apps/v1/namespaces/dabai-pro/deployments/soa-illidan-hub-service
  uid: 01a06200-f8d4-4d60-bd79-a7acf76d0a30
  resourceVersion: '6232127'
  generation: 62
  creationTimestamp: '2020-06-08T01:42:11Z'
  labels:
    k8s-app: soa-illidan-hub-service
  annotations:
    deployment.kubernetes.io/revision: '52'
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: soa-illidan-hub-service
  template:
    metadata:
      name: soa-illidan-hub-service
      creationTimestamp: null
      labels:
        k8s-app: soa-illidan-hub-service
      annotations:
        kubectl.kubernetes.io/restartedAt: '2020-07-09T17:41:29+08:00'
    spec:
      volumes:
        - name: agent
          emptyDir: {}
      initContainers:
        - name: init-agent
          image: 'harbor.google.net/miaoyou/dabai-pro/skywalking-agent:6.5.0'
          command:
            - sh
            - '-c'
            - >-
              set -ex;mkdir -p /skywalking/agent;cp -r /opt/skywalking/agent/*
              /skywalking/agent;
          resources: {}
          volumeMounts:
            - name: agent
              mountPath: /skywalking/agent
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      containers:
        - name: soa-illidan-hub-service
          image: >-
            harbor.google.net/miaoyou/dabai-pro/soa-illidan-hub-service@sha256:4ac4c6ddceac3fde05e95219b20414fb39ad81a4f789df0fbf97196b72c9e6f0
          env:
            - name: SKYWALKING_ADDR
              value: 'dabai-skywalking-skywalking-oap.apm.svc.cluster.local:11800'
            - name: APOLLO_META
              valueFrom:
                configMapKeyRef:
                  name: pro-config
                  key: apollo.meta
            - name: ENV
              valueFrom:
                configMapKeyRef:
                  name: pro-config
                  key: env
          resources: {}
          volumeMounts:
            - name: agent
              mountPath: /opt/skywalking/agent
            - name: data
              mountPath: /var/export/data
          livenessProbe:
            httpGet:
              path: /actuator/liveness
              port: 11024
              scheme: HTTP
            initialDelaySeconds: 120
            timeoutSeconds: 60
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
          readinessProbe:
            httpGet:
              path: /actuator/health
              port: 11024
              scheme: HTTP
            initialDelaySeconds: 120
            timeoutSeconds: 60
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: Always
          securityContext:
            privileged: false
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      securityContext: {}
      imagePullSecrets:
        - name: harbor-regcred
      schedulerName: default-scheduler
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  revisionHistoryLimit: 10
  volumeClaimTemplates:
    - metadata:
        name: data
        creationTimestamp: null
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 10Gi
        volumeMode: Filesystem
  progressDeadlineSeconds: 600

для добавления PV, я добавляю конфигурацию volumeClaimTemplates:

 volumeClaimTemplates:
        - metadata:
            name: data
            creationTimestamp: null
          spec:
            accessModes:
              - ReadWriteOnce
            resources:
              requests:
                storage: 10Gi
            volumeMode: Filesystem

и я использую этот том в своем модуле следующим образом:

volumeMounts:
   - name: data
      mountPath: /var/export/data

Я что-то упускаю? Что мне делать, чтобы исправить эту проблему?

Ответы [ 2 ]

3 голосов
/ 10 июля 2020

Я считаю, что проблема заключается в определении вашего развертывания.

Проверяя документы k8s, я обнаружил этот пример :

kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: k8s.gcr.io/test-webserver
    name: test-container
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir: {}

В основном вам нужно определить volumeMounts под вашим контейнером, а также сослаться на этот volumeMount на допустимый том в разделе volumes.

Просто чтобы выделить, имена должны совпадать, иначе он также не сработает.

3 голосов
/ 10 июля 2020

volumeClaimTemplates доступно только для statefulset.

kubeclt explain statefulset.spec.volumeClaimTemplates
KIND:     StatefulSet
VERSION:  apps/v1

RESOURCE: volumeClaimTemplates <[]Object>

DESCRIPTION:
     volumeClaimTemplates is a list of claims that pods are allowed to
     reference. The StatefulSet controller is responsible for mapping network
     identities to claims in a way that maintains the identity of a pod. Every
     claim in this list must have at least one matching (by name) volumeMount in
     one container in the template. A claim in this list takes precedence over
     any volumes in the template, with the same name.

     PersistentVolumeClaim is a user's request for and claim to a persistent
     volume

FIELDS:
   apiVersion   <string>
     APIVersion defines the versioned schema of this representation of an
     object. Servers should convert recognized schemas to the latest internal
     value, and may reject unrecognized values. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

   kind <string>
     Kind is a string value representing the REST resource this object
     represents. Servers may infer this from the endpoint the client submits
     requests to. Cannot be updated. In CamelCase. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

   metadata <Object>
     Standard object's metadata. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

   spec <Object>
     Spec defines the desired characteristics of a volume requested by a pod
     author. More info:
     https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

   status   <Object>
     Status represents the current information/status of a persistent volume
     claim. Read-only. More info:
     https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

volumeClaimTemplates недоступно для deployment

kubectl explain deployment.spec.volumeClaimTemplates
error: field "volumeClaimTemplates" does not exist

Поэтому вы не можете использовать volumeClaimTemplates для deployment

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...