Performance Kubernetes:不能随着节点的增加而增加请求/秒
我创建了一个简单的nodejs-express应用程序,它只需侦听单个get端口并返回hello-word字符串 然后,我将该应用程序部署在一个kubernete集群上,该集群有1个节点和4vCpu 8GB Ram。使用nginx入口控制器将所有流量路由到应用程序 所以在完成部署之后,我执行了简单的http负载测试。结果为70-100请求/秒。我试图将副本集增加到6,但结果仍然相同。我还试图指定资源限制,但没有改变 最后,我在4vCpu 8GB Ram的池中又添加了2个节点 之后,我再次执行负载测试,但结果仍然相同。总共有3个节点,带有12vCpu和24GB Ram,它只能勉强处理80个请求/秒 负载测试的结果 12个线程和400个连接 延迟423.68ms 335.38ms 1.97s 84.88% Req/Sec 76.58 34.13 212.00 72.37% 4457个请求,5.08秒,读取1.14MB 也许我做错了什么,但我想不出来 这是我的部署和服务yaml文件Performance Kubernetes:不能随着节点的增加而增加请求/秒,performance,docker,kubernetes,load-testing,nginx-ingress,Performance,Docker,Kubernetes,Load Testing,Nginx Ingress,我创建了一个简单的nodejs-express应用程序,它只需侦听单个get端口并返回hello-word字符串 然后,我将该应用程序部署在一个kubernete集群上,该集群有1个节点和4vCpu 8GB Ram。使用nginx入口控制器将所有流量路由到应用程序 所以在完成部署之后,我执行了简单的http负载测试。结果为70-100请求/秒。我试图将副本集增加到6,但结果仍然相同。我还试图指定资源限制,但没有改变 最后,我在4vCpu 8GB Ram的池中又添加了2个节点 之后,我再次执行负载
apiVersion: v1
kind: Service
metadata:
name: app-3
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
selector:
app: app-3
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-3
spec:
replicas: 6
selector:
matchLabels:
app: app-3
template:
metadata:
labels:
app: app-3
spec:
containers:
- name: app-3-name
image: s1nc4p/node:v22
ports:
- containerPort: 8080
resources:
requests:
memory: "1024Mi"
cpu: "1000m"
limits:
memory: "1024Mi"
cpu: "1000m"
kind: Service
apiVersion: v1
metadata:
name: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
externalTrafficPolicy: Local
type: LoadBalancer
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- name: http
port: 80
protocol: TCP
这是入口服务yaml文件
apiVersion: v1
kind: Service
metadata:
name: app-3
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
selector:
app: app-3
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-3
spec:
replicas: 6
selector:
matchLabels:
app: app-3
template:
metadata:
labels:
app: app-3
spec:
containers:
- name: app-3-name
image: s1nc4p/node:v22
ports:
- containerPort: 8080
resources:
requests:
memory: "1024Mi"
cpu: "1000m"
limits:
memory: "1024Mi"
cpu: "1000m"
kind: Service
apiVersion: v1
metadata:
name: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
externalTrafficPolicy: Local
type: LoadBalancer
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- name: http
port: 80
protocol: TCP
这是入口文件
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: hello-kubernetes-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: kkk.storadewebservices.com
http:
paths:
- path: '/'
backend:
serviceName: app-3
servicePort: 80
也许这就是您可以从负载测试仪生成的通信量。您是否使用多个负载测试仪测试过它?我使用“wrk”进行了测试,在本地主机中,我可以使用macbook在没有kubernetes的情况下达到5000 req/sec。您的k8s是否在本地主机上运行?如果没有,试着在远程节点上用你的应用程序测试它,看看你能点击多少。也许这就是你能从负载测试仪生成的流量。您是否使用多个负载测试仪测试过它?我使用“wrk”进行了测试,在本地主机中,我可以使用macbook在没有kubernetes的情况下达到5000 req/sec。您的k8s是否在本地主机上运行?如果没有,试着在远程节点上用你的应用程序测试一下,看看你能点击多少。