mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-10-31 02:08:13 +00:00 
			
		
		
		
	dockershim: get sysctls from sandbox config instead of annotations
This commit is contained in:
		| @@ -30,7 +30,6 @@ go_library( | |||||||
|     tags = ["automanaged"], |     tags = ["automanaged"], | ||||||
|     deps = [ |     deps = [ | ||||||
|         "//pkg/api/v1:go_default_library", |         "//pkg/api/v1:go_default_library", | ||||||
|         "//pkg/api/v1/helper:go_default_library", |  | ||||||
|         "//pkg/apis/componentconfig:go_default_library", |         "//pkg/apis/componentconfig:go_default_library", | ||||||
|         "//pkg/client/unversioned/remotecommand:go_default_library", |         "//pkg/client/unversioned/remotecommand:go_default_library", | ||||||
|         "//pkg/kubelet/apis/cri:go_default_library", |         "//pkg/kubelet/apis/cri:go_default_library", | ||||||
|   | |||||||
| @@ -477,6 +477,9 @@ func (ds *dockerService) applySandboxLinuxOptions(hc *dockercontainer.HostConfig | |||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	// Set sysctls. | ||||||
|  | 	hc.Sysctls = lc.Sysctls | ||||||
|  |  | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -508,13 +511,6 @@ func (ds *dockerService) makeSandboxDockerConfig(c *runtimeapi.PodSandboxConfig, | |||||||
| 		HostConfig: hc, | 		HostConfig: hc, | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// Set sysctls if requested |  | ||||||
| 	sysctls, err := getSysctlsFromAnnotations(c.Annotations) |  | ||||||
| 	if err != nil { |  | ||||||
| 		return nil, fmt.Errorf("failed to get sysctls from annotations %v for sandbox %q: %v", c.Annotations, c.Metadata.Name, err) |  | ||||||
| 	} |  | ||||||
| 	hc.Sysctls = sysctls |  | ||||||
|  |  | ||||||
| 	// Apply linux-specific options. | 	// Apply linux-specific options. | ||||||
| 	if lc := c.GetLinux(); lc != nil { | 	if lc := c.GetLinux(); lc != nil { | ||||||
| 		if err := ds.applySandboxLinuxOptions(hc, lc, createConfig, image, securityOptSep); err != nil { | 		if err := ds.applySandboxLinuxOptions(hc, lc, createConfig, image, securityOptSep); err != nil { | ||||||
|   | |||||||
| @@ -34,7 +34,6 @@ import ( | |||||||
| 	"github.com/golang/glog" | 	"github.com/golang/glog" | ||||||
|  |  | ||||||
| 	"k8s.io/kubernetes/pkg/api/v1" | 	"k8s.io/kubernetes/pkg/api/v1" | ||||||
| 	v1helper "k8s.io/kubernetes/pkg/api/v1/helper" |  | ||||||
| 	runtimeapi "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1" | 	runtimeapi "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1" | ||||||
| 	"k8s.io/kubernetes/pkg/kubelet/types" | 	"k8s.io/kubernetes/pkg/kubelet/types" | ||||||
| 	"k8s.io/kubernetes/pkg/security/apparmor" | 	"k8s.io/kubernetes/pkg/security/apparmor" | ||||||
| @@ -274,27 +273,6 @@ func getNetworkNamespace(c *dockertypes.ContainerJSON) string { | |||||||
| 	return fmt.Sprintf(dockerNetNSFmt, c.State.Pid) | 	return fmt.Sprintf(dockerNetNSFmt, c.State.Pid) | ||||||
| } | } | ||||||
|  |  | ||||||
| // getSysctlsFromAnnotations gets sysctls from annotations. |  | ||||||
| func getSysctlsFromAnnotations(annotations map[string]string) (map[string]string, error) { |  | ||||||
| 	var results map[string]string |  | ||||||
|  |  | ||||||
| 	sysctls, unsafeSysctls, err := v1helper.SysctlsFromPodAnnotations(annotations) |  | ||||||
| 	if err != nil { |  | ||||||
| 		return nil, err |  | ||||||
| 	} |  | ||||||
| 	if len(sysctls)+len(unsafeSysctls) > 0 { |  | ||||||
| 		results = make(map[string]string, len(sysctls)+len(unsafeSysctls)) |  | ||||||
| 		for _, c := range sysctls { |  | ||||||
| 			results[c.Name] = c.Value |  | ||||||
| 		} |  | ||||||
| 		for _, c := range unsafeSysctls { |  | ||||||
| 			results[c.Name] = c.Value |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return results, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // dockerFilter wraps around dockerfilters.Args and provides methods to modify | // dockerFilter wraps around dockerfilters.Args and provides methods to modify | ||||||
| // the filter easily. | // the filter easily. | ||||||
| type dockerFilter struct { | type dockerFilter struct { | ||||||
|   | |||||||
| @@ -175,46 +175,6 @@ func TestGetApparmorSecurityOpts(t *testing.T) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| // TestGetSystclsFromAnnotations tests the logic of getting sysctls from annotations. |  | ||||||
| func TestGetSystclsFromAnnotations(t *testing.T) { |  | ||||||
| 	tests := []struct { |  | ||||||
| 		annotations     map[string]string |  | ||||||
| 		expectedSysctls map[string]string |  | ||||||
| 	}{{ |  | ||||||
| 		annotations: map[string]string{ |  | ||||||
| 			v1.SysctlsPodAnnotationKey:       "kernel.shmmni=32768,kernel.shmmax=1000000000", |  | ||||||
| 			v1.UnsafeSysctlsPodAnnotationKey: "knet.ipv4.route.min_pmtu=1000", |  | ||||||
| 		}, |  | ||||||
| 		expectedSysctls: map[string]string{ |  | ||||||
| 			"kernel.shmmni":            "32768", |  | ||||||
| 			"kernel.shmmax":            "1000000000", |  | ||||||
| 			"knet.ipv4.route.min_pmtu": "1000", |  | ||||||
| 		}, |  | ||||||
| 	}, { |  | ||||||
| 		annotations: map[string]string{ |  | ||||||
| 			v1.SysctlsPodAnnotationKey: "kernel.shmmni=32768,kernel.shmmax=1000000000", |  | ||||||
| 		}, |  | ||||||
| 		expectedSysctls: map[string]string{ |  | ||||||
| 			"kernel.shmmni": "32768", |  | ||||||
| 			"kernel.shmmax": "1000000000", |  | ||||||
| 		}, |  | ||||||
| 	}, { |  | ||||||
| 		annotations: map[string]string{ |  | ||||||
| 			v1.UnsafeSysctlsPodAnnotationKey: "knet.ipv4.route.min_pmtu=1000", |  | ||||||
| 		}, |  | ||||||
| 		expectedSysctls: map[string]string{ |  | ||||||
| 			"knet.ipv4.route.min_pmtu": "1000", |  | ||||||
| 		}, |  | ||||||
| 	}} |  | ||||||
|  |  | ||||||
| 	for i, test := range tests { |  | ||||||
| 		actual, err := getSysctlsFromAnnotations(test.annotations) |  | ||||||
| 		assert.NoError(t, err, "TestCase[%d]", i) |  | ||||||
| 		assert.Len(t, actual, len(test.expectedSysctls), "TestCase[%d]", i) |  | ||||||
| 		assert.Equal(t, test.expectedSysctls, actual, "TestCase[%d]", i) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // TestGetUserFromImageUser tests the logic of getting image uid or user name of image user. | // TestGetUserFromImageUser tests the logic of getting image uid or user name of image user. | ||||||
| func TestGetUserFromImageUser(t *testing.T) { | func TestGetUserFromImageUser(t *testing.T) { | ||||||
| 	newI64 := func(i int64) *int64 { return &i } | 	newI64 := func(i int64) *int64 { return &i } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Pengfei Ni
					Pengfei Ni