1
- #! /bin/sh -x
1
+ #! /bin/bash
2
2
# see: dh_installdeb(1)
3
3
4
4
set -o errexit
@@ -16,35 +16,47 @@ set -o nounset
16
16
# for details, see http://www.debian.org/doc/debian-policy/ or
17
17
# the debian-policy package
18
18
19
-
20
- case " $1 " in
21
- configure)
22
- kubelet_service_file=/lib/systemd/system/kubelet.service
23
- if [ ! -f ${kubelet_service_file} ]; then
24
- kubelet_service_file=/lib/systemd/system/kubelet.service
25
- if [ ! -f ${kubelet_service_file} ]; then
26
- echo " can't find kubelet.service" >&2
27
- exit 1
28
- fi
19
+ function make_dochershim_service {
20
+ kubelet_service_file=/lib/systemd/system/kubelet.service
21
+ if [[ ! -f ${kubelet_service_file} ]]; then
22
+ kubelet_service_file=/etc/systemd/system/kubelet.service
23
+ if [[ ! -f ${kubelet_service_file} ]]; then
24
+ echo " can't find kubelet.service" >&2
25
+ exit 1
29
26
fi
30
- cp -r " ${kubelet_service_file} " /etc/systemd/system/dockershim.service
31
- if [ -d /etc/systemd/system/kubelet.service.d ]; then
32
- cp -r /etc/systemd/system/kubelet.service.d /etc/systemd/system/dockershim.service.d
33
- rm -f /etc/systemd/system/dockershim.service.d/99-criproxy.conf
27
+ fi
28
+ cp -r " ${kubelet_service_file} " /etc/systemd/system/dockershim.service
29
+ # only copy the dir if it's non-empty
30
+ if [[ -d /etc/systemd/system/kubelet.service.d && $( ls -A " /etc/systemd/system/kubelet.service.d" ) ]]; then
31
+ cp -r /etc/systemd/system/kubelet.service.d /etc/systemd/system/dockershim.service.d
32
+ rm -f /etc/systemd/system/dockershim.service.d/99-criproxy.conf
33
+ if [[ $( ls -A " /etc/systemd/system/dockershim.service.d" ) ]]; then
34
+ sed -i ' s@\(ExecStart.*kubelet\)@\1 --experimental-dockershim --port 11250@' /etc/systemd/system/dockershim.service.d/*
34
35
fi
35
- sed -i ' s@\(ExecStart.*kubelet\)@\1 --experimental-dockershim --port 11250@' /etc/systemd/system/dockershim.service
36
- # FIXME: this is temporary hack before 'hyperkube kubelet --experimental-dockershim'
37
- # fix lands in k8s 1.7 and k8s 1.8. See k8s issues / PRs:
38
- # https://github.com/kubernetes/kubernetes/issues/54424
39
- # https://github.com/kubernetes/kubernetes/pull/55250
40
- # https://github.com/kubernetes/kubernetes/pull/55335
41
- if [ -d /dind -a -x /k8s/hyperkube ]; then
42
- k8s_version=" $( /k8s/hyperkube --version| awk ' {print $2}' ) "
36
+ fi
37
+ sed -i ' s@\(ExecStart.*kubelet\)@\1 --experimental-dockershim --port 11250@' /etc/systemd/system/dockershim.service
38
+ }
39
+
40
+ # FIXME: this is temporary hack because 'hyperkube kubelet --experimental-dockershim'
41
+ # used to be broken. The fix is included in k8s 1.8.4 and will be included in k8s 1.7.11.
42
+ # PR link: https://github.com/kubernetes/kubernetes/pull/55335
43
+ function ensure_dockershim_in_kubelet {
44
+ if [[ -d /dind && -x /k8s/hyperkube && $( /k8s/hyperkube --version | awk ' {print $2}' ) =~ (v[0-9]+\. [0-9]+\. [0-9]+)($| ^[0-9]) ]]; then
45
+ k8s_version=" ${BASH_REMATCH[1]} "
46
+ if [[ $(( echo "${k8s_version} "; echo v1 .8 .4 ) | sort - V | head - 1 ) != v1 .8 .4 ]]; then
43
47
rm -f /usr/bin/kubelet
44
48
curl "https://storage.googleapis.com/kubernetes-release/release/${k8s_version} / bin/ linux/ amd64 / kubelet" >/ usr/ bin/ kubelet
45
49
chmod +x /usr/bin/kubelet
46
50
sed -i 's@ExecStart=/k8 s/hyperkube kubelet@ExecStart=/usr/bin/kubelet@' /etc/systemd/system/dockershim.service
47
51
fi
52
+ fi
53
+ return 0
54
+ }
55
+
56
+ case "$1 " in
57
+ configure)
58
+ make_dochershim_service
59
+ ensure_dockershim_in_kubelet
48
60
systemctl stop kubelet
49
61
systemctl daemon-reload
50
62
systemctl enable dockershim criproxy
0 commit comments