mirror of https://github.com/k3s-io/k3s
Merge pull request #60978 from danwinship/fix-iptables-restore-wait
Automatic merge from submit-queue (batch tested with PRs 60978, 60985). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Fix use of "-w" flag to iptables-restore iptables accepts "-w5" but iptables-restore requires "-w 5", so kube-proxy is currently broken for people with an iptables-restore new enough that kube-proxy tries to use the new flags. Fixes #58956 **Release note**: ```release-note Fixed kube-proxy to work correctly with iptables 1.6.2 and later. ```pull/6/head
commit
dce8d416d7
|
@ -124,7 +124,7 @@ const MinCheckVersion = "1.4.11"
|
|||
const WaitMinVersion = "1.4.20"
|
||||
const WaitSecondsMinVersion = "1.4.22"
|
||||
const WaitString = "-w"
|
||||
const WaitSecondsString = "-w5"
|
||||
const WaitSecondsValue = "5"
|
||||
|
||||
const LockfilePath16x = "/run/xtables.lock"
|
||||
|
||||
|
@ -558,7 +558,7 @@ func getIPTablesWaitFlag(vstring string) []string {
|
|||
if version.LessThan(minVersion) {
|
||||
return []string{WaitString}
|
||||
} else {
|
||||
return []string{WaitSecondsString}
|
||||
return []string{WaitString, WaitSecondsValue}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -594,7 +594,7 @@ func getIPTablesRestoreWaitFlag(exec utilexec.Interface, protocol Protocol) []st
|
|||
return nil
|
||||
}
|
||||
|
||||
return []string{WaitSecondsString}
|
||||
return []string{WaitString, WaitSecondsValue}
|
||||
}
|
||||
|
||||
// getIPTablesRestoreVersionString runs "iptables-restore --version" to get the version string
|
||||
|
|
|
@ -23,6 +23,7 @@ import (
|
|||
"fmt"
|
||||
"net"
|
||||
"os"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
@ -681,21 +682,21 @@ COMMIT
|
|||
func TestIPTablesWaitFlag(t *testing.T) {
|
||||
testCases := []struct {
|
||||
Version string
|
||||
Result string
|
||||
Result []string
|
||||
}{
|
||||
{"0.55.55", ""},
|
||||
{"1.0.55", ""},
|
||||
{"1.4.19", ""},
|
||||
{"1.4.20", WaitString},
|
||||
{"1.4.21", WaitString},
|
||||
{"1.4.22", WaitSecondsString},
|
||||
{"1.5.0", WaitSecondsString},
|
||||
{"2.0.0", WaitSecondsString},
|
||||
{"0.55.55", nil},
|
||||
{"1.0.55", nil},
|
||||
{"1.4.19", nil},
|
||||
{"1.4.20", []string{WaitString}},
|
||||
{"1.4.21", []string{WaitString}},
|
||||
{"1.4.22", []string{WaitString, WaitSecondsValue}},
|
||||
{"1.5.0", []string{WaitString, WaitSecondsValue}},
|
||||
{"2.0.0", []string{WaitString, WaitSecondsValue}},
|
||||
}
|
||||
|
||||
for _, testCase := range testCases {
|
||||
result := getIPTablesWaitFlag(testCase.Version)
|
||||
if strings.Join(result, "") != testCase.Result {
|
||||
if !reflect.DeepEqual(result, testCase.Result) {
|
||||
t.Errorf("For %s expected %v got %v", testCase.Version, testCase.Result, result)
|
||||
}
|
||||
}
|
||||
|
@ -730,7 +731,7 @@ func TestWaitFlagUnavailable(t *testing.T) {
|
|||
if fcmd.CombinedOutputCalls != 3 {
|
||||
t.Errorf("expected 3 CombinedOutput() calls, got %d", fcmd.CombinedOutputCalls)
|
||||
}
|
||||
if sets.NewString(fcmd.CombinedOutputLog[2]...).HasAny(WaitString, WaitSecondsString) {
|
||||
if sets.NewString(fcmd.CombinedOutputLog[2]...).Has(WaitString) {
|
||||
t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[2])
|
||||
}
|
||||
}
|
||||
|
@ -765,7 +766,7 @@ func TestWaitFlagOld(t *testing.T) {
|
|||
if !sets.NewString(fcmd.CombinedOutputLog[2]...).HasAll("iptables", WaitString) {
|
||||
t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[2])
|
||||
}
|
||||
if sets.NewString(fcmd.CombinedOutputLog[2]...).HasAny(WaitSecondsString) {
|
||||
if sets.NewString(fcmd.CombinedOutputLog[2]...).Has(WaitSecondsValue) {
|
||||
t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[2])
|
||||
}
|
||||
}
|
||||
|
@ -797,10 +798,7 @@ func TestWaitFlagNew(t *testing.T) {
|
|||
if fcmd.CombinedOutputCalls != 3 {
|
||||
t.Errorf("expected 3 CombinedOutput() calls, got %d", fcmd.CombinedOutputCalls)
|
||||
}
|
||||
if !sets.NewString(fcmd.CombinedOutputLog[2]...).HasAll("iptables", WaitSecondsString) {
|
||||
t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[2])
|
||||
}
|
||||
if sets.NewString(fcmd.CombinedOutputLog[2]...).HasAny(WaitString) {
|
||||
if !sets.NewString(fcmd.CombinedOutputLog[2]...).HasAll("iptables", WaitString, WaitSecondsValue) {
|
||||
t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[2])
|
||||
}
|
||||
}
|
||||
|
@ -1165,7 +1163,7 @@ func TestRestoreAllWait(t *testing.T) {
|
|||
}
|
||||
|
||||
commandSet := sets.NewString(fcmd.CombinedOutputLog[2]...)
|
||||
if !commandSet.HasAll("iptables-restore", WaitSecondsString, "--counters", "--noflush") {
|
||||
if !commandSet.HasAll("iptables-restore", WaitString, WaitSecondsValue, "--counters", "--noflush") {
|
||||
t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[2])
|
||||
}
|
||||
|
||||
|
@ -1214,8 +1212,8 @@ func TestRestoreAllWaitOldIptablesRestore(t *testing.T) {
|
|||
if !commandSet.HasAll("iptables-restore", "--counters", "--noflush") {
|
||||
t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[2])
|
||||
}
|
||||
if commandSet.HasAny(WaitSecondsString) {
|
||||
t.Errorf("wrong CombinedOutput() log (unexpected %s option), got %s", WaitSecondsString, fcmd.CombinedOutputLog[2])
|
||||
if commandSet.HasAll(WaitString, WaitSecondsValue) {
|
||||
t.Errorf("wrong CombinedOutput() log (unexpected %s option), got %s", WaitString, fcmd.CombinedOutputLog[2])
|
||||
}
|
||||
|
||||
if fcmd.CombinedOutputCalls != 3 {
|
||||
|
|
Loading…
Reference in New Issue