【问题标题】:How to create Kubernetes load balancer on aws如何在 aws 上创建 Kubernetes 负载均衡器
【发布时间】:2018-01-04 05:08:29
【问题描述】:

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

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

有没有办法做到这一点?

【问题讨论】:

    标签: kubernetes aws-ec2


    【解决方案1】:

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

    例如,查看guestbook-go example

    【讨论】:

    • 如果我在本地安装 K8s,我如何才能拥有能够与 k8s 一起使用的负载均衡器?
    • 您无法使用 K8S 设置本地负载均衡器。
    • 它是如何知道访问凭证的?
    • 端口呢?如果我有一个服务在 9000 端口上监听,我是否应该访问 load-balancer-ip:9000 才能访问该服务?
    • 负载均衡器必须由云提供商使用
    【解决方案2】:

    小例子:

    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

    【讨论】:

    • AWS API 密钥怎么样?
    • 当您使用 IAM 角色时,您不需要 API 密钥
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 2020-03-01
    • 2021-03-28
    • 1970-01-01
    • 2021-05-01
    • 2012-05-09
    相关资源
    最近更新 更多