Я не могу связать свой вход с моим сервисом - PullRequest
0 голосов
/ 25 октября 2018

У меня проблема с входом и моим сервисом, я не могу получить, чтобы при подключении к IP-адресу моего сервера я перенаправлял на сервис, связанный с портом 80, который является моим веб-сайтом.Я передаю вам файлы конфигурации и описание входа:

apiVersion: v1
kind: Namespace
metadata:
  name: bookstack
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    service: mysql
  name: mysql
  namespace: bookstack
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        service: mysql
    spec:
      containers:
      - env:
        - name: MYSQL_DATABASE
          value: bookstack
        - name: MYSQL_PASS
          value: pass
        - name: MYSQL_ROOT_PASSWORD
          value: root
        - name: MYSQL_USER
          value: user
        image: mysql:5.7
        name: mysql
        ports:
        - containerPort: 3306
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  labels:
    service: mysql
  name: mysql
  namespace: bookstack
spec:
  type: NodePort
  ports:
  - name: "3306"
    port: 3306
    targetPort: 3306
  selector:
    service: mysql
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: bookstack
  name: bookstack
  namespace: bookstack
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: bookstack
    spec:
      containers:
      - env:
        - name: namespace
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: podname
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: nodename
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: DB_DATABASE
          value: bookstack
        - name: DB_HOST
          value: mysql
        - name: DB_PASSWORD
          value: root
        - name: DB_USERNAME
          value: root
        image: solidnerd/bookstack:latest
        name: bookstack
        ports:
        - name: http
          containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: bookstack
  name: bookstack
  namespace: bookstack
spec:
  type: NodePort
  ports:
  - name: http-port
    port: 80
    protocol: TCP
  selector:
    app: bookstack
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: http
  namespace: bookstack
spec:
  backend:
    serviceName: bookstack
    servicePort: http-port

Это то, что появляется на моем входе:

Name:             http
Namespace:        bookstack
Address:
Default backend:  bookstack:http-port (10.36.0.22:80)
Rules:
  Host  Path  Backends
  ----  ----  --------
  *     *     bookstack:http-port (10.36.0.22:80)
Annotations:
  kubectl.kubernetes.io/last-applied-configuration:  {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{},"name":"http","namespace":"bookstack"},"spec":{"backend":{"serviceName":"bookstack","servicePort":"http-port"}}}

Events:  <none>

Он не возвращает никакого внешнего IP-адреса для подключения ко мнепочему это может быть?Я хочу избежать использования LoadBalancer в качестве типа службы.

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Основная проблема заключалась в том, что я не активировал балансировщик, который по умолчанию предлагает Google Kubernetes Engine, не имея его активным, я не смог сгенерировать внешний ip, потому что не было балансировщика.Существует два решения: либо активировать балансировщик нагрузки GKE по умолчанию, либо создать тип службы: LoadBalancer.

Важно также активировать при развертывании readinessProbe и livenessProbe.

Пример:

    readinessProbe:
      httpGet:
        path: /login
        port: 80
      initialDelaySeconds: 5
      timeoutSeconds: 1
      periodSeconds: 15
    livenessProbe:
      httpGet:
        path: /login
        port: 80
      initialDelaySeconds: 15
      timeoutSeconds: 1
      periodSeconds: 15
0 голосов
/ 26 октября 2018

Специально не будет внешнего IP-адреса, потому что NodePort представляет все узлы в вашем кластере на этом конкретном порту.Таким образом, по сути, вам нужно будет направить внешний балансировщик нагрузки или этот источник трафика на каждый из узлов в кластере на этом конкретном NodePort.

Обратите внимание, что если вы используете ExternalTrafficPolicy=Localтолько узлы, которые имеют модули для вашего сервиса, будут отвечать.

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