当我在地址中使用端口时,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

我在容器docker_gateway中的GO应用程序只是一个带有一个路由的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

这是因为您无法从集群外部(在您的情况下,在minikube之外(访问ClusterIP类型的kubernetes服务。

点击此处了解有关服务类型的更多信息

要从外部访问您的服务,请将您的服务更改为NodePort类型。

类似于:

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

然后您将能够在http://<minikube-ip>:30036/上访问它

相关内容

  • 没有找到相关文章

最新更新