![](/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.