首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes:安装:附加AWS EBS卷时不存在特殊设备

Kubernetes:安装:附加AWS EBS卷时不存在特殊设备
EN

Stack Overflow用户
提问于 2016-10-18 13:03:29
回答 2查看 3.8K关注 0票数 4

亲爱的库伯奈特斯大师的!

我已经在手工创建的AWS主机上使用“contrib”(https://github.com/kubernetes/contrib/tree/master/ansible)开发了Kube1.4.1集群。

我的问题是库贝没有把EBS驱动器附加到附庸主机上。如果我将吊舱定义如下:

代码语言:javascript
复制
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata:
  name: kafka1
spec:
  replicas: 1
  template:
    spec:
      containers:
      - name: kafka1
        image: daniilyar/kafka
        ports:
        - containerPort: 9092 
          name: clientconnct
          protocol: TCP
        volumeMounts:
        - mountPath: /kafka
          name: storage
      volumes:
      - name: storage
        awsElasticBlockStore:
          volumeID: vol-56676d83
          fsType: ext4

我在kubelet.log中得到了以下错误:

代码语言:javascript
复制
Mounting arguments: /var/lib/kubelet/plugins/kubernetes.io/aws-ebs/mounts/vol-56676d83 /var/lib/kubelet/pods/db213783-9477-11e6-8aa9-12f3d1cdf81a/volumes/kubernetes.io~aws-ebs/storage  [bind]
Output: mount: special device /var/lib/kubelet/plugins/kubernetes.io/aws-ebs/mounts/vol-56676d83 does not exist

在此期间,EBS卷一直处于“可用”状态,因此我确信Kube 根本没有将卷附加到主机上,因此没有挂载卷。我100%肯定这是一个Kubernetes本身的问题,而不是权限问题,因为我可以手动地将相同的卷从这个仆从中装入到这个从属关系中,很好:

代码语言:javascript
复制
$ aws ec2 --region us-east-1 attach-volume --volume-id vol-56676d83 --instance-id $(wget -q -O - http://instance-data/latest/meta-data/instance-id) --device /dev/sdc
{
    "AttachTime": "2016-10-18T15:02:41.672Z", 
    "InstanceId": "i-603cfb50", 
    "VolumeId": "vol-56676d83", 
    "State": "attaching", 
    "Device": "/dev/sdc"
}

谷歌搜索,黑客入侵和尝试旧的K8版本没有帮助我解决这个问题。有人能告诉我我还能做些什么来理解这个问题,这样我才能解决这个问题吗?任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

发布于 2016-10-18 16:27:12

K8频道没有人帮我,所以在我脱发一天之后,我自己找到了解决方案:

要使--cloud-provider=aws集群通过“contrib”(https://github.com/kubernetes/contrib/tree/master/ansible)正确地安装EBS卷,除了IAM角色设置之外,您需要将K8标志添加到现有集群中: Ansible、apiserver和控制器管理器。

没有--cloud-provider=aws标志,Kubernetes将给您一个不友好的‘装入:特殊设备xxx不存在’错误,而不是真正的原因。

票数 9
EN

Stack Overflow用户

发布于 2020-02-20 17:24:47

使用kubeadm配置,配置在:/var/lib/kubelet/config.yaml/var/lib/kubelet/kubeadm-flags.env中定义。

我的问题是,环境变量是在kubeadm-flags.env中的主节点上定义的,而不是在第二个节点中定义的。

为了手动解决这个问题,我将--cloud-provider=aws标记添加到kubeadm-flags.env并重新启动服务,从而解决了这个问题:systemctl daemon-reload && systemctl restart kubelet

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40109083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档