可以在 NCP ConfigMap 中使用参数 l4_persistence 和 l7_persistence 指定持久性设置。
可用于设置第 4 层持久性的选项为源 IP。可用于设置第 7 层持久性的选项为 cookie 和源 IP。默认值为
<None>。例如,
# Choice of persistence type for ingress traffic through L7 Loadbalancer. # Accepted values: # 'cookie' # 'source_ip' l7_persistence = cookie # Choice of persistence type for ingress traffic through L4 Loadbalancer. # Accepted values: # 'source_ip' l4_persistence = source_ip
对于 Kubernetes LoadBalancer 服务,如果禁用了全局第 4 层持久性(即 l4_persistence 设置为 <None>),您还可以在服务规范上指定 sessionAffinity 以配置服务持久性行为。如果 l4_persistence 设置为 source_ip,则可以使用服务规范上的 sessionAffinity 自定义服务持久性超时。默认第 4 层持久性超时为 10800 秒,与 Kubernetes 文档 (https://kubernetes.io/docs/concepts/services-networking/service) 中指定的服务超时相同。具有默认持久性超时的所有服务将使用相同的 NSX-T 负载均衡器持久性配置文件。将为每个具有非默认持久性超时的服务创建专用的配置文件。
注: 如果 Ingress 的后端服务的服务类型为 LoadBalancer,则该服务的第 4 层虚拟服务器和 Ingress 的第 7 层虚拟服务器不能具有不同的持久性设置,例如,对于第 4 层,采用
source_ip,而对于第 7 层,采用
cookie。在这种场景下,这两个虚拟服务器的持久性设置必须相同(
source_ip、
cookie 或
None),或者其中一个为
None(另一个的设置可以为
source_ip 或
cookie)。下面列出了这种场景的一个示例:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cafe-ingress
spec:
rules:
- host: cafe.example.com
http:
paths:
- path: /tea
backend:
serviceName: tea-svc
servicePort: 80
-----
apiVersion: v1
kind: Service
metadata:
name: tea-svc <==== same as the Ingress backend above
labels:
app: tea
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
name: tcp
selector:
app: tea
type: LoadBalancer