AWS云提供商上的Kubernetes

时间:2015-12-24 23:27:09

标签: amazon-ec2 kubernetes amazon-elb amazon-ebs

我安装了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: {}

2 个答案:

答案 0 :(得分:9)

我不能说ProjectAtomic位,也不能说KUBERNETES_PROVIDER env-var,因为我的经验是使用CoreOS配置器。我将谈谈我的经历,看看这是否有助于你进一步深入了解你的设置。

最重要的是,控制器EC2和工作人员EC2机器必须具有正确的IAM role,这将使机器能够代表您的帐户拨打AWS电话。这包括配置ELB和使用EBS卷(或者在工作人员的情况下为自己附加EBS卷)之类的事情。没有它,您的云配置体验将无处可去。我非常确定IAM有效负载是在那些难以阅读的.go文件之外的地方定义的,但这是我用来显示所需内容的最快链接。

幸运的是,这个问题的答案以及我将要讨论的问题都以apiservercontroller-manager为中心。它们的配置和它们输出的日志。

apiservercontroller-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)

  
      
  1. 云提供商为kubernetes提供了哪些功能?
  2.   

我知道的一些功能:external loadbalancerpersistent volumes

  
      
  1. 如何配置AWS云提供商?
  2.   

有一个名为KUBERNETES_PROVIDER的环境变量,但似乎env var仅在人们启动k8s集群时才有意义。既然你说“一切正常”,我你不需要任何进一步的配置来使用我上面提到的功能。