可以在 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
对于第 7 层持久性,您还可以指定 Cookie 名称。
# Specify a custom cookie name for NSX default LB when l7_persistence type # is set to cookie. It has no effect if l7_persistence is not set. #cookie_name = <None>
对于 Kubernetes LoadBalancer 服务,如果禁用了全局第 4 层持久性(即 l4_persistence 设置为 <None>),您还可以在服务规范上指定 sessionAffinity 以配置服务持久性行为。如果 l4_persistence 设置为 source_ip,则可以使用服务规范上的 sessionAffinity 自定义服务持久性超时。默认第 4 层持久性超时为 10800 秒,与 Kubernetes 文档 (https://kubernetes.io/docs/concepts/services-networking/service) 中指定的服务超时相同。具有默认持久性超时的所有服务将使用相同的 NSX 负载均衡器持久性配置文件。将为每个具有非默认持久性超时的服务创建专用的配置文件。
注: 如果 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