如何在AWS中设置kubernetes的loaderbalancer服务

时间:2015-08-14 18:40:02

标签: amazon-web-services amazon-ec2 kubernetes

我尝试使用AWS来设置kubernetes(版本1.0.1)并在那里部署一些服务和pod。

但我遇到了LoadBalancer服务。根据文档,我只需要设置正确的服务类型并在防火墙中打开端口

但是服务没有接收外部IP。 (进入是空的)

我是否需要在AWS控制台中手动创建LoadBalancer?也许还有其他一些行动?

谢谢,

2 个答案:

答案 0 :(得分:2)

应该自动创建LoadBalancer。

可能存在阻止创建负载均衡器的IAM策略问题(请参阅Issue #10692)。

如果问题不是这样,那么在主VM上查找/var/log/kube-controller-manager.log中的错误可能会让您知道出了什么问题。

答案 1 :(得分:0)

无论您是使用kubernetes而不是使用kubernetes(通过发布kubectl获取svc来显示外部IP)还是使用amazon aws,这一步都是不同的。启动集群(aws或gcloud)后,使用kubectl create -f some-deployment.yaml部署应用程序,然后发出

kubectl expose rs your-pod-name  --type="LoadBalancer"

展示你的应用......然后放松几分钟直到命令

kubectl get pods

回复列,STATUS的值为Running ...,然后发出

kubectl get svc

几分钟后将按照

在gcloud上显示EXTERNAL-IP
NAME                       CLUSTER-IP       EXTERNAL-IP       PORT(S)                   AGE
kubernetes                 10.123.240.1     <none>            443/TCP                   10m
loudspeed-deployment-210   10.123.247.54    104.196.113.166   3000/TCP,80/TCP,443/TCP   1m
mongo                      10.123.244.245   <none>            27017/TCP                 5m

而在aws上,EXTERNAL-IP将部分显示LoadBalancer Ingress的URL ...以查看完整的URL问题

kubectl describe svc

典型的输出是

Labels:         app=my-cool-app,pod-template-hash=494629853
Selector:       app=my-cool-app,pod-template-hash=494629853
Type:           LoadBalancer
IP:         10.0.154.138
LoadBalancer Ingress:   a53bigscarystring33e-20075.us-east-1.elb.amazonaws.com
Port:           port-1  80/TCP
NodePort:       port-1  30487/TCP
Endpoints:      10.244.0.3:80
Port:           port-2  443/TCP
NodePort:       port-2  32698/TCP
Endpoints:      10.244.0.3:443
Session Affinity:   None
Events:
  FirstSeen LastSeen    Count   From            SubobjectPath   Type        Reason          Message
  --------- --------    -----   ----            -------------   --------    ------          -------
  14m       14m     1   {service-controller }           Normal      CreatingLoadBalancer    Creating load balancer
  13m       13m     1   {service-controller }           Normal      CreatedLoadBalancer Created load balancer


Name:           mongo
Labels:         name=mongo
Selector:       name=mongo
Type:           ClusterIP
IP:         10.0.63.81
Port:           <unset> 27017/TCP
Endpoints:      10.244.0.4:27017
Session Affinity:   None
No events.

注意上面的

    LoadBalancer Ingress:   a53bigscarystring33e-20075.us-east-1.elb.amazonaws.com

这是您使用

从命令行可见的外部URL
curl a53bigscarystring33e-20075.us-east-1.elb.amazonaws.com

并且通常映射到资源类型A自动刷新的选项列表中的aws Route 53控制台中的公共可见域

查看详细信息(我们不会在AWS防火墙中自动打开NodePort服务)https://github.com/kubernetes/kubernetes/blob/release-1.3/docs/design/aws_under_the_hood.md