![](/img/trans.png)
[英]Failed to get AWS Cloud Provider. GetCloudProvider returned <nil> instead
[英]Kubernetes on AWS cloud provider
我安装了CentOS Atomic Host作为AWS上kubernetes的操作系统。
一切都很好,但似乎我错过了一些东西。
我没有配置云提供商,也找不到任何相关文档。
在这个问题中,我想知道:1。云提供商为kubernetes提供了哪些功能? 2.如何配置AWS云提供商?
UPD 1 :外部负载平衡器不起作用; 我还没有测试过awsElasticBlockStore
,但我也怀疑它不起作用。
UPD 2 :服务细节:
$ kubectl get svc nginx-service-aws-lb -o yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: 2016-01-02T09:51:40Z
name: nginx-service-aws-lb
namespace: default
resourceVersion: "74153"
selfLink: /api/v1/namespaces/default/services/nginx-service-aws-lb
uid: 6c28b718-b136-11e5-9bda-06c2feb29b0d
spec:
clusterIP: 10.254.172.185
ports:
- name: http-proxy-protocol
nodePort: 31385
port: 8080
protocol: TCP
targetPort: 8080
- name: https-proxy-protocol
nodePort: 31370
port: 8443
protocol: TCP
targetPort: 8443
selector:
app: nginx
sessionAffinity: None
type: LoadBalancer
status:
loadBalancer: {}
我不能说ProjectAtomic位,也不能说KUBERNETES_PROVIDER
env-var,因为我的经验是使用CoreOS配置器。 我将谈谈我的经历,看看这是否有助于您进一步深入了解您的设置。
最重要的是,控制器EC2和工作人员EC2机器必须具有正确的IAM角色 ,这将使机器能够代表您的帐户进行AWS呼叫。 这包括配置ELB和使用EBS卷(或者在工作人员的情况下为自己附加EBS卷)之类的事情。 没有它,您的云配置体验将无处可去。 我很确定IAM有效负载是在除了那些难以阅读的.go
文件之外的地方定义的,但这是我用来展示所需内容的最快的链接。
幸运的是,这个问题的答案,以及我将要讨论的问题,都围绕着apiserver
和controller-manager
。 它们的配置和它们输出的日志。
apiserver和controller-manager都有一个参数指向磁盘上的云配置文件,遗憾的是除了源之外没有记录。 根据我的经验, Zone
区域是可选的(就像他们在评论中所说的那样)。 然而,它看到KubernetesClusterTag
导致我在代码中关注该字段以查看它的作用。
如果您的体验与我的相似,您会在controller-manager
的docker日志中看到一堆关于它如何创建ELB但无法找到附加到其上的子网的错误消息; (当然,“docker logs”位假定ProjectAtomic也使用docker来运行Kubernetes守护进程)。
一旦接上一个Tag
名为KubernetesCluster
和设置的每个实例Tag
相同的字符串(它可以是任何东西,据我所知),则aws_loadbalancer
能够找到在VPC子网,它连接的节点到ELB,一切都酷 - 除了关于它的部分,现在只能创建面向互联网的 ELB。 :-(
为了清楚起见: aws.cfg
包含一个名为KubernetesClusterTag
的字段,允许您重新定义 Kubernetes将要查找的Tag
; 在该文件中没有任何价值,Kuberenetes将使用Tag
名称KubernetesCluster
。
我希望这对你有所帮助,我希望它可以帮助别人,因为一旦Kubernetes上场,这绝对是惊人的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.