Skip to content

Commit

Permalink
Fixed target port for multus specific services
Browse files Browse the repository at this point in the history
  • Loading branch information
TrekkieCoder committed May 17, 2023
1 parent 22bbb95 commit 854290f
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 22 deletions.
12 changes: 6 additions & 6 deletions manifest/multus/macvlan.yml
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: macvlan-conf-1
name: macvlan1
spec:
config: '{
"cniVersion": "0.3.1",
"type": "macvlan",
"master": "ens1f1",
"master": "enp0s3",
"mode": "bridge",
"ipam": {
"type": "host-local",
"ranges": [
[ {
"subnet": "192.168.20.0/24",
"rangeStart": "192.168.20.198",
"rangeEnd": "192.168.20.200",
"gateway": "192.168.20.1"
"subnet": "172.30.1.0/24",
"rangeStart": "172.30.1.198",
"rangeEnd": "172.30.1.200",
"gateway": "172.30.1.254"
} ]
]
}
Expand Down
2 changes: 1 addition & 1 deletion manifest/multus/multus-pod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ metadata:
labels:
app: pod-01
annotations:
k8s.v1.cni.cncf.io/networks: macvlan-conf-1
k8s.v1.cni.cncf.io/networks: macvlan1
spec:
containers:
- name: iperf
Expand Down
2 changes: 1 addition & 1 deletion manifest/multus/multus-service.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ kind: Service
metadata:
name: multus-service
annotations:
loxilb.io/multus-nets : mac-vlan1,mac-vlan2
loxilb.io/multus-nets : macvlan1,macvlan2
spec:
externalTrafficPolicy: Local
loadBalancerClass: loxilb.io/loxilb
Expand Down
35 changes: 21 additions & 14 deletions pkg/agent/manager/loadbalancer/loadbalancer.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,13 @@ import (
)

const (
mgrName = "LoxilbLoadBalancerManager"
resyncPeriod = 60 * time.Second
minRetryDelay = 2 * time.Second
maxRetryDelay = 120 * time.Second
defaultWorkers = 4
LoxiMaxWeight = 10
mgrName = "LoxilbLoadBalancerManager"
resyncPeriod = 60 * time.Second
minRetryDelay = 2 * time.Second
maxRetryDelay = 120 * time.Second
defaultWorkers = 4
LoxiMaxWeight = 10
LoxiMultusServiceAnnotation = "loxilb.io/multus-nets"
)

type Manager struct {
Expand Down Expand Up @@ -237,7 +238,9 @@ func (m *Manager) addLoadBalancer(svc *corev1.Service) error {
return nil
}

endpointIPs, err := m.getEndpoints(svc)
// Check for loxilb specific annotation
_, needPodEP := svc.Annotations[LoxiMultusServiceAnnotation]
endpointIPs, err := m.getEndpoints(svc, needPodEP)
if err != nil {
return err
}
Expand Down Expand Up @@ -313,7 +316,7 @@ func (m *Manager) addLoadBalancer(svc *corev1.Service) error {
var errChList []chan error
var lbModelList []api.LoadBalancerModel
for _, port := range svc.Spec.Ports {
lbModel := m.makeLoxiLoadBalancerModel(ingSvcPair.IPString, port, endpointIPs)
lbModel := m.makeLoxiLoadBalancerModel(ingSvcPair.IPString, port, endpointIPs, needPodEP)
lbModelList = append(lbModelList, lbModel)
}

Expand Down Expand Up @@ -409,9 +412,8 @@ func (m *Manager) deleteLoadBalancer(ns, name string) error {
return nil
}

func (m *Manager) getEndpoints(svc *corev1.Service) ([]string, error) {
_, ok := svc.Annotations["loxilb.io/multus-nets"]
if ok {
func (m *Manager) getEndpoints(svc *corev1.Service, podEP bool) ([]string, error) {
if podEP {
return m.getMultusEndpoints(svc)
}

Expand All @@ -437,7 +439,7 @@ func (m *Manager) getNodeEndpoints() ([]string, error) {
func (m *Manager) getMultusEndpoints(svc *corev1.Service) ([]string, error) {
var epList []string

netListStr, ok := svc.Annotations["loxilb.io/multus-nets"]
netListStr, ok := svc.Annotations[LoxiMultusServiceAnnotation]
if !ok {
return nil, errors.New("not found multus annotations")
}
Expand Down Expand Up @@ -596,7 +598,7 @@ func (m *Manager) getLoadBalancerServiceIngressIPs(service *corev1.Service) []st
return ips
}

func (m *Manager) makeLoxiLoadBalancerModel(externalIP string, port corev1.ServicePort, endpointIPs []string) api.LoadBalancerModel {
func (m *Manager) makeLoxiLoadBalancerModel(externalIP string, port corev1.ServicePort, endpointIPs []string, needPodEP bool) api.LoadBalancerModel {
loxiEndpointModelList := []api.LoadBalancerEndpoint{}

if len(endpointIPs) > 0 {
Expand All @@ -610,9 +612,14 @@ func (m *Manager) makeLoxiLoadBalancerModel(externalIP string, port corev1.Servi
remainderWeight--
}

tport := uint16(port.NodePort)
if needPodEP {
tport = uint16(port.TargetPort.IntVal)
}

loxiEndpointModelList = append(loxiEndpointModelList, api.LoadBalancerEndpoint{
EndpointIP: endpoint,
TargetPort: uint16(port.NodePort),
TargetPort: tport,
Weight: weight,
})
}
Expand Down

0 comments on commit 854290f

Please sign in to comment.