Логи Kubernetes не выводят запросы на вывод, когда я использую порт в адресе - PullRequest
0 голосов
/ 25 октября 2019

Я создал кластер с minikube

minikube start 

Применил этот манифест yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gateway-deployment
spec:
  selector:
    matchLabels:
      app: gateway
  replicas: 1
  template:
    metadata:
      labels:
        app: gateway
    spec:
      containers:
      - name: gateway
        image: docker_gateway
        imagePullPolicy: Never
        ports:
        - containerPort: 4001
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: gateway
spec:
  selector:
    app: gateway
  ports:
  - protocol: TCP
    port: 4001

И мое приложение GO в контейнере docker_gatewayэто просто http-сервер gin с одним маршрутом

package main
import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/hello", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "hello",
        })
    })

    server = &http.Server{
        Addr:    ":4001",
        Handler: r,
    }

    server.ListenAndServe()
}

В Почтальоне я делаю запросы к 192.168.252.130:4001/hello и получаю ответы

Но логи Kubernetes Pod в Kubernetes не печатайте эти запросы. Я ожидаю получить это:

[GIN] 2019/10/25 - 14:17:20 | 200 |       1.115µs |      192.168.252.1| GET      /hello

Но интересная вещь , когда я добавляю Ingress

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress
spec:
  backend:
    serviceName: gateway
    servicePort: 4001

Я могу делать запросы к 192.168.252.130/привет и 192.168.252.130:4001/hello И без запросов на печать журналов Pod порта, но с портом - они не.

[GIN] 2019/10/25 - 14:19:13 | 200 |       2.433µs |      192.168.252.1| GET      /hello

1 Ответ

1 голос
/ 25 октября 2019

Это потому, что вы не можете получить доступ к службе kubernetes типа ClusterIP снаружи (в вашем случае, вне мини-куба) кластера.

Узнайте больше о типах услуг здесь

Чтобы получить доступ к своей услуге извне, измените свою услугу на NodePort type.

Что-то вроде:

apiVersion: v1
kind: Service
metadata:
  name: gateway
spec:
  selector:
    app: gateway
  ports:
  - protocol: TCP
    nodePort: 30036
    port: 4001
  type: NodePort

Тогда вы сможете получить к нему доступ в http://<minikube-ip>:30036/

...