@@ -116,10 +116,10 @@ type StartOptions struct {
116
116
}
117
117
118
118
// NewHelper creates a new OpenShift helper
119
- func NewHelper (client * docker.Client , hostHelper * host.HostHelper , image , containerName , publicHostname , routingSuffix string ) * Helper {
119
+ func NewHelper (client * docker.Client , dockerHelper * dockerhelper. Helper , hostHelper * host.HostHelper , image , containerName , publicHostname , routingSuffix string ) * Helper {
120
120
return & Helper {
121
121
client : client ,
122
- dockerHelper : dockerhelper . NewHelper ( client , nil ) ,
122
+ dockerHelper : dockerHelper ,
123
123
execHelper : dockerexec .NewExecHelper (client , containerName ),
124
124
hostHelper : hostHelper ,
125
125
runHelper : run .NewRunHelper (client ),
@@ -730,6 +730,19 @@ func (h *Helper) updateConfig(configDir string, opt *StartOptions) error {
730
730
nodeCfg .DNSIP = ""
731
731
}
732
732
nodeCfg .DNSBindAddress = ""
733
+
734
+ if h .supportsCgroupDriver () {
735
+ // Set the cgroup driver from the current docker
736
+ cgroupDriver , err := h .dockerHelper .CgroupDriver ()
737
+ if err != nil {
738
+ return err
739
+ }
740
+ if nodeCfg .KubeletArguments == nil {
741
+ nodeCfg .KubeletArguments = configapi.ExtendedArguments {}
742
+ }
743
+ nodeCfg .KubeletArguments ["cgroup-driver" ] = []string {cgroupDriver }
744
+ }
745
+
733
746
cfgBytes , err = configapilatest .WriteYAML (nodeCfg )
734
747
if err != nil {
735
748
return err
@@ -784,3 +797,25 @@ func getUsedPorts(data string) map[int]struct{} {
784
797
glog .V (2 ).Infof ("Used ports in container: %#v" , ports )
785
798
return ports
786
799
}
800
+
801
+ func (h * Helper ) supportsCgroupDriver () bool {
802
+ script := `#!/bin/bash
803
+
804
+ # Exit with an error
805
+ set -e
806
+
807
+ # Ensure we have a link to the openshift binary named kubelet
808
+ if [[ ! -f /usr/bin/kubelet ]]; then
809
+ ln -s /usr/bin/openshift /usr/bin/kubelet
810
+ fi
811
+
812
+ kubelet --help | grep -- "--cgroup-driver"
813
+ `
814
+ rc , err := h .runHelper .New ().Image (h .image ).
815
+ DiscardContainer ().
816
+ Entrypoint ("/bin/bash" ).
817
+ Command ("-c" , script ).
818
+ Run ()
819
+
820
+ return rc == 0 && err == nil
821
+ }
0 commit comments