AWS LoadBalancer не подключается к K8s POD - PullRequest
0 голосов
/ 07 июня 2019

У меня есть одноузловой "кластер" Kubernetes, построенный с kubeadm в AWS.

Я развернул простое развертывание Nginx с этой конфигурацией:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: nginx0-deployment
  labels:
    app: nginx0-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx0
  template:
    metadata:
      labels:
        app: nginx0
    spec:
      containers:
      - name: nginx
        image: k8s.gcr.io/nginx:latest
        ports:
        - containerPort: 80
          name: backend-http

Я также создал AWS ELB LoadBalancer:

kind: Service
apiVersion: v1
metadata:
  name: nginx0-service
balancing-enabled: "true"
spec:
  selector:
    app: nginx0-deployment
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: LoadBalancer

Это создало ELB и открылосоответствующие порты в группе безопасности экземпляра K8s.

{ec2-instance} ~ $ kubectl get all
NAME                                     READY   STATUS    RESTARTS   AGE
pod/nginx0-deployment-548f99f47c-ns75w   1/1     Running   0          3m45s

NAME                     TYPE           CLUSTER-IP       EXTERNAL-IP                                                                   PORT(S)        AGE
service/kubernetes       ClusterIP      10.96.0.1        <none>     443/TCP        25h
service/nginx0-service   LoadBalancer   10.106.179.191   acfc4150....elb.amazonaws.com   80:30675/TCP   63s

NAME                                READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx0-deployment   1/1     1            1           3m45s

NAME                                           DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx0-deployment-548f99f47c   1         1         1       3m45s

Однако между ELB и POD по-прежнему что-то не хватает, потому что просмотр к http://acfc4150....elb.amazonaws.com/ не работает - Chrome сообщает ERR_EMPTY_RESPONSE.

Я думаю, это как-то связано с сопоставлением портов ELB 80: 30675 / TCP - я проверил входящий трафик на экземпляре и вижу пакеты для порта 30675 но ничего не возвращается.Как будто сопоставление между этим портом и портом 80 POD не было установлено?

Есть идеи, что мне добавить в мои манифесты, чтобы он работал?

Спасибо!

1 Ответ

3 голосов
/ 07 июня 2019

у вас неправильные ярлыки;ваши Развертывания имеют app: nginx0-deployment, но ваши Бобы имеют app: nginx0 и Service s не нацелены на развертывания, они нацелены на Базы

Обновите Serviceиметь:

spec:
  selector:
    app: nginx0

вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...