Code change:
}, }, }, <ins> { name: "node port service with protocol sctp on a node with multiple nodeIPs", services: []*v1.Service{ makeTestService("ns1", "svc1", func(svc *v1.Service) { svc.Spec.Type = "NodePort" svc.Spec.ClusterIP = "10.20.30.41" svc.Spec.Ports = []v1.ServicePort{{ Name:     "p80", Port:     int32(80), Protocol: v1.ProtocolSCTP, NodePort: int32(3001), }} }), }, endpoints: []*v1.Endpoints{ makeTestEndpoints("ns1", "svc1", func(ept *v1.Endpoints) { ept.Subsets = []v1.EndpointSubset{{ Addresses: []v1.EndpointAddress{{ IP: "10.180.0.1", }}, Ports: []v1.EndpointPort{{ Name: "p80", Port: int32(80), }}, }} }), }, nodeIPs: []net.IP{ net.ParseIP("100.101.102.103"), net.ParseIP("100.101.102.104"), net.ParseIP("100.101.102.105"), net.ParseIP("2001:db8::1:1"), net.ParseIP("2001:db8::1:2"), net.ParseIP("2001:db8::1:3"), }, nodePortAddresses: []string{}, expectedIPVS: &ipvstest.FakeIPVS{ Services: map[ipvstest.ServiceKey]*utilipvs.VirtualServer{ { IP:       "10.20.30.41", Port:     80, Protocol: "SCTP", }: { Address:   net.ParseIP("10.20.30.41"), Protocol:  "SCTP", Port:      uint16(80), Scheduler: "rr", }, { IP:       "100.101.102.103", Port:     3001, Protocol: "SCTP", }: { Address:   net.ParseIP("100.101.102.103"), Protocol:  "SCTP", Port:      uint16(3001), Scheduler: "rr", }, { IP:       "100.101.102.104", Port:     3001, Protocol: "SCTP", }: { Address:   net.ParseIP("100.101.102.104"), Protocol:  "SCTP", Port:      uint16(3001), Scheduler: "rr", }, { IP:       "100.101.102.105", Port:     3001, Protocol: "SCTP", }: { Address:   net.ParseIP("100.101.102.105"), Protocol:  "SCTP", Port:      uint16(3001), Scheduler: "rr", }, { IP:       "2001:db8::1:1", Port:     3001, Protocol: "SCTP", }: { Address:   net.ParseIP("2001:db8::1:1"), Protocol:  "SCTP", Port:      uint16(3001), Scheduler: "rr", }, { IP:       "2001:db8::1:2", Port:     3001, Protocol: "SCTP", }: { Address:   net.ParseIP("2001:db8::1:2"), Protocol:  "SCTP", Port:      uint16(3001), Scheduler: "rr", }, { IP:       "2001:db8::1:3", Port:     3001, Protocol: "SCTP", }: { Address:   net.ParseIP("2001:db8::1:3"), Protocol:  "SCTP", Port:      uint16(3001), Scheduler: "rr", }, }, Destinations: map[ipvstest.ServiceKey][]*utilipvs.RealServer{ { IP:       "10.20.30.41", Port:     80, Protocol: "SCTP", }: { { Address: net.ParseIP("10.180.0.1"), Port:    uint16(80), Weight:  1, }, }, { IP:       "100.101.102.103", Port:     3001, Protocol: "SCTP", }: { { Address: net.ParseIP("10.180.0.1"), Port:    uint16(80), Weight:  1, }, }, { IP:       "100.101.102.104", Port:     3001, Protocol: "SCTP", }: { { Address: net.ParseIP("10.180.0.1"), Port:    uint16(80), Weight:  1, }, }, { IP:       "100.101.102.105", Port:     3001, Protocol: "SCTP", }: { { Address: net.ParseIP("10.180.0.1"), Port:    uint16(80), Weight:  1, }, }, { IP:       "2001:db8::1:1", Port:     3001, Protocol: "SCTP", }: { { Address: net.ParseIP("10.180.0.1"), Port:    uint16(80), Weight:  1, }, }, { IP:       "2001:db8::1:2", Port:     3001, Protocol: "SCTP", }: { { Address: net.ParseIP("10.180.0.1"), Port:    uint16(80), Weight:  1, }, }, { IP:       "2001:db8::1:3", Port:     3001, Protocol: "SCTP", }: { { Address: net.ParseIP("10.180.0.1"), Port:    uint16(80), Weight:  1, }, }, }, }, expectedIPSets: netlinktest.ExpectedIPSet{ kubeNodePortSetSCTP: { { IP:       "100.101.102.103", Port:     3001, Protocol: strings.ToLower(string(v1.ProtocolSCTP)), SetType:  utilipset.HashIPPort, }, { IP:       "100.101.102.104", Port:     3001, Protocol: strings.ToLower(string(v1.ProtocolSCTP)), SetType:  utilipset.HashIPPort, }, { IP:       "100.101.102.105", Port:     3001, Protocol: strings.ToLower(string(v1.ProtocolSCTP)), SetType:  utilipset.HashIPPort, }, { IP:       "2001:db8::1:1", Port:     3001, Protocol: strings.ToLower(string(v1.ProtocolSCTP)), SetType:  utilipset.HashIPPort, }, { IP:       "2001:db8::1:2", Port:     3001, Protocol: strings.ToLower(string(v1.ProtocolSCTP)), SetType:  utilipset.HashIPPort, }, { IP:       "2001:db8::1:3", Port:     3001, Protocol: strings.ToLower(string(v1.ProtocolSCTP)), SetType:  utilipset.HashIPPort, }, }, }, }, </ins> } for _, test := range tests {

Related discussion:
text: What happened: SCTP nodeport service is not working for all IPs present in the node when ipvs is enabled. It is working only for node's InternalIP. What you expected to happen: SCTP nodeport service must work for all ips present in the node when ipvs is enabled. How to reproduce it (as minimally and precisely as possible): Create a kubernetes cluster with at least one node having multiple interfaces with different IPs. Start an SCTP server deployment. Then create a nodeport service for the same. Now try to reach the service using all the IPs present in that node. The service will be accessible only via node's InternalIP not any other IPs. Environment: Kubernetes version: v1.15.2 OS: ubuntu 18.04 Kernel: 4.15.0-54-generic Network plugin and version (if this is a network-related bug): ipset version v6.34
/sig network /area kube-proxy /area ipvs
/triage unresolved Comment when the issue is assessed and confirmed. I am a bot run by vllry. ‍
/remove-triage unresolved