Сервисы Kubernetes - перенаправление портов на все поды посредством развертывания

Я хочу продемонстрировать возможности балансировки нагрузки Kubernetes. В моей локальной системе у меня есть один узел в кластере. Хотите развернуть контейнер nginx в 3 модулях и заменить index.html (по умолчанию) моим измененным index.html (с некоторыми отклонениями). Я создаю службу и назначаю порт для пересылки всех запросов на порт 80 контейнеров. Я хочу получить доступ к своему модулю как http://localhost:3030. В зависимости от того, какой модуль попадает в запрос, index.html будет отображать содержимое. Однако с приведенным ниже кодом развертывания и обслуживания я не смог попасть ни в один модуль. Если я выполняю переадресацию портов на отдельный модуль, я могу достичь его.

Я следовал подходу, описанному в здесь, но не повезло. Любая идея, что мне не хватает.

Вот что я вижу, когда получаю все.

$ k get all
NAME                              READY   STATUS    RESTARTS   AGE
pod/app-server-6ccf5d55db-2qt2r   1/1     Running   0          3d20h
pod/app-server-6ccf5d55db-96lkb   1/1     Running   0          3d20h
pod/app-server-6ccf5d55db-ljsc4   1/1     Running   0          3d20h


NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   19d


NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/app-server   3/3     3            3           3d20h

apiVersion: v1
kind: Service
metadata:
  name: app-service
spec:
  type: NodePort
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 3030
  selector:
    app: app-server

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-server
  labels:
    app: app-server
spec:
  replicas: 3
  selector:
    matchLabels:
      app: app-server
  template:
    metadata:
      labels:
        app: app-server
    spec:
      containers:
      - name: web-server
        image: nginx:latest
        ports:
        - containerPort: 80

person Raja Chava    schedule 12.03.2020    source источник


Ответы (1)


Хорошо, я сделал две ошибки.

  1. Развертывание как службы, так и сервера приложений выполняется в одном файле.
  2. Я испортил значения порта и servicePort

Вот внесенные мной изменения, которые сработали.

Service.yml

apiVersion: v1
kind: Service
metadata:
  name: app-service
spec:
  type: NodePort
  ports:
    - name: httpport
      protocol: TCP
      port: 32766
      nodePort: 32766
      targetPort: 80
  selector:
    app: app-server

развертывание.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-server
  labels:
    app: app-server
spec:
  replicas: 3
  selector:
    matchLabels:
      app: app-server
  template:
    metadata:
      labels:
        app: app-server
    spec:
      containers:
      - name: web-server
        image: nginx:latest
        ports:
        - containerPort: 80

Сначала я развернул сервер, а затем службу. Затем я смог связаться с сервером nginx с помощью http://localhost:32766

Вот результат моего k get all

$ k get all -o wide
NAME                              READY   STATUS    RESTARTS   AGE   IP           NODE             NOMINATED NODE   READINESS GATES
pod/app-server-6ccf5d55db-9xjwh   1/1     Running   0          60s   10.1.0.201   docker-desktop   <none>           <none>
pod/app-server-6ccf5d55db-mdtrx   1/1     Running   0          60s   10.1.0.200   docker-desktop   <none>           <none>
pod/app-server-6ccf5d55db-smmcg   1/1     Running   0          60s   10.1.0.199   docker-desktop   <none>           <none>


NAME                  TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)           AGE   SELECTOR
service/app-service   NodePort    10.110.72.85   <none>        32766:32766/TCP   54s   app=app-server
service/kubernetes    ClusterIP   10.96.0.1      <none>        443/TCP           20d   <none>


NAME                         READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES         SELECTOR
deployment.apps/app-server   3/3     3            3           60s   web-server   nginx:latest   app=app-server

NAME                                    DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES         SELECTOR
replicaset.apps/app-server-6ccf5d55db   3         3         3       60s   web-server   nginx:latest   app=app-server,pod-template-hash=6ccf5d55db

person Raja Chava    schedule 13.03.2020