11

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

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

有办法做到这一点吗?

4

2 回答 2

13

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

例如,查看guestbook-go 示例

于 2015-07-24T16:41:45.507 回答
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 角色中设置权限,例如

...
{
  "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=awskube-apiserver上设置。

于 2018-01-03T21:03:21.363 回答