Fix health check from Google's Load Balancer

This change adds 2 options for windows:
--forward-healthcheck-vip: If true forward service VIP for health check
port
--root-hnsendpoint-name: The name of the hns endpoint name for root
namespace attached to l2bridge, default is cbr0

When --forward-healthcheck-vip is set as true and winkernel is used,
kube-proxy will add an hns load balancer to forward health check request
that was sent to lb_vip:healthcheck_port to the node_ip:healthcheck_port.
Without this forwarding, the health check from google load balancer will
fail, and it will stop forwarding traffic to the windows node.

This change fixes the following 2 cases for service:
- `externalTrafficPolicy: Cluster` (default option): healthcheck_port is
10256 for all services. Without this fix, all traffic won't be directly
forwarded to windows node. It will always go through a linux node and
get forwarded to windows from there.
- `externalTrafficPolicy: Local`: different healthcheck_port for each
service that is configured as local. Without this fix, this feature
won't work on windows node at all. This feature preserves client ip
that tries to connect to their application running in windows pod.

Change-Id: If4513e72900101ef70d86b91155e56a1f8c79719
This commit is contained in:
Yongkun Gui
2021-03-29 23:27:39 +00:00
parent 45f2c63d6a
commit 78a507b256
14 changed files with 183 additions and 32 deletions

View File

@@ -49802,8 +49802,24 @@ func schema_k8sio_kube_proxy_config_v1alpha1_KubeProxyWinkernelConfiguration(ref
Format: "",
},
},
"rootHnsEndpointName": {
SchemaProps: spec.SchemaProps{
Description: "RootHnsEndpointName is the name of hnsendpoint that is attached to l2bridge for root network namespace",
Default: "",
Type: []string{"string"},
Format: "",
},
},
"forwardHealthCheckVip": {
SchemaProps: spec.SchemaProps{
Description: "ForwardHealthCheckVip forwards service VIP for health check port on Windows",
Default: false,
Type: []string{"boolean"},
Format: "",
},
},
},
Required: []string{"networkName", "sourceVip", "enableDSR"},
Required: []string{"networkName", "sourceVip", "enableDSR", "rootHnsEndpointName", "forwardHealthCheckVip"},
},
},
}