dan*_*yar 4 amazon-ec2 amazon-ebs amazon-web-services kubernetes
亲爱的Kubernetes大师!
我使用'contrib'Ansible playbook(https://github.com/kubernetes/contrib/tree/master/ansible)在手动创建的AWS主机上创建了kube 1.4.1集群.
我的问题是Kube没有将EBS驱动器连接到minion主机.如果我定义pod如下:
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
Run Code Online (Sandbox Code Playgroud)
我在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
Run Code Online (Sandbox Code Playgroud)
在此期间,EBS卷保持"可用"状态,因此我确信Kube 根本不会将卷附加到主机,因此不会挂载它.我100%确定这是一个Kubernetes本身的问题,而不是许可问题,因为我可以从这个minion手动安装相同的卷到这个minion就好了:
$ 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"
}
Run Code Online (Sandbox Code Playgroud)
谷歌搜索,黑客攻击和尝试旧的K8版本并没有帮助我解决这个问题.谁能指点我还能做些什么来理解这个问题所以我可以解决它?任何帮助是极大的赞赏.
在K8 Slack频道没有人帮我,所以经过一天的脱发后,我自己找到了解决方案:
要通过'contrib'Ansible playbook(https://github.com/kubernetes/contrib/tree/master/ansible)安装K8集群,正确安装EBS卷,除了IAM角色设置,你需要添加--cloud -provider =现有集群的aws标志:所有kubelet,apiserver和控制器管理器.
没有--cloud-provider = aws标志Kubernetes会给你一个不友好的'mount:特殊设备xxx不存在'错误而不是真正的原因.
| 归档时间: |
|
| 查看次数: |
1711 次 |
| 最近记录: |