Запуск веб-приложения nginx в kubernetes, но оно масштабируется / реплицируется только горизонтально - PullRequest
0 голосов
/ 20 ноября 2018

Моя проблема: Когда я бегу

kubectl -n test scale --replicas=5 -f web-api-deployment.yaml
  1. Он масштабирует развертывание, по одному POD на узел, даже если узлы имеют достаточную емкость, почему он не масштабирует более одного POD на узел
  2. В настоящее время только один POD на узел получает доступ к порту 443, что если бы я хотел запустить три модуля nginx на одном узле, на которых все размещалось одно и то же веб-приложение на 443, и хотел, чтобы балансировщик нагрузки балансировал нагрузку между 3 PODS на одном и том же узел?

Кубернетский кластер: 3 мастера 5 рабочих узлов

AWS: Упругий распределитель нагрузки направляет порт 443 к каждому рабочему узлу Kubernetes

РАЗВЕРТЫВАНИЕ ПОД: 1021 *

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  namespace: test
  name: WEB-API
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: WEB-API
    spec:
      containers:
        - name: WEB-API
          image: WEB-API:latest
          env:
            - name: NGINX_WORKER_PROCESSES
              value: "1"
            - name: KEEPALIVETIMEOUT
              value: "0"
            - name: NGINX_WORKER_CONNECTIONS
              value: "2048"
      resources:
        requests:
          cpu: 500m
          memory: 500Mi
      ports:
      - containerPort: 443
      volumeMounts:
        - name: config-volume
          mountPath: /opt/config/
        - name: aws-volume
          mountPath: /root/.aws

apiVersion: v1
kind: Service
metadata:
  namespace: prd
  name: WEB-API
  annotations:
    external-dns.alpha.kubernetes.io/hostname: someaddress
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-east-1:xxxxxxxxxxxxxxxx:certificate/xxxxxxxxxxxxxxxxxxxxxxx
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443"
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
  labels:
    app: WEB-API
spec:
  externalTrafficPolicy: Cluster
  ports:
    - name: https
      port: 443
      targetPort: 80
      protocol: TCP
  selector:
    app: WEB-API
  sessionAffinity: None
  type: LoadBalancer

1 Ответ

0 голосов
/ 20 ноября 2018
  1. Нет причины, по которой он не будет масштабироваться до более чем одного на узел (если у вас не так много узлов в кластере, тогда он попытается оптимально распределить рабочие нагрузки, то есть в вашем случае 1 модульна узел с 5 репликами и 5 узлами в кластере).У вас есть стручки в состоянии "Ожидание"?Если так, проверьте их describe для информации, почему они не были запланированы.Вы также можете подключить / утопить узлы, чтобы увидеть, как будут работать 5 модулей при меньшем числе доступных для планирования узлов.

  2. 443 привязка находится в пространстве имен сетевых модулей, поэтому вы можете иметь столькостручки, слушающие свои собственные 443 в то же время, что и вы, конфликта портов не будет, так как у каждого из них есть свой отдельный localhost и IP-адрес модуля.

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