我们有一个运行着三个pod的Kubernetes集群,我想知道我们需要在application.server中提供哪些RPC端点才能使交互式查询工作。
因此,我们有一个用例,需要使用gRPC服务器查询状态存储。在创建gRPC服务器时,我们将50052作为端口。.
但我无法获得应用程序服务器的价值,因为它需要主机:端口
对于主机,我们需要将每个pod和端口的端点ip指定为50052吗?
例如:
$>kubectl get ep
NAME ENDPOINTS AGE
myapp 10.8.2.85:8080,10.8.2.88:8080 10d
Pod1 -> 10.8.2.85:8080
Pod2 -> 10.8.2.88:8080
那么application.server的价值将是?
1. 10.8.2.85:50052 (port is what i am giving in gRPC server)
2. 10.8.2.88:50052 (port is what i am giving in gRPC server)
如果上面的application.server值是正确的,那么如何动态获取这个POD IP?
您可以将您的pods IP地址作为环境变量,然后在应用程序中引用环境变量。yml
请参阅:https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/
pod.yml
apiVersion: v1
kind: Pod
metadata:
name: kafka-stream-app
spec:
containers:
- name: kafka-stream-app
#... some more configs
env:
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
application.yml
spring:
cloud:
stream:
kafka:
streams:
binder:
configuration:
application.server: ${MY_POD_IP}:50052