Kubernetes 为每个服务创建一个负载均衡器;自动在 GCE 中。如何在 AWS 上管理类似的东西?
Kubernetes 服务基本上使用 kubeproxy 来处理内部流量。但是那个 kubeproxy ip 它没有访问外部网络的权限。
有办法做到这一点吗?
Kubernetes 为每个服务创建一个负载均衡器;自动在 GCE 中。如何在 AWS 上管理类似的东西?
Kubernetes 服务基本上使用 kubeproxy 来处理内部流量。但是那个 kubeproxy ip 它没有访问外部网络的权限。
有办法做到这一点吗?
在您的服务定义中,将其type
字段设置为LoadBalancer
,如果您在 AWS 上运行,kubernetes 将自动为您创建一个 AWS Elastic Load Balancer。此功能应该适用于 GCE/GKE、AWS 和 OpenStack。
例如,查看guestbook-go 示例。
最小的例子:
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 角色中设置权限,例如:
...
{
"Action": "elasticloadbalancing:*",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:GetRepositoryPolicy",
"ecr:DescribeRepositories",
"ecr:ListImages",
"ecr:BatchGetImage"
],
"Resource": "*",
"Effect": "Allow"
},
...
云提供商应该--cloud-provider=aws
在kube-apiserver上设置。