[英]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.