Kubernetes 库伯内特斯大师不';不要连接FlexVolume

Kubernetes 库伯内特斯大师不';不要连接FlexVolume,kubernetes,kops,Kubernetes,Kops,我正在尝试连接for Kubernetes,它似乎根据我在节点和主节点上的日志正常初始化: Loaded volume plugin "flexvolume-k8s/dummy-attachable 但是,当我尝试将卷附加到pod时,attach方法从未从master调用过。节点中的日志将读取: flexVolume driver k8s/dummy-attachable: using default GetVolumeName for volume dummy-attachable oper

我正在尝试连接for Kubernetes,它似乎根据我在节点和主节点上的日志正常初始化:

Loaded volume plugin "flexvolume-k8s/dummy-attachable
但是,当我尝试将卷附加到pod时,attach方法从未从master调用过。节点中的日志将读取:

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描述吊舱nginx假人的输出:

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]
Name:nginx虚拟可连接
名称空间:默认值
优先级:0
PriorityClassName:
节点:[节点id]
开始时间:2019年4月24日星期三08:03:21-0400
标签:
注释:kubernetes.io/limit-ranger:LimitRanger插件集:容器nginx dummy attachable的cpu请求
状态:待定
知识产权:
容器:
可连接的nginx虚拟机:
容器ID:
图片:nginx
图像ID:
端口:80/TCP
主机端口:0/TCP
国家:等待
原因:集装箱制造
就绪:错误
重新启动计数:0
请求:
中央处理器:100米
环境:
挂载:
/来自虚拟可连接(rw)的数据
/来自默认令牌hcnhj(ro)的var/run/secrets/kubernetes.io/serviceCount
条件:
类型状态
初始化为True
准备错误
集装箱准备好了吗
播客预定为真
卷数:
可连接的假人:
类型:FlexVolume(使用基于exec的插件配置/连接的通用卷资源)
驾驶员:k8s/可连接假人
FSType:
秘书长:无
只读:false
选项:地图[]
默认令牌hcnhj:
类型:Secret(由Secret填充的卷)
SecretName:默认令牌hcnhj
可选:false
QoS等级:Burstable
节点选择器:
容差:node.kubernetes.io/未就绪:不执行300秒
node.kubernetes.io/不可访问:不执行300秒
活动:
从消息中键入原因年龄
----     ------       ----               ----                                    -------
警告FailedMount 41s(x6超过11m)kubelet,[节点id]无法为pod“nginx-dummy-attachable_default([id])”装载卷:等待卷为pod“default”/“nginx dummy attachable”装载或装载的超时已过期。未安装卷的列表=[dummy attachable]。未连接卷列表=[虚拟可连接默认令牌hcnhj]
我向FlexVolume添加了调试日志记录,因此我能够验证在主节点上从未调用过attach方法。我不确定我错过了什么

我不知道这是否重要,但集群是用KOP启动的。我试过K8S1.11和1.14,但都没有成功。

所以这是一个有趣的版本

尽管kubelet在master上初始化FlexVolume插件,但kube controller manager(在KOPs中封装)是负责将卷连接到pod的应用程序。KOPs不会将默认插件目录
/usr/libexec/kubernetes/kubelet plugins/volume/exec
装载到kube控制器管理器pod中,因此它不知道有关master上FlexVolume插件的任何信息


除了使用不同的Kubernetes部署工具之外,似乎没有一种非黑客方式可以做到这一点,除非KOPs解决了此问题。

pod是否安排在主节点上,并且是否可用?否,pod安排在其中一个节点上。flexVolumes背后的想法不是应该由主机连接卷吗?我添加了
descripe pod
的输出,我认为这不一定正确。来自文档:
Flexvolume使用户能够编写自己的驱动程序,并在Kubernetes中添加对卷的支持。供应商驱动程序应安装在每个节点的卷插件路径中,如果驱动程序需要附加功能,则应安装在主机上(除非--enable controller attach detach Kubelet option设置为false,但这是一种传统的操作模式,因此非常不鼓励这样做).
也在设计规范中:-它说驱动程序需要出现在所有节点上。VolumeManager是kubelet的一部分,监视目录,然后调用已安装的驱动程序(本例中的示例)。至少我是这样理解的。问题是,您是否在两个节点上都安装了驱动程序?音量经理:对不起,我误解了你的问题。FlexVolume插件安装在主机和节点上——我想你是指pod试图安装FlexVolume