Как создать балансировщик нагрузки 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
на кубе-аписервер.