首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只有1个pod处理Kubernetes集群中的所有请求。

只有1个pod处理Kubernetes集群中的所有请求。
EN

Stack Overflow用户
提问于 2019-10-27 15:29:57
回答 3查看 2.9K关注 0票数 3

以下是用于部署和服务的minikube Kubernetes的清单文件:

代码语言:javascript
运行
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-deployment
spec:
  selector:
    matchLabels:
      app: hello
  replicas: 3
  template:
    metadata:
      labels:
        app: hello
    spec:
      containers:
      - name: hello
        image: hello_hello
        imagePullPolicy: Never
        ports:
        - containerPort: 4001
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: hello
spec:
  selector:
    app: hello
  ports:
  - port: 4001
    nodePort: 30036
    protocol: TCP
  type: NodePort

和一个用Golang语言编写的简单HTTP服务器

代码语言:javascript
运行
复制
package main
import (
    http "net/http"

    "github.com/gin-gonic/gin"
)

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

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

    server.ListenAndServe()
}

当我向IP:30036/ping发出几个请求,然后打开pod的日志时,我可以看到,每3个荚中只有一个处理所有请求。如何对请求做出其他豆荚响应?

EN

Stack Overflow用户

回答已采纳

发布于 2019-10-27 17:25:53

您正在使用NodePort公开服务,因此没有反向代理,但直接连接到Pod。这是个很好的选择。(稍后,您可能需要使用一个“进题”)

您所看到的是,只有一个Pod处理您的请求。您期望每个请求都负载均衡到不同的荚。您的假设是正确的,但是负载平衡不是发生在HTTP请求层,而是发生在TCP层。

因此,当您拥有持久的TCP连接并重用它时,您将不会体验到所期望的负载平衡。由于建立TCP连接非常昂贵,所以通常需要进行优化,以避免重复打开新的TCP连接: HTTP保持活动。

默认情况下,在大多数框架和客户端中都启用了“保持活动”,Go也是如此。尝试s.SetKeepAlivesEnabled(false),看看它是否解决了您的问题。(建议只作测试!)

你也可以使用多个不同的客户,f.e。在命令行中使用卷曲或禁用,在邮递员中保持生存。

票数 7
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58580778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档