| #cloud-config |
| |
| write_files: |
| # Setup containerd. |
| - path: /etc/systemd/system/containerd-installation.service |
| permissions: 0644 |
| owner: root |
| content: | |
| # installed by cloud-init |
| [Unit] |
| Description=Download and install containerd binaries and configurations. |
| After=network-online.target |
| |
| [Service] |
| Type=oneshot |
| RemainAfterExit=yes |
| ExecStartPre=/bin/mkdir -p /home/containerd |
| ExecStartPre=/bin/mount --bind /home/containerd /home/containerd |
| ExecStartPre=/bin/mount -o remount,exec /home/containerd |
| 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 |
| ExecStartPre=/bin/chmod 544 /home/containerd/configure.sh |
| ExecStart=/home/containerd/configure.sh |
| |
| [Install] |
| WantedBy=containerd.target |
| |
| - path: /etc/systemd/system/containerd.service |
| permissions: 0644 |
| owner: root |
| content: | |
| # installed by cloud-init |
| [Unit] |
| Description=containerd container runtime |
| Documentation=https://containerd.io |
| After=containerd-installation.service |
| |
| [Service] |
| Restart=always |
| RestartSec=5 |
| Delegate=yes |
| KillMode=process |
| OOMScoreAdjust=-999 |
| LimitNOFILE=1048576 |
| # Having non-zero Limit*s causes performance problems due to accounting overhead |
| # in the kernel. We recommend using cgroups to do container-local accounting. |
| LimitNPROC=infinity |
| LimitCORE=infinity |
| TasksMax=infinity |
| ExecStartPre=/sbin/modprobe overlay |
| EnvironmentFile=-/etc/containerd/containerd.env |
| ExecStart=/home/containerd/usr/local/bin/containerd |
| |
| [Install] |
| WantedBy=containerd.target |
| |
| - path: /etc/systemd/system/containerd.target |
| permissions: 0644 |
| owner: root |
| content: | |
| [Unit] |
| Description=Containerd |
| |
| [Install] |
| WantedBy=kubernetes.target |
| |
| # Setup kubernetes. |
| - path: /etc/systemd/system/kube-node-installation.service |
| permissions: 0644 |
| owner: root |
| content: | |
| [Unit] |
| Description=Download and install k8s binaries and configurations |
| After=network-online.target containerd.target |
| Wants=network-online.target containerd.target |
| |
| [Service] |
| Type=oneshot |
| RemainAfterExit=yes |
| ExecStartPre=/bin/mkdir -p /home/kubernetes/bin |
| ExecStartPre=/bin/mount --bind /home/kubernetes/bin /home/kubernetes/bin |
| ExecStartPre=/bin/mount -o remount,exec /home/kubernetes/bin |
| 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 |
| ExecStartPre=/bin/chmod 544 /home/kubernetes/bin/configure.sh |
| ExecStart=/home/kubernetes/bin/configure.sh |
| |
| [Install] |
| WantedBy=kubernetes.target |
| |
| - path: /etc/systemd/system/kube-node-configuration.service |
| permissions: 0644 |
| owner: root |
| content: | |
| [Unit] |
| Description=Configure kubernetes node |
| After=kube-node-installation.service |
| |
| [Service] |
| Type=oneshot |
| RemainAfterExit=yes |
| ExecStartPre=/bin/chmod 544 /home/kubernetes/bin/configure-helper.sh |
| ExecStart=/home/kubernetes/bin/configure-helper.sh |
| |
| [Install] |
| WantedBy=kubernetes.target |
| |
| - path: /etc/systemd/system/kube-container-runtime-monitor.service |
| permissions: 0644 |
| owner: root |
| content: | |
| [Unit] |
| Description=Kubernetes health monitoring for container runtime |
| After=kube-node-configuration.service |
| [Service] |
| Restart=always |
| RestartSec=10 |
| RemainAfterExit=yes |
| RemainAfterExit=yes |
| ExecStartPre=/bin/chmod 544 /home/kubernetes/bin/health-monitor.sh |
| ExecStart=/home/kubernetes/bin/health-monitor.sh container-runtime |
| [Install] |
| WantedBy=kubernetes.target |
| |
| - path: /etc/systemd/system/kubelet-monitor.service |
| permissions: 0644 |
| owner: root |
| content: | |
| [Unit] |
| Description=Kubernetes health monitoring for kubelet |
| After=kube-node-configuration.service |
| |
| [Service] |
| Restart=always |
| RestartSec=10 |
| RemainAfterExit=yes |
| ExecStartPre=/bin/chmod 544 /home/kubernetes/bin/health-monitor.sh |
| ExecStart=/home/kubernetes/bin/health-monitor.sh kubelet |
| |
| [Install] |
| WantedBy=kubernetes.target |
| |
| - path: /etc/systemd/system/kube-logrotate.timer |
| permissions: 0644 |
| owner: root |
| content: | |
| [Unit] |
| Description=Hourly kube-logrotate invocation |
| |
| [Timer] |
| OnCalendar=hourly |
| |
| [Install] |
| WantedBy=kubernetes.target |
| |
| - path: /etc/systemd/system/kube-logrotate.service |
| permissions: 0644 |
| owner: root |
| content: | |
| [Unit] |
| Description=Kubernetes log rotation |
| After=kube-node-configuration.service |
| |
| [Service] |
| Type=oneshot |
| ExecStart=-/usr/sbin/logrotate /etc/logrotate.conf |
| |
| [Install] |
| WantedBy=kubernetes.target |
| |
| - path: /etc/systemd/system/kubernetes.target |
| permissions: 0644 |
| owner: root |
| content: | |
| [Unit] |
| Description=Kubernetes |
| |
| [Install] |
| WantedBy=multi-user.target |
| |
| runcmd: |
| # Stop the existing containerd service if there is one. (for Docker 18.09+) |
| - systemctl is-active containerd && systemctl stop containerd |
| - systemctl daemon-reload |
| - systemctl enable containerd-installation.service |
| - systemctl enable containerd.service |
| - systemctl enable containerd.target |
| - systemctl enable kube-node-installation.service |
| - systemctl enable kube-node-configuration.service |
| - systemctl enable kubelet-monitor.service |
| - systemctl enable kube-container-runtime-monitor.service |
| - systemctl enable kube-logrotate.timer |
| - systemctl enable kube-logrotate.service |
| - systemctl enable kubernetes.target |
| - systemctl start kubernetes.target |
| # Start docker after containerd is running. (for Docker 18.09+) |
| - systemctl is-enabled docker && (systemctl is-active docker || systemctl start docker) |