Merge pull request #74341 from paulsubrata55/kube_proxy_sctp_fix
Issue in kube-proxy when IPVS is enabled and SCTP traffic is sent.
This commit is contained in:
commit
29566d0a65
@ -127,8 +127,8 @@ var ipsetInfo = []struct {
|
|||||||
{kubeNodePortLocalSetTCP, utilipset.BitmapPort, kubeNodePortLocalSetTCPComment},
|
{kubeNodePortLocalSetTCP, utilipset.BitmapPort, kubeNodePortLocalSetTCPComment},
|
||||||
{kubeNodePortSetUDP, utilipset.BitmapPort, kubeNodePortSetUDPComment},
|
{kubeNodePortSetUDP, utilipset.BitmapPort, kubeNodePortSetUDPComment},
|
||||||
{kubeNodePortLocalSetUDP, utilipset.BitmapPort, kubeNodePortLocalSetUDPComment},
|
{kubeNodePortLocalSetUDP, utilipset.BitmapPort, kubeNodePortLocalSetUDPComment},
|
||||||
{kubeNodePortSetSCTP, utilipset.BitmapPort, kubeNodePortSetSCTPComment},
|
{kubeNodePortSetSCTP, utilipset.HashIPPort, kubeNodePortSetSCTPComment},
|
||||||
{kubeNodePortLocalSetSCTP, utilipset.BitmapPort, kubeNodePortLocalSetSCTPComment},
|
{kubeNodePortLocalSetSCTP, utilipset.HashIPPort, kubeNodePortLocalSetSCTPComment},
|
||||||
}
|
}
|
||||||
|
|
||||||
// ipsetWithIptablesChain is the ipsets list with iptables source chain and the chain jump to
|
// ipsetWithIptablesChain is the ipsets list with iptables source chain and the chain jump to
|
||||||
@ -153,8 +153,8 @@ var ipsetWithIptablesChain = []struct {
|
|||||||
{kubeNodePortSetTCP, string(KubeNodePortChain), string(KubeMarkMasqChain), "dst", "tcp"},
|
{kubeNodePortSetTCP, string(KubeNodePortChain), string(KubeMarkMasqChain), "dst", "tcp"},
|
||||||
{kubeNodePortLocalSetUDP, string(KubeNodePortChain), "RETURN", "dst", "udp"},
|
{kubeNodePortLocalSetUDP, string(KubeNodePortChain), "RETURN", "dst", "udp"},
|
||||||
{kubeNodePortSetUDP, string(KubeNodePortChain), string(KubeMarkMasqChain), "dst", "udp"},
|
{kubeNodePortSetUDP, string(KubeNodePortChain), string(KubeMarkMasqChain), "dst", "udp"},
|
||||||
{kubeNodePortSetSCTP, string(kubeServicesChain), string(KubeNodePortChain), "dst", "sctp"},
|
{kubeNodePortSetSCTP, string(KubeNodePortChain), string(KubeMarkMasqChain), "dst,dst", "sctp"},
|
||||||
{kubeNodePortLocalSetSCTP, string(KubeNodePortChain), "RETURN", "dst", "sctp"},
|
{kubeNodePortLocalSetSCTP, string(KubeNodePortChain), "RETURN", "dst,dst", "sctp"},
|
||||||
}
|
}
|
||||||
|
|
||||||
// In IPVS proxy mode, the following flags need to be set
|
// In IPVS proxy mode, the following flags need to be set
|
||||||
@ -1096,20 +1096,32 @@ func (proxier *Proxier) syncProxyRules() {
|
|||||||
|
|
||||||
// Nodeports need SNAT, unless they're local.
|
// Nodeports need SNAT, unless they're local.
|
||||||
// ipset call
|
// ipset call
|
||||||
entry = &utilipset.Entry{
|
|
||||||
// No need to provide ip info
|
|
||||||
Port: svcInfo.NodePort,
|
|
||||||
Protocol: protocol,
|
|
||||||
SetType: utilipset.BitmapPort,
|
|
||||||
}
|
|
||||||
var nodePortSet *IPSet
|
var nodePortSet *IPSet
|
||||||
switch protocol {
|
switch protocol {
|
||||||
case "tcp":
|
case "tcp":
|
||||||
nodePortSet = proxier.ipsetList[kubeNodePortSetTCP]
|
nodePortSet = proxier.ipsetList[kubeNodePortSetTCP]
|
||||||
|
entry = &utilipset.Entry{
|
||||||
|
// No need to provide ip info
|
||||||
|
Port: svcInfo.NodePort,
|
||||||
|
Protocol: protocol,
|
||||||
|
SetType: utilipset.BitmapPort,
|
||||||
|
}
|
||||||
case "udp":
|
case "udp":
|
||||||
nodePortSet = proxier.ipsetList[kubeNodePortSetUDP]
|
nodePortSet = proxier.ipsetList[kubeNodePortSetUDP]
|
||||||
|
entry = &utilipset.Entry{
|
||||||
|
// No need to provide ip info
|
||||||
|
Port: svcInfo.NodePort,
|
||||||
|
Protocol: protocol,
|
||||||
|
SetType: utilipset.BitmapPort,
|
||||||
|
}
|
||||||
case "sctp":
|
case "sctp":
|
||||||
nodePortSet = proxier.ipsetList[kubeNodePortSetSCTP]
|
nodePortSet = proxier.ipsetList[kubeNodePortSetSCTP]
|
||||||
|
entry = &utilipset.Entry{
|
||||||
|
IP: proxier.nodeIP.String(),
|
||||||
|
Port: svcInfo.NodePort,
|
||||||
|
Protocol: protocol,
|
||||||
|
SetType: utilipset.HashIPPort,
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
// It should never hit
|
// It should never hit
|
||||||
klog.Errorf("Unsupported protocol type: %s", protocol)
|
klog.Errorf("Unsupported protocol type: %s", protocol)
|
||||||
|
Loading…
Reference in New Issue
Block a user