@@ -8,24 +8,26 @@ write_files:
88 content: |
99 [Journal]
1010 SystemMaxUse=5G
11+
12+
13+ - path: "/etc/modules-load.d/k8s.conf"
14+ content: |
15+ ip_vs
16+ ip_vs_rr
17+ ip_vs_wrr
18+ ip_vs_sh
19+ nf_conntrack_ipv4
20+
1121
1222- path: "/etc/sysctl.d/k8s.conf"
1323 content: |
1424 net.bridge.bridge-nf-call-ip6tables = 1
1525 net.bridge.bridge-nf-call-iptables = 1
1626 kernel.panic_on_oops = 1
1727 kernel.panic = 10
28+ net.ipv4.ip_forward = 1
1829 vm.overcommit_memory = 1
19-
20- - path: "/etc/yum.repos.d/kubernetes.repo"
21- content: |
22- [kubernetes]
23- name=Kubernetes
24- baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch
25- enabled=1
26- gpgcheck=1
27- repo_gpgcheck=1
28- gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
30+
2931
3032- path: /etc/sysconfig/selinux
3133 content: |
@@ -41,72 +43,58 @@ write_files:
4143 # mls - Multi Level Security protection.
4244 SELINUXTYPE=targeted
4345
44- - path: "/etc/sysconfig/kubelet-overwrite"
45- content: |
46- KUBELET_DNS_ARGS=
47- KUBELET_EXTRA_ARGS=--authentication-token-webhook=true \
48- --cloud-provider=aws \
49- --cloud-config=/etc/kubernetes/cloud-config \
50- --hostname-override=node1 \
51- --read-only-port=0 \
52- --protect-kernel-defaults=true \
53- --cluster-dns= \
54- --cluster-domain=cluster.local
55- - path: "/etc/systemd/system/kubelet.service.d/20-extra.conf"
56- content: |
57- [Service]
58- EnvironmentFile=/etc/sysconfig/kubelet
59-
60- - path: "/etc/kubernetes/cloud-config"
61- content: |
62- {aws-config:true}
63-
64- - path: "/usr/local/bin/setup"
65- permissions: "0755"
46+ - path: "/opt/bin/setup"
47+ permissions: "0777"
6648 content: |
6749 #!/bin/bash
6850 set -xeuo pipefail
51+
6952 setenforce 0 || true
53+
54+ # As we added some modules and don't want to reboot, restart the service
55+ systemctl restart systemd-modules-load.service
7056 sysctl --system
7157
7258 yum install -y docker-1.13.1 \
73- kubelet-1.10.2 \
74- kubeadm-1.10.2 \
7559 ebtables \
7660 ethtool \
7761 nfs-utils \
7862 bash-completion \
79- sudo
80-
81- cp /etc/sysconfig/kubelet-overwrite /etc/sysconfig/kubelet
82-
83- systemctl enable --now docker
84- systemctl enable --now kubelet
85-
86- if [[ ! -x /usr/local/bin/health-monitor.sh ]]; then
87- curl -Lfo /usr/local/bin/health-monitor.sh \
88- https://raw.githubusercontent.com/kubermatic/machine-controller/8b5b66e4910a6228dfaecccaa0a3b05ec4902f8e/pkg/userdata/scripts/health-monitor.sh
89- chmod +x /usr/local/bin/health-monitor.sh
63+ sudo \
64+ socat \
65+ wget \
66+ curl \
67+ ipvsadm
68+
69+ #setup some common directories
70+ mkdir -p /opt/bin/
71+ mkdir -p /var/lib/calico
72+ mkdir -p /etc/kubernetes/manifests
73+ mkdir -p /etc/cni/net.d
74+ mkdir -p /opt/cni/bin
75+
76+ # cni
77+ if [ ! -f /opt/cni/bin/loopback ]; then
78+ curl -L https://github.com/containernetworking/plugins/releases/download/v0.6.0/cni-plugins-amd64-v0.6.0.tgz | tar -xvzC /opt/cni/bin -f -
9079 fi
91-
92- if ! [[ -e /etc/kubernetes/pki/ca.crt ]]; then
93- kubeadm join \
94- --token my-token \
95- --discovery-token-ca-cert-hash sha256:6caecce9fedcb55d4953d61a27dc6997361a2f226ad86d7e6004dde7526fc4b1 \
96- --ignore-preflight-errors=CRI \
97- server:443
80+ # kubelet
81+ if [ ! -f /opt/bin/kubelet ]; then
82+ curl -Lfo /opt/bin/kubelet https://storage.googleapis.com/kubernetes-release/release/v1.10.2/bin/linux/amd64/kubelet
83+ chmod +x /opt/bin/kubelet
9884 fi
99-
100- if [[ ! -x /usr/local/bin/health-monitor.sh ]]; then
101- curl -Lfo /usr/local/bin/health-monitor.sh \
102- https://raw.githubusercontent.com/kubermatic/machine-controller/8b5b66e4910a6228dfaecccaa0a3b05ec4902f8e/pkg/userdata/scripts/health-monitor.sh
103- chmod +x /usr/local/bin/health-monitor.sh
85+
86+ if [[ ! -x /opt/bin/health-monitor.sh ]]; then
87+ curl -Lfo /opt/bin/health-monitor.sh https://raw.githubusercontent.com/kubermatic/machine-controller/8b5b66e4910a6228dfaecccaa0a3b05ec4902f8e/pkg/userdata/scripts/health-monitor.sh
88+ chmod +x /opt/bin/health-monitor.sh
10489 fi
90+
10591
92+ systemctl enable --now docker
93+ systemctl enable --now kubelet
10694 systemctl enable --now --no-block kubelet-healthcheck.service
10795 systemctl enable --now --no-block docker-healthcheck.service
10896
109- - path: "/usr/local /bin/supervise.sh"
97+ - path: "/opt /bin/supervise.sh"
11098 permissions: "0755"
11199 content: |
112100 #!/bin/bash
@@ -115,7 +103,108 @@ write_files:
115103 sleep 1
116104 done
117105
106+ - path: "/etc/systemd/system/kubelet.service"
107+ content: |
108+ [Unit]
109+ After=docker.service
110+ Requires=docker.service
111+
112+ Description=kubelet: The Kubernetes Node Agent
113+ Documentation=https://kubernetes.io/docs/home/
114+
115+ [Service]
116+ Restart=always
117+ StartLimitInterval=0
118+ RestartSec=10
119+
120+ Environment="PATH=/opt/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin/"
121+
122+ ExecStart=/opt/bin/kubelet $KUBELET_EXTRA_ARGS \
123+ --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf \
124+ --kubeconfig=/etc/kubernetes/kubelet.conf \
125+ --pod-manifest-path=/etc/kubernetes/manifests \
126+ --allow-privileged=true \
127+ --network-plugin=cni \
128+ --cni-conf-dir=/etc/cni/net.d \
129+ --cni-bin-dir=/opt/cni/bin \
130+ --authorization-mode=Webhook \
131+ --client-ca-file=/etc/kubernetes/pki/ca.crt \
132+ --cadvisor-port=0 \
133+ --rotate-certificates=true \
134+ --cert-dir=/etc/kubernetes/pki \
135+ --authentication-token-webhook=true \
136+ --cloud-provider=aws \
137+ --cloud-config=/etc/kubernetes/cloud-config \
138+ --hostname-override=node1 \
139+ --read-only-port=0 \
140+ --exit-on-lock-contention \
141+ --lock-file=/tmp/kubelet.lock \
142+ --anonymous-auth=false \
143+ --protect-kernel-defaults=true \
144+ --cluster-dns= \
145+ --cluster-domain=cluster.local
146+
147+ [Install]
148+ WantedBy=multi-user.target
149+
150+ - path: "/etc/systemd/system/kubelet.service.d/extras.conf"
151+ content: |
152+ [Service]
153+ Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=systemd"
154+
155+ - path: "/etc/kubernetes/cloud-config"
156+ content: |
157+ {aws-config:true}
158+
159+ - path: "/etc/kubernetes/bootstrap-kubelet.conf"
160+ content: |
161+ apiVersion: v1
162+ clusters:
163+ - cluster:
164+ certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVXakNDQTBLZ0F3SUJBZ0lKQUxmUmxXc0k4WVFITUEwR0NTcUdTSWIzRFFFQkJRVUFNSHN4Q3pBSkJnTlYKQkFZVEFsVlRNUXN3Q1FZRFZRUUlFd0pEUVRFV01CUUdBMVVFQnhNTlUyRnVJRVp5WVc1amFYTmpiekVVTUJJRwpBMVVFQ2hNTFFuSmhaR1pwZEhwcGJtTXhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkREVkTUJzR0NTcUdTSWIzCkRRRUpBUllPWW5KaFpFQmtZVzVuWVM1amIyMHdIaGNOTVRRd056RTFNakEwTmpBMVdoY05NVGN3TlRBME1qQTAKTmpBMVdqQjdNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFQ0JNQ1EwRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMEp5WVdSbWFYUjZhVzVqTVJJd0VBWURWUVFERXdsc2IyTmhiR2h2CmMzUXhIVEFiQmdrcWhraUc5dzBCQ1FFV0RtSnlZV1JBWkdGdVoyRXVZMjl0TUlJQklqQU5CZ2txaGtpRzl3MEIKQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdDVmQWpwNGZUY2VrV1VUZnpzcDBreWloMU9ZYnNHTDBLWDFlUmJTUwpSOE9kMCs5UTYySHlueStHRndNVGI0QS9LVThtc3NvSHZjY2VTQUFid2ZieEZLLytzNTFUb2JxVW5PUlpyT29UClpqa1V5Z2J5WERTSzk5WUJiY1IxUGlwOHZ3TVRtNFhLdUx0Q2lnZUJCZGpqQVFkZ1VPMjhMRU5HbHNNbm1lWWsKSmZPRFZHblZtcjVMdGI5QU5BOElLeVRmc25ISjRpT0NTL1BsUGJVajJxN1lub1ZMcG9zVUJNbGdVYi9DeWtYMwptT29MYjR5SkpReUEvaVNUNlp4aUlFajM2RDR5V1o1bGc3WUpsK1VpaUJRSEdDblBkR3lpcHFWMDZleDBoZVlXCmNhaVc4TFdaU1VROTNqUStXVkNIOGhUN0RRTzFkbXN2VW1YbHEvSmVBbHdRL1FJREFRQUJvNEhnTUlIZE1CMEcKQTFVZERnUVdCQlJjQVJPdGhTNFA0VTd2VGZqQnlDNTY5UjdFNkRDQnJRWURWUjBqQklHbE1JR2lnQlJjQVJPdApoUzRQNFU3dlRmakJ5QzU2OVI3RTZLRi9wSDB3ZXpFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ1RBa05CCk1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnBjMk52TVJRd0VnWURWUVFLRXd0Q2NtRmtabWwwZW1sdVl6RVMKTUJBR0ExVUVBeE1KYkc5allXeG9iM04wTVIwd0d3WUpLb1pJaHZjTkFRa0JGZzVpY21Ga1FHUmhibWRoTG1OdgpiWUlKQUxmUmxXc0k4WVFITUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUJBRzZoClU5ZjlzTkgwLzZvQmJHR3kyRVZVMFVnSVRVUUlyRldvOXJGa3JXNWsvWGtEalFtKzNsempUMGlHUjRJeEUvQW8KZVU2c1FodWE3d3JXZUZFbjQ3R0w5OGxuQ3NKZEQ3b1pOaEZtUTk1VGIvTG5EVWpzNVlqOWJyUDBOV3pYZllVNApVSzJabklOSlJjSnBCOGlSQ2FDeEU4RGRjVUYwWHFJRXE2cEEyNzJzbm9MbWlYTE12Tmwza1lFZG0ramU2dm9ECjU4U05WRVVzenR6UXlYbUpFaENwd1ZJMEE2UUNqelhqK3F2cG13M1paSGk4SndYZWk4WlpCTFRTRkJraThaN24Kc0g5QkJIMzgvU3pVbUFONFFIU1B5MWdqcW0wME9BRThOYVlEa2gvYnpFNGQ3bUxHR01XcC9XRTNLUFN1ODJIRgprUGU2WG9TYmlMbS9reGszMlQwPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t
165+ server: https://server:443
166+ name: ""
167+ contexts: []
168+ current-context: ""
169+ kind: Config
170+ preferences: {}
171+ users:
172+ - name: ""
173+ user:
174+ token: my-token
175+
176+
177+ - path: "/etc/kubernetes/pki/ca.crt"
178+ content: |
179+ -----BEGIN CERTIFICATE-----
180+ MIIEWjCCA0KgAwIBAgIJALfRlWsI8YQHMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNV
181+ BAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEUMBIG
182+ A1UEChMLQnJhZGZpdHppbmMxEjAQBgNVBAMTCWxvY2FsaG9zdDEdMBsGCSqGSIb3
183+ DQEJARYOYnJhZEBkYW5nYS5jb20wHhcNMTQwNzE1MjA0NjA1WhcNMTcwNTA0MjA0
184+ NjA1WjB7MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDVNhbiBG
185+ cmFuY2lzY28xFDASBgNVBAoTC0JyYWRmaXR6aW5jMRIwEAYDVQQDEwlsb2NhbGhv
186+ c3QxHTAbBgkqhkiG9w0BCQEWDmJyYWRAZGFuZ2EuY29tMIIBIjANBgkqhkiG9w0B
187+ AQEFAAOCAQ8AMIIBCgKCAQEAt5fAjp4fTcekWUTfzsp0kyih1OYbsGL0KX1eRbSS
188+ R8Od0+9Q62Hyny+GFwMTb4A/KU8mssoHvcceSAAbwfbxFK/+s51TobqUnORZrOoT
189+ ZjkUygbyXDSK99YBbcR1Pip8vwMTm4XKuLtCigeBBdjjAQdgUO28LENGlsMnmeYk
190+ JfODVGnVmr5Ltb9ANA8IKyTfsnHJ4iOCS/PlPbUj2q7YnoVLposUBMlgUb/CykX3
191+ mOoLb4yJJQyA/iST6ZxiIEj36D4yWZ5lg7YJl+UiiBQHGCnPdGyipqV06ex0heYW
192+ caiW8LWZSUQ93jQ+WVCH8hT7DQO1dmsvUmXlq/JeAlwQ/QIDAQABo4HgMIHdMB0G
193+ A1UdDgQWBBRcAROthS4P4U7vTfjByC569R7E6DCBrQYDVR0jBIGlMIGigBRcAROt
194+ hS4P4U7vTfjByC569R7E6KF/pH0wezELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNB
195+ MRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRQwEgYDVQQKEwtCcmFkZml0emluYzES
196+ MBAGA1UEAxMJbG9jYWxob3N0MR0wGwYJKoZIhvcNAQkBFg5icmFkQGRhbmdhLmNv
197+ bYIJALfRlWsI8YQHMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAG6h
198+ U9f9sNH0/6oBbGGy2EVU0UgITUQIrFWo9rFkrW5k/XkDjQm+3lzjT0iGR4IxE/Ao
199+ eU6sQhua7wrWeFEn47GL98lnCsJdD7oZNhFmQ95Tb/LnDUjs5Yj9brP0NWzXfYU4
200+ UK2ZnINJRcJpB8iRCaCxE8DdcUF0XqIEq6pA272snoLmiXLMvNl3kYEdm+je6voD
201+ 58SNVEUsztzQyXmJEhCpwVI0A6QCjzXj+qvpmw3ZZHi8JwXei8ZZBLTSFBki8Z7n
202+ sH9BBH38/SzUmAN4QHSPy1gjqm00OAE8NaYDkh/bzE4d7mLGGMWp/WE3KPSu82HF
203+ kPe6XoSbiLm/kxk32T0=
204+ -----END CERTIFICATE-----
205+
118206- path: "/etc/systemd/system/setup.service"
207+ permissions: "0644"
119208 content: |
120209 [Install]
121210 WantedBy=multi-user.target
@@ -127,33 +216,40 @@ write_files:
127216 [Service]
128217 Type=oneshot
129218 RemainAfterExit=true
130- ExecStart=/usr/local/bin/supervise.sh /usr/local/bin/setup
219+ ExecStart=/opt/bin/supervise.sh /opt/bin/setup
220+
221+ - path: "/etc/profile.d/opt-bin-path.sh"
222+ permissions: "0644"
223+ content: |
224+ export PATH="/opt/bin:$PATH"
131225
132226- path: /etc/systemd/system/kubelet-healthcheck.service
133227 permissions: "0644"
134228 content: |
135229 [Unit]
136230 Requires=kubelet.service
137231 After=kubelet.service
138-
232+
139233 [Service]
140- ExecStart=/usr/local /bin/health-monitor.sh kubelet
141-
234+ ExecStart=/opt /bin/health-monitor.sh kubelet
235+
142236 [Install]
143237 WantedBy=multi-user.target
238+
144239
145240- path: /etc/systemd/system/docker-healthcheck.service
146241 permissions: "0644"
147242 content: |
148243 [Unit]
149244 Requires=docker.service
150245 After=docker.service
151-
246+
152247 [Service]
153- ExecStart=/usr/local /bin/health-monitor.sh container-runtime
154-
248+ ExecStart=/opt /bin/health-monitor.sh container-runtime
249+
155250 [Install]
156251 WantedBy=multi-user.target
252+
157253
158254runcmd:
159255- systemctl enable --now setup.service
0 commit comments