【发布时间】:2018-01-04 05:08:29
【问题描述】:
Kubernetes 为每个服务创建一个负载均衡器;自动在 GCE 中。如何在 AWS 上管理类似的东西?
Kubernetes 服务基本上使用 kubeproxy 来处理内部流量。但是那个 kubeproxy ip 它没有访问外部网络的权限。
有没有办法做到这一点?
【问题讨论】:
标签: kubernetes aws-ec2
Kubernetes 为每个服务创建一个负载均衡器;自动在 GCE 中。如何在 AWS 上管理类似的东西?
Kubernetes 服务基本上使用 kubeproxy 来处理内部流量。但是那个 kubeproxy ip 它没有访问外部网络的权限。
有没有办法做到这一点?
【问题讨论】:
标签: kubernetes aws-ec2
在您的服务定义中,将其 type field 设置为 LoadBalancer,如果您在 AWS 上运行,kubernetes 将自动为您创建一个 AWS Elastic Load Balancer。此功能应该适用于 GCE/GKE、AWS 和 OpenStack。
例如,查看guestbook-go example。
【讨论】:
load-balancer-ip:9000 才能访问该服务?
小例子:
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
type: LoadBalancer
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
相关文档:
在编写时,了解所有 service.beta.kubernetes.io 注释的最佳方法是阅读源代码:
为了让控制器能够管理 ELB,它需要在主实例 IAM 角色e.g. 中设置权限:
...
{
"Action": "elasticloadbalancing:*",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:GetRepositoryPolicy",
"ecr:DescribeRepositories",
"ecr:ListImages",
"ecr:BatchGetImage"
],
"Resource": "*",
"Effect": "Allow"
},
...
云提供商应在kube-apiserver 上设置--cloud-provider=aws。
【讨论】: