github.com/lalkh/containerd@v1.4.3/contrib/gce/cloud-init/node.yaml (about) 1 #cloud-config 2 3 write_files: 4 # Setup containerd. 5 - path: /etc/systemd/system/containerd-installation.service 6 permissions: 0644 7 owner: root 8 content: | 9 # installed by cloud-init 10 [Unit] 11 Description=Download and install containerd binaries and configurations. 12 After=network-online.target 13 14 [Service] 15 Type=oneshot 16 RemainAfterExit=yes 17 ExecStartPre=/bin/mkdir -p /home/containerd 18 ExecStartPre=/bin/mount --bind /home/containerd /home/containerd 19 ExecStartPre=/bin/mount -o remount,exec /home/containerd 20 ExecStartPre=/usr/bin/curl --fail --retry 5 --retry-delay 3 --silent --show-error -H "X-Google-Metadata-Request: True" -o /home/containerd/configure.sh http://metadata.google.internal/computeMetadata/v1/instance/attributes/containerd-configure-sh 21 ExecStartPre=/bin/chmod 544 /home/containerd/configure.sh 22 ExecStart=/home/containerd/configure.sh 23 24 [Install] 25 WantedBy=containerd.target 26 27 - path: /etc/systemd/system/containerd.service 28 permissions: 0644 29 owner: root 30 content: | 31 # installed by cloud-init 32 [Unit] 33 Description=containerd container runtime 34 Documentation=https://containerd.io 35 After=containerd-installation.service 36 37 [Service] 38 Restart=always 39 RestartSec=5 40 Delegate=yes 41 KillMode=process 42 OOMScoreAdjust=-999 43 LimitNOFILE=1048576 44 # Having non-zero Limit*s causes performance problems due to accounting overhead 45 # in the kernel. We recommend using cgroups to do container-local accounting. 46 LimitNPROC=infinity 47 LimitCORE=infinity 48 TasksMax=infinity 49 ExecStartPre=/sbin/modprobe overlay 50 ExecStart=/home/containerd/usr/local/bin/containerd 51 52 [Install] 53 WantedBy=containerd.target 54 55 - path: /etc/systemd/system/containerd.target 56 permissions: 0644 57 owner: root 58 content: | 59 [Unit] 60 Description=Containerd 61 62 [Install] 63 WantedBy=kubernetes.target 64 65 # Setup kubernetes. 66 - path: /etc/systemd/system/kube-node-installation.service 67 permissions: 0644 68 owner: root 69 content: | 70 [Unit] 71 Description=Download and install k8s binaries and configurations 72 After=network-online.target 73 74 [Service] 75 Type=oneshot 76 RemainAfterExit=yes 77 ExecStartPre=/bin/mkdir -p /home/kubernetes/bin 78 ExecStartPre=/bin/mount --bind /home/kubernetes/bin /home/kubernetes/bin 79 ExecStartPre=/bin/mount -o remount,exec /home/kubernetes/bin 80 ExecStartPre=/usr/bin/curl --fail --retry 5 --retry-delay 3 --silent --show-error -H "X-Google-Metadata-Request: True" -o /home/kubernetes/bin/configure.sh http://metadata.google.internal/computeMetadata/v1/instance/attributes/configure-sh 81 ExecStartPre=/bin/chmod 544 /home/kubernetes/bin/configure.sh 82 ExecStart=/home/kubernetes/bin/configure.sh 83 84 [Install] 85 WantedBy=kubernetes.target 86 87 - path: /etc/systemd/system/kube-node-configuration.service 88 permissions: 0644 89 owner: root 90 content: | 91 [Unit] 92 Description=Configure kubernetes node 93 After=kube-node-installation.service 94 95 [Service] 96 Type=oneshot 97 RemainAfterExit=yes 98 ExecStartPre=/bin/chmod 544 /home/kubernetes/bin/configure-helper.sh 99 ExecStart=/home/kubernetes/bin/configure-helper.sh 100 101 [Install] 102 WantedBy=kubernetes.target 103 104 - path: /etc/systemd/system/kube-container-runtime-monitor.service 105 permissions: 0644 106 owner: root 107 content: | 108 [Unit] 109 Description=Kubernetes health monitoring for container runtime 110 After=kube-node-configuration.service 111 [Service] 112 Restart=always 113 RestartSec=10 114 RemainAfterExit=yes 115 RemainAfterExit=yes 116 ExecStartPre=/bin/chmod 544 /home/kubernetes/bin/health-monitor.sh 117 ExecStart=/home/kubernetes/bin/health-monitor.sh container-runtime 118 [Install] 119 WantedBy=kubernetes.target 120 121 - path: /etc/systemd/system/kubelet-monitor.service 122 permissions: 0644 123 owner: root 124 content: | 125 [Unit] 126 Description=Kubernetes health monitoring for kubelet 127 After=kube-node-configuration.service 128 129 [Service] 130 Restart=always 131 RestartSec=10 132 RemainAfterExit=yes 133 ExecStartPre=/bin/chmod 544 /home/kubernetes/bin/health-monitor.sh 134 ExecStart=/home/kubernetes/bin/health-monitor.sh kubelet 135 136 [Install] 137 WantedBy=kubernetes.target 138 139 - path: /etc/systemd/system/kube-logrotate.timer 140 permissions: 0644 141 owner: root 142 content: | 143 [Unit] 144 Description=Hourly kube-logrotate invocation 145 146 [Timer] 147 OnCalendar=hourly 148 149 [Install] 150 WantedBy=kubernetes.target 151 152 - path: /etc/systemd/system/kube-logrotate.service 153 permissions: 0644 154 owner: root 155 content: | 156 [Unit] 157 Description=Kubernetes log rotation 158 After=kube-node-configuration.service 159 160 [Service] 161 Type=oneshot 162 ExecStart=-/usr/sbin/logrotate /etc/logrotate.conf 163 164 [Install] 165 WantedBy=kubernetes.target 166 167 - path: /etc/systemd/system/kubernetes.target 168 permissions: 0644 169 owner: root 170 content: | 171 [Unit] 172 Description=Kubernetes 173 174 [Install] 175 WantedBy=multi-user.target 176 177 runcmd: 178 # Stop the existing containerd service if there is one. (for Docker 18.09+) 179 - systemctl is-active containerd && systemctl stop containerd 180 - systemctl daemon-reload 181 - systemctl enable containerd-installation.service 182 - systemctl enable containerd.service 183 - systemctl enable containerd.target 184 - systemctl enable kube-node-installation.service 185 - systemctl enable kube-node-configuration.service 186 - systemctl enable kubelet-monitor.service 187 - systemctl enable kube-container-runtime-monitor.service 188 - systemctl enable kube-logrotate.timer 189 - systemctl enable kube-logrotate.service 190 - systemctl enable kubernetes.target 191 - systemctl start kubernetes.target 192 # Start docker after containerd is running. (for Docker 18.09+) 193 - systemctl is-enabled docker && (systemctl is-active docker || systemctl start docker)