Kubernetes为每项服务创建一个负载均衡器;自动在GCE中。如何在AWS上管理类似的东西?
Kubernetes服务基本上使用kubeproxy来处理内部流量。但是那个kubeproxy ip它无法访问外部网络。
有办法实现这个目标吗?
答案 0 :(得分:13)
在您的服务定义中,将其type
field设置为LoadBalancer
,如果您在AWS上运行,kubernetes将自动为您创建AWS Elastic Load Balancer。此功能应适用于GCE / GKE,AWS和OpenStack。
例如,请查看guestbook-go example。
答案 1 :(得分:5)
最小例子:
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
。