簡體   English   中英

負載與 Kubernetes 服務不平衡

[英]Load is not balanced with Kubernetes Services

我使用以下 yaml 創建了兩個 nginx 副本:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.20-alpine
          ports:
            - containerPort: 80

我創建了服務:

apiVersion: v1
kind: Service
metadata:
  name: nginx-test-service
spec:
  selector:
    app: nginx
  ports:
    - port: 8082
      targetPort: 80

一切看起來都不錯。 但是當我這樣做時

minikube service nginx-test-service

我可以訪問nginx。 但是當我看到兩個 pods 日志時,請求總是去單個 pod。 另一個 pod 沒有收到任何請求。

但是,kubernetes 服務應該做負載均衡吧?

我錯過了什么嗎?

在本地運行負載平衡的一種方法是使用 ip 虛擬服務。 (ipvs)。 它;一項服務,它分發下一個 pod 的 ip 以進行調度/調用

它可能已經安裝。

lsmod | grep ip_vs
ip_vs_sh               16384  0
ip_vs_wrr              16384  0
ip_vs_rr               16384  19

正確設置並運行您的 cni

kubectl edit cm -n kube-system kube-proxy

編輯 ipvs 部分

將模式設置為 ipvs

模式:“ipvs”

和 ipvs 部分

ipvs:
      excludeCIDRs: null
      minSyncPeriod: 0s
      scheduler: "rr"

與往常一樣,k8s 有很多變量相互咬合,但 ipvs 是可能的。

https://kubernetes.io/blog/2018/07/09/ipvs-based-in-cluster-load-balancing-deep-dive/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM