#cloud-config package_update: true package_upgrade: true packages: - apt-transport-https - ca-certificates - curl - gnupg - lsb-release write_files: - path: /etc/modules-load.d/k8s.conf content: | overlay br_netfilter - path: /etc/sysctl.d/k8s.conf content: | net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 - path: /etc/containerd/config.toml content: | [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] SystemdCgroup = true runcmd: # Load kernel modules - modprobe overlay - modprobe br_netfilter - sysctl --system # Install containerd - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null - apt-get update - apt-get install -y containerd.io # Configure containerd - mkdir -p /etc/containerd - containerd config default | tee /etc/containerd/config.toml - systemctl restart containerd - systemctl enable containerd # Install kubeadm, kubelet, kubectl - curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | tee /etc/apQt/sources.list.d/kubernetes.list - apt-get update - apt-get install -y kubelet kubeadm kubectl - apt-mark hold kubelet kubeadm kubectl # Enable kubelet - systemctl enable kubelet