在我的Kubernetes集群设置中,我有一个带有LoadBlanacer服务的Greenplum DB集群(一个主节点和8个分段节点(。请参阅下面的服务配置。
apiVersion: v1
kind: Service
metadata:
labels:
app: greenplum
greenplum-cluster: greenplum-cluster
name: greenplum
spec:
clusterIP: 10.101.251.127
clusterIPs:
- 10.101.251.127
externalIPs:
- 11.4.8.141
externalTrafficPolicy: Cluster
healthCheckNodePort: 32572
ports:
- name: psql
nodePort: 32198
port: 5432
protocol: TCP
targetPort: 5432
selector:
statefulset.kubernetes.io/pod-name: master-0
sessionAffinity: None
type: LoadBalancer
status:
loadBalancer: {}
但是,在部署几小时后,externalTrafficPolicy
值被设置为Local
而不是Cluster
,这使得服务无法通过定义的外部IP访问。这有什么原因吗?即使在我编辑服务配置之后,它也会自动更改。
或者有没有其他方式可以访问这个Greenplum DB(TCP 5432(,比如入口?
您能提供有关Kubernetes集群设置的更多详细信息吗?这是裸金属的,云管理的,kubeadm吗?
当您尝试连接到数据库时,查看日志以及一些跟踪是否有用?
externalTrafficPolicyLocal
或Cluster
之间的唯一区别是,Cluster
将平衡集群中所有pod之间的流量,并在您的pod之间实现良好的分布。Local
将仅在已经部署在请求从LB着陆的节点上的吊舱之间分配流量
此外,使用Local
将保留请求的客户端IP,但不保留Cluster
选项。
有一个很好的视频,他真的在这里详细解释了这一点。