猿问

当我使用地址中的端口时,Kubernetes 日志不会打印请求输出

我已经用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只是一个带有一条路由的 gin http 服务器


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()

}

在 Postman 中,我向 192.168.252.130:4001/hello 发出请求并获得响应


但 Kubernetes 中的 Kubernetes Pod 日志不会打印这些请求。我期望得到这个:


[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/hello 和 192.168.252.130:4001/hello 发出请求,并且没有端口 Pod 的日志打印请求,但使用端口 - 它们不会。


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


慕后森
浏览 119回答 1
1回答

炎炎设计

ClusterIP这是因为您无法从集群外部(在您的情况下,在 minikube 外部)访问 kubernetes 类型的服务。要从外部访问您的服务,请将您的服务更改为NodePort类型。就像是:apiVersion: v1kind: Servicemetadata:  name: gatewayspec:  selector:    app: gateway  ports:  - protocol: TCP    nodePort: 30036    port: 4001  type: NodePort然后您将能够访问它http://<minikube-ip>:30036/
随时随地看视频慕课网APP

相关分类

Go
我要回答