mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 14:37:00 +00:00
kubeadm: fix ut failures of dualstack GA
This commit is contained in:
parent
a0cc3f1c9a
commit
1385bd3a06
@ -223,41 +223,31 @@ func TestValidateIPNetFromString(t *testing.T) {
|
|||||||
|
|
||||||
func TestValidatePodSubnetNodeMask(t *testing.T) {
|
func TestValidatePodSubnetNodeMask(t *testing.T) {
|
||||||
var tests = []struct {
|
var tests = []struct {
|
||||||
name string
|
name string
|
||||||
subnet string
|
subnet string
|
||||||
cmExtraArgs map[string]string
|
cmExtraArgs map[string]string
|
||||||
checkDualStack bool
|
expected bool
|
||||||
expected bool
|
|
||||||
}{
|
}{
|
||||||
{"single IPv4, but mask too small. Default node-mask", "10.0.0.16/29", nil, false, false},
|
|
||||||
{"single IPv4, but mask too small. Configured node-mask", "10.0.0.16/24", map[string]string{"node-cidr-mask-size": "23"}, false, false},
|
|
||||||
{"single IPv6, but mask too small. Default node-mask", "2001:db8::1/112", nil, false, false},
|
|
||||||
{"single IPv6, but mask too small. Configured node-mask", "2001:db8::1/64", map[string]string{"node-cidr-mask-size": "24"}, false, false},
|
|
||||||
{"single IPv6, but mask difference greater than 16. Default node-mask", "2001:db8::1/12", nil, false, false},
|
|
||||||
{"single IPv6, but mask difference greater than 16. Configured node-mask", "2001:db8::1/64", map[string]string{"node-cidr-mask-size": "120"}, false, false},
|
|
||||||
{"single IPv4 CIDR", "10.0.0.16/12", nil, false, true},
|
|
||||||
{"single IPv6 CIDR", "2001:db8::/48", nil, false, true},
|
|
||||||
// dual-stack:
|
// dual-stack:
|
||||||
{"dual IPv4 only, but mask too small. Default node-mask", "10.0.0.16/29", nil, true, false},
|
{"dual IPv4 only, but mask too small. Default node-mask", "10.0.0.16/29", nil, false},
|
||||||
{"dual IPv4 only, but mask too small. Configured node-mask", "10.0.0.16/24", map[string]string{"node-cidr-mask-size-ipv4": "23"}, true, false},
|
{"dual IPv4 only, but mask too small. Configured node-mask", "10.0.0.16/24", map[string]string{"node-cidr-mask-size-ipv4": "23"}, false},
|
||||||
{"dual IPv6 only, but mask too small. Default node-mask", "2001:db8::1/112", nil, true, false},
|
{"dual IPv6 only, but mask too small. Default node-mask", "2001:db8::1/112", nil, false},
|
||||||
{"dual IPv6 only, but mask too small. Configured node-mask", "2001:db8::1/64", map[string]string{"node-cidr-mask-size-ipv6": "24"}, true, false},
|
{"dual IPv6 only, but mask too small. Configured node-mask", "2001:db8::1/64", map[string]string{"node-cidr-mask-size-ipv6": "24"}, false},
|
||||||
{"dual IPv6 only, but mask difference greater than 16. Default node-mask", "2001:db8::1/12", nil, true, false},
|
{"dual IPv6 only, but mask difference greater than 16. Default node-mask", "2001:db8::1/12", nil, false},
|
||||||
{"dual IPv6 only, but mask difference greater than 16. Configured node-mask", "2001:db8::1/64", map[string]string{"node-cidr-mask-size-ipv6": "120"}, true, false},
|
{"dual IPv6 only, but mask difference greater than 16. Configured node-mask", "2001:db8::1/64", map[string]string{"node-cidr-mask-size-ipv6": "120"}, false},
|
||||||
{"dual IPv4 only CIDR", "10.0.0.16/12", nil, true, true},
|
{"dual IPv4 only CIDR", "10.0.0.16/12", nil, true},
|
||||||
{"dual IPv6 only CIDR", "2001:db8::/48", nil, true, true},
|
{"dual IPv6 only CIDR", "2001:db8::/48", nil, true},
|
||||||
{"dual, but IPv4 mask too small. Default node-mask", "10.0.0.16/29,2001:db8::/48", nil, true, false},
|
{"dual, but IPv4 mask too small. Default node-mask", "10.0.0.16/29,2001:db8::/48", nil, false},
|
||||||
{"dual, but IPv4 mask too small. Configured node-mask", "10.0.0.16/24,2001:db8::/48", map[string]string{"node-cidr-mask-size-ipv4": "23"}, true, false},
|
{"dual, but IPv4 mask too small. Configured node-mask", "10.0.0.16/24,2001:db8::/48", map[string]string{"node-cidr-mask-size-ipv4": "23"}, false},
|
||||||
{"dual, but IPv6 mask too small. Default node-mask", "2001:db8::1/112,10.0.0.16/16", nil, true, false},
|
{"dual, but IPv6 mask too small. Default node-mask", "2001:db8::1/112,10.0.0.16/16", nil, false},
|
||||||
{"dual, but IPv6 mask too small. Configured node-mask", "10.0.0.16/16,2001:db8::1/64", map[string]string{"node-cidr-mask-size-ipv6": "24"}, true, false},
|
{"dual, but IPv6 mask too small. Configured node-mask", "10.0.0.16/16,2001:db8::1/64", map[string]string{"node-cidr-mask-size-ipv6": "24"}, false},
|
||||||
{"dual, but mask difference greater than 16. Default node-mask", "2001:db8::1/12,10.0.0.16/16", nil, true, false},
|
{"dual, but mask difference greater than 16. Default node-mask", "2001:db8::1/12,10.0.0.16/16", nil, false},
|
||||||
{"dual, but mask difference greater than 16. Configured node-mask", "10.0.0.16/16,2001:db8::1/64", map[string]string{"node-cidr-mask-size-ipv6": "120"}, true, false},
|
{"dual, but mask difference greater than 16. Configured node-mask", "10.0.0.16/16,2001:db8::1/64", map[string]string{"node-cidr-mask-size-ipv6": "120"}, false},
|
||||||
{"dual IPv4 IPv6", "2001:db8::/48,10.0.0.16/12", nil, true, true},
|
{"dual IPv4 IPv6", "2001:db8::/48,10.0.0.16/12", nil, true},
|
||||||
{"dual IPv6 IPv4", "2001:db8::/48,10.0.0.16/12", nil, true, true},
|
{"dual IPv6 IPv4", "2001:db8::/48,10.0.0.16/12", nil, true},
|
||||||
}
|
}
|
||||||
for _, rt := range tests {
|
for _, rt := range tests {
|
||||||
cfg := &kubeadmapi.ClusterConfiguration{
|
cfg := &kubeadmapi.ClusterConfiguration{
|
||||||
FeatureGates: map[string]bool{features.IPv6DualStack: rt.checkDualStack},
|
|
||||||
ControllerManager: kubeadmapi.ControlPlaneComponent{
|
ControllerManager: kubeadmapi.ControlPlaneComponent{
|
||||||
ExtraArgs: rt.cmExtraArgs,
|
ExtraArgs: rt.cmExtraArgs,
|
||||||
},
|
},
|
||||||
|
@ -34,7 +34,6 @@ import (
|
|||||||
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
||||||
kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3"
|
kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/features"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func testKubeletConfigMap(contents string) *v1.ConfigMap {
|
func testKubeletConfigMap(contents string) *v1.ConfigMap {
|
||||||
@ -128,18 +127,14 @@ func TestKubeletDefault(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "Service subnet, enabled dual stack defaulting works",
|
name: "Service subnet, enabled dual stack defaulting works",
|
||||||
clusterCfg: kubeadmapi.ClusterConfiguration{
|
clusterCfg: kubeadmapi.ClusterConfiguration{
|
||||||
FeatureGates: map[string]bool{
|
FeatureGates: map[string]bool{},
|
||||||
features.IPv6DualStack: true,
|
|
||||||
},
|
|
||||||
Networking: kubeadmapi.Networking{
|
Networking: kubeadmapi.Networking{
|
||||||
ServiceSubnet: "192.168.0.0/16",
|
ServiceSubnet: "192.168.0.0/16",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expected: kubeletConfig{
|
expected: kubeletConfig{
|
||||||
config: kubeletconfig.KubeletConfiguration{
|
config: kubeletconfig.KubeletConfiguration{
|
||||||
FeatureGates: map[string]bool{
|
FeatureGates: map[string]bool{},
|
||||||
features.IPv6DualStack: true,
|
|
||||||
},
|
|
||||||
StaticPodPath: kubeadmapiv1.DefaultManifestsDir,
|
StaticPodPath: kubeadmapiv1.DefaultManifestsDir,
|
||||||
ClusterDNS: []string{"192.168.0.10"},
|
ClusterDNS: []string{"192.168.0.10"},
|
||||||
Authentication: kubeletconfig.KubeletAuthentication{
|
Authentication: kubeletconfig.KubeletAuthentication{
|
||||||
|
@ -33,7 +33,6 @@ import (
|
|||||||
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
||||||
kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3"
|
kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/features"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func testKubeProxyConfigMap(contents string) *v1.ConfigMap {
|
func testKubeProxyConfigMap(contents string) *v1.ConfigMap {
|
||||||
@ -104,26 +103,6 @@ func TestKubeProxyDefault(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: "IPv6DualStack feature gate set to true",
|
|
||||||
clusterCfg: kubeadmapi.ClusterConfiguration{
|
|
||||||
FeatureGates: map[string]bool{
|
|
||||||
features.IPv6DualStack: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
endpoint: kubeadmapi.APIEndpoint{},
|
|
||||||
expected: kubeProxyConfig{
|
|
||||||
config: kubeproxyconfig.KubeProxyConfiguration{
|
|
||||||
FeatureGates: map[string]bool{
|
|
||||||
features.IPv6DualStack: true,
|
|
||||||
},
|
|
||||||
BindAddress: kubeadmapiv1.DefaultProxyBindAddressv6,
|
|
||||||
ClientConnection: componentbaseconfig.ClientConnectionConfiguration{
|
|
||||||
Kubeconfig: kubeproxyKubeConfigFileName,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
|
@ -182,35 +182,30 @@ func TestGetKubernetesServiceCIDR(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
svcSubnetList: "192.168.10.0/24",
|
svcSubnetList: "192.168.10.0/24",
|
||||||
isDualStack: false,
|
|
||||||
expected: "192.168.10.0/24",
|
expected: "192.168.10.0/24",
|
||||||
expectedError: false,
|
expectedError: false,
|
||||||
name: "valid: valid IPv4 range from single-stack",
|
name: "valid: valid IPv4 range from single-stack",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
svcSubnetList: "fd03::/112",
|
svcSubnetList: "fd03::/112",
|
||||||
isDualStack: false,
|
|
||||||
expected: "fd03::/112",
|
expected: "fd03::/112",
|
||||||
expectedError: false,
|
expectedError: false,
|
||||||
name: "valid: valid IPv6 range from single-stack",
|
name: "valid: valid IPv6 range from single-stack",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
svcSubnetList: "192.168.10.0/24,fd03::/112",
|
svcSubnetList: "192.168.10.0/24,fd03::/112",
|
||||||
isDualStack: true,
|
|
||||||
expected: "192.168.10.0/24",
|
expected: "192.168.10.0/24",
|
||||||
expectedError: false,
|
expectedError: false,
|
||||||
name: "valid: valid <IPv4,IPv6> ranges from dual-stack",
|
name: "valid: valid <IPv4,IPv6> ranges from dual-stack",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
svcSubnetList: "fd03::/112,192.168.10.0/24",
|
svcSubnetList: "fd03::/112,192.168.10.0/24",
|
||||||
isDualStack: true,
|
|
||||||
expected: "fd03::/112",
|
expected: "fd03::/112",
|
||||||
expectedError: false,
|
expectedError: false,
|
||||||
name: "valid: valid <IPv6,IPv4> ranges from dual-stack",
|
name: "valid: valid <IPv6,IPv4> ranges from dual-stack",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
svcSubnetList: "192.168.10.0/24,fd03:x::/112",
|
svcSubnetList: "192.168.10.0/24,fd03:x::/112",
|
||||||
isDualStack: true,
|
|
||||||
expected: "",
|
expected: "",
|
||||||
expectedError: true,
|
expectedError: true,
|
||||||
name: "invalid: failed to parse subnet range for dual-stack",
|
name: "invalid: failed to parse subnet range for dual-stack",
|
||||||
@ -219,7 +214,7 @@ func TestGetKubernetesServiceCIDR(t *testing.T) {
|
|||||||
|
|
||||||
for _, rt := range tests {
|
for _, rt := range tests {
|
||||||
t.Run(rt.name, func(t *testing.T) {
|
t.Run(rt.name, func(t *testing.T) {
|
||||||
actual, actualError := GetKubernetesServiceCIDR(rt.svcSubnetList, rt.isDualStack)
|
actual, actualError := GetKubernetesServiceCIDR(rt.svcSubnetList)
|
||||||
if rt.expectedError {
|
if rt.expectedError {
|
||||||
if actualError == nil {
|
if actualError == nil {
|
||||||
t.Errorf("failed GetKubernetesServiceCIDR:\n\texpected error, but got no error")
|
t.Errorf("failed GetKubernetesServiceCIDR:\n\texpected error, but got no error")
|
||||||
|
@ -80,30 +80,26 @@ func TestGetDNSIP(t *testing.T) {
|
|||||||
name: "subnet mask 12",
|
name: "subnet mask 12",
|
||||||
svcSubnet: "10.96.0.0/12",
|
svcSubnet: "10.96.0.0/12",
|
||||||
expectedDNSIP: "10.96.0.10",
|
expectedDNSIP: "10.96.0.10",
|
||||||
isDualStack: false,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "subnet mask 26",
|
name: "subnet mask 26",
|
||||||
svcSubnet: "10.87.116.64/26",
|
svcSubnet: "10.87.116.64/26",
|
||||||
expectedDNSIP: "10.87.116.74",
|
expectedDNSIP: "10.87.116.74",
|
||||||
isDualStack: false,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "dual-stack ipv4 primary, subnet mask 26",
|
name: "dual-stack ipv4 primary, subnet mask 26",
|
||||||
svcSubnet: "10.87.116.64/26,fd03::/112",
|
svcSubnet: "10.87.116.64/26,fd03::/112",
|
||||||
expectedDNSIP: "10.87.116.74",
|
expectedDNSIP: "10.87.116.74",
|
||||||
isDualStack: true,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "dual-stack ipv6 primary, subnet mask 112",
|
name: "dual-stack ipv6 primary, subnet mask 112",
|
||||||
svcSubnet: "fd03::/112,10.87.116.64/26",
|
svcSubnet: "fd03::/112,10.87.116.64/26",
|
||||||
expectedDNSIP: "fd03::a",
|
expectedDNSIP: "fd03::a",
|
||||||
isDualStack: true,
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, rt := range tests {
|
for _, rt := range tests {
|
||||||
t.Run(rt.name, func(t *testing.T) {
|
t.Run(rt.name, func(t *testing.T) {
|
||||||
dnsIP, err := kubeadmconstants.GetDNSIP(rt.svcSubnet, rt.isDualStack)
|
dnsIP, err := kubeadmconstants.GetDNSIP(rt.svcSubnet)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("couldn't get dnsIP : %v", err)
|
t.Fatalf("couldn't get dnsIP : %v", err)
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,6 @@ import (
|
|||||||
|
|
||||||
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
||||||
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/features"
|
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/phases/certs"
|
"k8s.io/kubernetes/cmd/kubeadm/app/phases/certs"
|
||||||
pkiutiltesting "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil/testing"
|
pkiutiltesting "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil/testing"
|
||||||
staticpodutil "k8s.io/kubernetes/cmd/kubeadm/app/util/staticpod"
|
staticpodutil "k8s.io/kubernetes/cmd/kubeadm/app/util/staticpod"
|
||||||
@ -599,7 +598,6 @@ func TestGetControllerManagerCommand(t *testing.T) {
|
|||||||
},
|
},
|
||||||
CertificatesDir: testCertsDir,
|
CertificatesDir: testCertsDir,
|
||||||
KubernetesVersion: cpVersion,
|
KubernetesVersion: cpVersion,
|
||||||
FeatureGates: map[string]bool{features.IPv6DualStack: true},
|
|
||||||
},
|
},
|
||||||
expected: []string{
|
expected: []string{
|
||||||
"kube-controller-manager",
|
"kube-controller-manager",
|
||||||
@ -616,7 +614,6 @@ func TestGetControllerManagerCommand(t *testing.T) {
|
|||||||
"--authorization-kubeconfig=" + kubeadmconstants.KubernetesDir + "/controller-manager.conf",
|
"--authorization-kubeconfig=" + kubeadmconstants.KubernetesDir + "/controller-manager.conf",
|
||||||
"--client-ca-file=" + testCertsDir + "/ca.crt",
|
"--client-ca-file=" + testCertsDir + "/ca.crt",
|
||||||
"--requestheader-client-ca-file=" + testCertsDir + "/front-proxy-ca.crt",
|
"--requestheader-client-ca-file=" + testCertsDir + "/front-proxy-ca.crt",
|
||||||
"--feature-gates=IPv6DualStack=true",
|
|
||||||
"--allocate-node-cidrs=true",
|
"--allocate-node-cidrs=true",
|
||||||
"--cluster-cidr=10.0.1.15/16",
|
"--cluster-cidr=10.0.1.15/16",
|
||||||
"--service-cluster-ip-range=172.20.0.0/24",
|
"--service-cluster-ip-range=172.20.0.0/24",
|
||||||
@ -728,7 +725,6 @@ func TestGetControllerManagerCommand(t *testing.T) {
|
|||||||
},
|
},
|
||||||
CertificatesDir: testCertsDir,
|
CertificatesDir: testCertsDir,
|
||||||
KubernetesVersion: cpVersion,
|
KubernetesVersion: cpVersion,
|
||||||
FeatureGates: map[string]bool{features.IPv6DualStack: true},
|
|
||||||
},
|
},
|
||||||
expected: []string{
|
expected: []string{
|
||||||
"kube-controller-manager",
|
"kube-controller-manager",
|
||||||
@ -745,7 +741,6 @@ func TestGetControllerManagerCommand(t *testing.T) {
|
|||||||
"--authorization-kubeconfig=" + kubeadmconstants.KubernetesDir + "/controller-manager.conf",
|
"--authorization-kubeconfig=" + kubeadmconstants.KubernetesDir + "/controller-manager.conf",
|
||||||
"--client-ca-file=" + testCertsDir + "/ca.crt",
|
"--client-ca-file=" + testCertsDir + "/ca.crt",
|
||||||
"--requestheader-client-ca-file=" + testCertsDir + "/front-proxy-ca.crt",
|
"--requestheader-client-ca-file=" + testCertsDir + "/front-proxy-ca.crt",
|
||||||
"--feature-gates=IPv6DualStack=true",
|
|
||||||
"--allocate-node-cidrs=true",
|
"--allocate-node-cidrs=true",
|
||||||
"--cluster-cidr=2001:db8::/64,10.1.0.0/16",
|
"--cluster-cidr=2001:db8::/64,10.1.0.0/16",
|
||||||
"--service-cluster-ip-range=fd03::/112,192.168.0.0/16",
|
"--service-cluster-ip-range=fd03::/112,192.168.0.0/16",
|
||||||
|
Loading…
Reference in New Issue
Block a user