我们正在GKE(Google Kubernetes Engine版本1.13.10)中运行Kubernetes集群。它是一个区域群集,每个区域以两个节点(总共六个节点)开始。我们在此群集上运行了一些服务,包括一些Web服务和Kerberos服务。
最近,我们将每个区域的节点数从2个更改为3个(因此现在有9个节点)。完成此操作后,将无法访问Kerberos服务。
一些细节:Kerberos服务在StatefulSet中位于具有静态IP地址的两个服务(UDP和TCP)后面的三个Pod上运行。该服务是一个LoadBalancer,它使用本地外部流量策略,因此我们可以更轻松地记录客户端的IP地址。
当我们添加额外的节点时,Kerberos服务记录了以下事件:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal UpdatedLoadBalancer 53m (x2 over 56m) service-controller Updated load balancer with new hosts
pod继续运行,但是服务的外部终结点不再是必需的:远程登录到终结点时,另一端没有任何显示。重新启动吊舱即可解决问题。
这是TCP服务的定义:
kind: Service
metadata:
annotations:
external-dns.alpha.kubernetes.io/hostname: kdc.example.org
name: kdc-tcp
namespace: kdc
spec:
clusterIP: 10.8.18.71
externalTrafficPolicy: Local
healthCheckNodePort: 32447
loadBalancerIP: 35.101.23.134
ports:
- name: kerberos-tcp
nodePort: 32056
port: 88
protocol: TCP
targetPort: 88
selector:
app: kdc
sessionAffinity: None
type: LoadBalancer
status:
loadBalancer:
ingress:
- ip: 35.101.23.134
为什么添加一些额外的节点会导致这种情况发生?将来如何避免这个问题?