Мастер Kubernetes не прикрепляет FlexVolume - PullRequest
5 голосов
/ 18 апреля 2019

Я пытаюсь подключить подключаемый к фиктивному образцу пример FlexVolume для Kubernetes, который, кажется, инициализируется нормально в соответствии с моими журналами на узлах и на главном сервере:

Loaded volume plugin "flexvolume-k8s/dummy-attachable

Но когда я пытаюсь подключить том к модулю, метод присоединения никогда не вызывается из мастера. Журналы с узла читаются:

flexVolume driver k8s/dummy-attachable: using default GetVolumeName for volume dummy-attachable
operationExecutor.VerifyControllerAttachedVolume started for volume "dummy-attachable"
Operation for "\"flexvolume-k8s/dummy-attachable/dummy-attachable\"" failed. No retries permitted until 2019-04-22 13:42:51.21390334 +0000 UTC m=+4814.674525788 (durationBeforeRetry 500ms). Error: "Volume has not been added to the list of VolumesInUse in the node's volume status for volume \"dummy-attachable\" (UniqueName: \"flexvolume-k8s/dummy-attachable/dummy-attachable\") pod \"nginx-dummy-attachable\"

Вот как я пытаюсь смонтировать том:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-dummy-attachable
  namespace: default
spec:
  containers:
    - name: nginx-dummy-attachable
      image: nginx
      volumeMounts:
        - name: dummy-attachable
          mountPath: /data
      ports:
        - containerPort: 80
  volumes:
    - name: dummy-attachable
      flexVolume:
        driver: "k8s/dummy-attachable"

Вот результат kubectl describe pod nginx-dummy-attachable:

Name:               nginx-dummy-attachable
Namespace:          default
Priority:           0
PriorityClassName:  <none>
Node:               [node id]
Start Time:         Wed, 24 Apr 2019 08:03:21 -0400
Labels:             <none>
Annotations:        kubernetes.io/limit-ranger: LimitRanger plugin set: cpu request for container nginx-dummy-attachable
Status:             Pending
IP:                 
Containers:
  nginx-dummy-attachable:
    Container ID:   
    Image:          nginx
    Image ID:       
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Waiting
      Reason:       ContainerCreating
    Ready:          False
    Restart Count:  0
    Requests:
      cpu:        100m
    Environment:  <none>
    Mounts:
      /data from dummy-attachable (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-hcnhj (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  dummy-attachable:
    Type:       FlexVolume (a generic volume resource that is provisioned/attached using an exec based plugin)
    Driver:     k8s/dummy-attachable
    FSType:     
    SecretRef:  nil
    ReadOnly:   false
    Options:    map[]
  default-token-hcnhj:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-hcnhj
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason       Age                From                                    Message
  ----     ------       ----               ----                                    -------
  Warning  FailedMount  41s (x6 over 11m)  kubelet, [node id]  Unable to mount volumes for pod "nginx-dummy-attachable_default([id])": timeout expired waiting for volumes to attach or mount for pod "default"/"nginx-dummy-attachable". list of unmounted volumes=[dummy-attachable]. list of unattached volumes=[dummy-attachable default-token-hcnhj]

Я добавил ведение журнала отладки во FlexVolume, чтобы убедиться, что метод присоединения никогда не вызывался на главном узле. Я не уверен, что мне здесь не хватает.

Я не знаю, имеет ли это значение, но кластер запускается с KOPS. Я пробовал оба с k8s 1.11 и 1.14, но безуспешно.

1 Ответ

5 голосов
/ 27 апреля 2019

Так что это весело.

Несмотря на то, что kubelet инициализирует плагин FlexVolume на master, kube-controller-manager, который находится в контейнере в KOP, является приложением, которое фактически отвечает за присоединение тома к модулю. KOPs не монтирует каталог плагинов по умолчанию /usr/libexec/kubernetes/kubelet-plugins/volume/exec в модуль kube-controller-manager, поэтому он ничего не знает о ваших плагинах FlexVolume на master.

Похоже, что нет другого способа сделать это, кроме как использовать другой инструмент развертывания Kubernetes, пока KOPs не решит эту проблему.

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