如何为kubernetes中同一节点上的一个服务(同一pod的多个实例)联系随机pod



我有一个节点。在这个节点上,我有两个多实例应用程序(每个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有很多选择来平衡服务之间的流量。我建议你尝试几种模式,看看哪种最适合你的需要。

相关内容

  • 没有找到相关文章