Сервисы Kubernetes - переадресация портов на все модули через развертывание - PullRequest
0 голосов
/ 12 марта 2020

Я хочу продемонстрировать возможности балансировки нагрузки kubernetes. В моей локальной системе у меня есть один узел в кластере. Хотите развернуть контейнер nginx в 3 контейнерах и заменить индекс. html (по умолчанию) на мой модифицированный индекс. html (с некоторыми отклонениями). Я создаю службу и назначаю порт для пересылки всех запросов на порт 80 контейнеров. Я хочу получить доступ к своему модулю как http://localhost: 3030 . В зависимости от модуля, к которому обращается запрос, индекс. 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

1 Ответ

0 голосов
/ 13 марта 2020

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

  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

deploy.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

...