我有一个节点。在这个节点上,我有两个多实例应用程序(每个3个pod)
应用A想联系应用b
我的问题是:App A一直联系App B的同一个pod。我想要备用pod(例如轮询中的负载平衡)例如:第一个请求:AppPod3响应第二个请求:AppPod1响应第三个请求:AppPod2 response
我怎么能做到呢?
非常感谢你的帮助……你可以在下面看到我的应用程序B的配置文件我已经尝试为sessionaffinity设置超时时间,但它不工作…kind: Deployment
metadata:
name: AppB
spec:
selector:
matchLabels:
app: AppB
replicas: 3
template:
metadata:
labels:
app: AppB
spec:
containers:
- name: AppB-container
image: image
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: AppB
labels:
app: svc-AppB
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: AppB
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 1```
默认情况下,服务应该以轮询方式使用后端pod。如果pod是无状态的,你不需要sessionAffinity设置;否则,您将根据源ID重定向到相同的pod。
也许你可以给pod添加日志记录,并观察它们何时被访问。对服务的后续调用应该以轮循方式重定向到pod,并使用最少的服务配置。
更新:这是我正在使用的部署。它像预期的那样平衡了豆荚;发送到服务clusterip:port的每个curl请求都在不同的pod上结束。我的k8s安装在本地,v1.18.3。
apiVersion: apps/v1
kind: Deployment
metadata:
name: baseDeployment
labels:
app: baseApp
namespace: nm-app1
spec:
replicas: 2
selector:
matchLabels:
app: baseApp
template:
metadata:
labels:
app: baseApp
spec:
containers:
- name: baseApp
image: local-registry:5000/baseApp
ports:
- containerPort: 8080
---
kind: Service
apiVersion: v1
metadata:
name: baseService
namespace: nm-app1
spec:
selector:
app: baseApp
ports:
- protocol: TCP
port: 80
targetPort: 8080
@user3683760您必须在部署中应用负载平衡策略。Kube有很多选择来平衡服务之间的流量。我建议你尝试几种模式,看看哪种最适合你的需要。