负载与 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 服务应该做负载均衡吗?
我错过了什么吗?
一种实现本地负载平衡的方法 运行ning 是使用 ip 虚拟服务。 (ipvs)。它是一项将下一个 pod 的 ip 分发给 schedule/call
的服务
它可能已经安装了。
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/
我使用以下 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 服务应该做负载均衡吗?
我错过了什么吗?
一种实现本地负载平衡的方法 运行ning 是使用 ip 虚拟服务。 (ipvs)。它是一项将下一个 pod 的 ip 分发给 schedule/call
的服务它可能已经安装了。
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/