2016-10-18 2 views
3

Cher gourou Kubernetes!Kubernetes: mount: le périphérique spécial n'existe pas lors de la connexion du volume AWS EBS

J'ai développé le cluster kube 1.4.1 sur des hôtes AWS créés manuellement à l'aide du playbook Ansible 'contrib' (https://github.com/kubernetes/contrib/tree/master/ansible).

Mon problème est que Kube n'attache pas les lecteurs EBS aux hôtes minion. Si je le pod définir comme suit:

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 

je reçois l'erreur suivante dans kubelet.log:

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 

le volume EBS continue à être dans un état « disponible » au cours, donc je suis sûr que Kube ne pas attacher volume à l'hôte du tout et ainsi, ne monte pas il. Je suis 100% sûr que ce soit une Kubernetes lui-même problème et non la question permissioning parce que je peux monter le même volume manuellement à partir de ce sbire à ce sbire très bien:

$ 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" 
} 

recherche sur Google, le piratage et d'essayer plus K8 les versions ne m'a pas aidé à résoudre cela. Quelqu'un pourrait-il me signaler ce que je pourrais faire d'autre pour comprendre le problème afin que je puisse le réparer? Toute aide est grandement appréciée.

Répondre

7

Personne ne m'a aidé à K8 canaux Slack, donc après une journée de tirer mes cheveux j'ai trouvé la solution par moi-même:

Pour obtenir le cluster K8 installé par « contrib » Ansible PlayBook (https://github.com/kubernetes/contrib/tree/master/ansible) de montage volumes EBS correctement, à l'exception de la configuration des rôles IAM, vous devez ajouter le flag --cloud-provider = aws à votre cluster existant: tous les kubelets, l'apiserver et le gestionnaire du contrôleur. -

--cloud-provider = aws flag Kubernetes vous donnera une erreur "mount: special xxx n'existe pas" hostile au lieu de la cause réelle.

+0

merci de poster cette réponse. Je l'ai réparé pour moi. – stephanlindauer