Как создать балансировщик нагрузки Kubernetes на AWS

Kubernetes создает балансировщик нагрузки для каждой услуги; автоматически в GCE. Как я могу управлять чем-то похожим на AWS?

Сервис Kubernetes в основном использует kubeproxy для обработки внутреннего трафика. Но, что ip его kubeproxy не имеют доступа к внешней сети.

Есть ли способ сделать это?

2 ответа

Решение

В определении вашего сервиса установите его type поле для LoadBalancerи kubernetes автоматически создаст для вас AWS Elastic Load Balancer, если вы работаете в AWS. Эта функция должна работать на GCE/GKE, AWS и OpenStack.

Для примера, посмотрите пример гостевой книги.

Минимальный пример:

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 на кубе-аписервер.

Другие вопросы по тегам