我安装了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: {}
答案 0 :(得分:9)
我不能说ProjectAtomic位,也不能说KUBERNETES_PROVIDER
env-var,因为我的经验是使用CoreOS配置器。我将谈谈我的经历,看看这是否有助于你进一步深入了解你的设置。
最重要的是,控制器EC2和工作人员EC2机器必须具有正确的IAM role,这将使机器能够代表您的帐户拨打AWS电话。这包括配置ELB和使用EBS卷(或者在工作人员的情况下为自己附加EBS卷)之类的事情。没有它,您的云配置体验将无处可去。我非常确定IAM有效负载是在那些难以阅读的.go
文件之外的地方定义的,但这是我用来显示所需内容的最快链接。
幸运的是,这个问题的答案以及我将要讨论的问题都以apiserver
和controller-manager
为中心。它们的配置和它们输出的日志。
apiserver和controller-manager都有一个参数指向磁盘上的云配置文件,遗憾的是除了the source之外没有记录。根据我的经验,Zone
字段是可选的(就像他们在评论中所说的那样)。但是,它看到KubernetesClusterTag
导致我在代码中关注该字段以查看它的作用。
如果您的体验与我的相似,您会在docker日志中看到controller-manager
一堆关于它如何创建ELB的错误消息,但找不到任何附加到它的子网; (当然,“docker logs”位假定ProjectAtomic也使用docker来运行Kubernetes守护进程。)
我附加一个名为Tag
的{{1}}并将KubernetesCluster
的每个实例设置为相同的字符串(它可以是任何内容,AFAIK),然后Tag
为能够在VPC中找到子网并将节点附加到ELB,一切都很酷 - 除了关于它的部分只能创建面向Internet的 ELB,现在。 : - (
为了清楚起见,aws_loadbalancer
包含一个名为aws.cfg
的字段,允许您重新定义 Kubernetes将寻找的KubernetesClusterTag
; 没有该文件中的任何值,Kuberenetes将使用Tag
名称Tag
。
我希望这会对你有所帮助,我希望它可以帮助别人,因为一旦Kubernetes上场,这绝对是惊人的。
答案 1 :(得分:2)
- 云提供商为kubernetes提供了哪些功能?
醇>
我知道的一些功能:external loadbalancer,persistent volumes。
- 如何配置AWS云提供商?
醇>
有一个名为KUBERNETES_PROVIDER
的环境变量,但似乎env var仅在人们启动k8s集群时才有意义。既然你说“一切正常”,我猜你不需要任何进一步的配置来使用我上面提到的功能。