mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 03:11:40 +00:00
Merge pull request #113742 from princepereira/ppereira-kubeproxy-flags
Add a flag to HNS Load Balancer policy to hint HNS about the VIP being an External IP
This commit is contained in:
commit
0e19bbb916
@ -48,6 +48,8 @@ type hns struct{}
|
|||||||
var (
|
var (
|
||||||
// LoadBalancerFlagsIPv6 enables IPV6.
|
// LoadBalancerFlagsIPv6 enables IPV6.
|
||||||
LoadBalancerFlagsIPv6 hcn.LoadBalancerFlags = 2
|
LoadBalancerFlagsIPv6 hcn.LoadBalancerFlags = 2
|
||||||
|
// LoadBalancerPortMappingFlagsVipExternalIP enables VipExternalIP.
|
||||||
|
LoadBalancerPortMappingFlagsVipExternalIP hcn.LoadBalancerPortMappingFlags = 16
|
||||||
)
|
)
|
||||||
|
|
||||||
func (hns hns) getNetworkByName(name string) (*hnsNetworkInfo, error) {
|
func (hns hns) getNetworkByName(name string) (*hnsNetworkInfo, error) {
|
||||||
@ -305,6 +307,9 @@ func (hns hns) getLoadBalancer(endpoints []endpointsInfo, flags loadBalancerFlag
|
|||||||
if flags.localRoutedVIP {
|
if flags.localRoutedVIP {
|
||||||
lbPortMappingFlags |= hcn.LoadBalancerPortMappingFlagsLocalRoutedVIP
|
lbPortMappingFlags |= hcn.LoadBalancerPortMappingFlagsLocalRoutedVIP
|
||||||
}
|
}
|
||||||
|
if flags.isVipExternalIP {
|
||||||
|
lbPortMappingFlags |= LoadBalancerPortMappingFlagsVipExternalIP
|
||||||
|
}
|
||||||
|
|
||||||
lbFlags := hcn.LoadBalancerFlagsNone
|
lbFlags := hcn.LoadBalancerFlagsNone
|
||||||
if flags.isDSR {
|
if flags.isDSR {
|
||||||
|
@ -107,6 +107,7 @@ type loadBalancerIdentifier struct {
|
|||||||
type loadBalancerFlags struct {
|
type loadBalancerFlags struct {
|
||||||
isILB bool
|
isILB bool
|
||||||
isDSR bool
|
isDSR bool
|
||||||
|
isVipExternalIP bool
|
||||||
localRoutedVIP bool
|
localRoutedVIP bool
|
||||||
useMUX bool
|
useMUX bool
|
||||||
preserveDIP bool
|
preserveDIP bool
|
||||||
@ -1313,7 +1314,7 @@ func (proxier *Proxier) syncProxyRules() {
|
|||||||
if len(nodePortEndpoints) > 0 {
|
if len(nodePortEndpoints) > 0 {
|
||||||
hnsLoadBalancer, err := hns.getLoadBalancer(
|
hnsLoadBalancer, err := hns.getLoadBalancer(
|
||||||
nodePortEndpoints,
|
nodePortEndpoints,
|
||||||
loadBalancerFlags{isDSR: svcInfo.localTrafficDSR, localRoutedVIP: true, sessionAffinity: sessionAffinityClientIP, isIPv6: proxier.isIPv6Mode},
|
loadBalancerFlags{isVipExternalIP: true, isDSR: svcInfo.localTrafficDSR, localRoutedVIP: true, sessionAffinity: sessionAffinityClientIP, isIPv6: proxier.isIPv6Mode},
|
||||||
sourceVip,
|
sourceVip,
|
||||||
"",
|
"",
|
||||||
Enum(svcInfo.Protocol()),
|
Enum(svcInfo.Protocol()),
|
||||||
@ -1345,7 +1346,7 @@ func (proxier *Proxier) syncProxyRules() {
|
|||||||
// Try loading existing policies, if already available
|
// Try loading existing policies, if already available
|
||||||
hnsLoadBalancer, err = hns.getLoadBalancer(
|
hnsLoadBalancer, err = hns.getLoadBalancer(
|
||||||
externalIPEndpoints,
|
externalIPEndpoints,
|
||||||
loadBalancerFlags{isDSR: svcInfo.localTrafficDSR, sessionAffinity: sessionAffinityClientIP, isIPv6: proxier.isIPv6Mode},
|
loadBalancerFlags{isVipExternalIP: true, isDSR: svcInfo.localTrafficDSR, sessionAffinity: sessionAffinityClientIP, isIPv6: proxier.isIPv6Mode},
|
||||||
sourceVip,
|
sourceVip,
|
||||||
externalIP.ip,
|
externalIP.ip,
|
||||||
Enum(svcInfo.Protocol()),
|
Enum(svcInfo.Protocol()),
|
||||||
@ -1374,7 +1375,7 @@ func (proxier *Proxier) syncProxyRules() {
|
|||||||
if len(lbIngressEndpoints) > 0 {
|
if len(lbIngressEndpoints) > 0 {
|
||||||
hnsLoadBalancer, err := hns.getLoadBalancer(
|
hnsLoadBalancer, err := hns.getLoadBalancer(
|
||||||
lbIngressEndpoints,
|
lbIngressEndpoints,
|
||||||
loadBalancerFlags{isDSR: svcInfo.preserveDIP || svcInfo.localTrafficDSR, useMUX: svcInfo.preserveDIP, preserveDIP: svcInfo.preserveDIP, sessionAffinity: sessionAffinityClientIP, isIPv6: proxier.isIPv6Mode},
|
loadBalancerFlags{isVipExternalIP: true, isDSR: svcInfo.preserveDIP || svcInfo.localTrafficDSR, useMUX: svcInfo.preserveDIP, preserveDIP: svcInfo.preserveDIP, sessionAffinity: sessionAffinityClientIP, isIPv6: proxier.isIPv6Mode},
|
||||||
sourceVip,
|
sourceVip,
|
||||||
lbIngressIP.ip,
|
lbIngressIP.ip,
|
||||||
Enum(svcInfo.Protocol()),
|
Enum(svcInfo.Protocol()),
|
||||||
|
Loading…
Reference in New Issue
Block a user