如何在 aws 上创建 Kubernetes 负载均衡器

How to create Kubernetes load balancer on aws

Kubernetes 为每个服务创建一个负载均衡器;在 GCE 中自动执行。我如何在 AWS 上管理类似的东西?

Kubernetes 服务基本上使用 kubeproxy 来处理内部流量。但是那个 kubeproxy ip 它没有访问外部网络的权限。

有办法做到这一点吗?

在您的服务定义中,将其 type field 设置为 LoadBalancer,如果您是 运行,kubernetes 将自动为您创建一个 AWS Elastic Load Balancer在 AWS 上。此功能应适用于 GCE/GKE、AWS 和 OpenStack。

例如,查看 guestbook-go example

最小示例:

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 设置云提供商。