#!/bin/bash exec &> /var/log/init-aws-kubernetes-node.log set -o verbose set -o errexit set -o pipefail export KUBEADM_TOKEN=${kubeadm_token} export MASTER_IP=${master_private_ip} export DNS_NAME=${dns_name} export KUBERNETES_VERSION="1.25.2" # Set this only after setting the defaults set -o nounset # We to match the hostname expected by kubeadm an the hostname used by kubelet LOCAL_IP_ADDRESS=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4) FULL_HOSTNAME="$(curl -s http://169.254.169.254/latest/meta-data/hostname)" # Make DNS lowercase DNS_NAME=$(echo "$DNS_NAME" | tr 'A-Z' 'a-z') ######################################## ######################################## # Disable SELinux ######################################## ######################################## # setenforce returns non zero if already SE Linux is already disabled is_enforced=$(getenforce) if [[ $is_enforced != "Disabled" ]]; then setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config fi ######################################## ######################################## # Install containerd ######################################## ######################################## cat < /etc/containerd/config.toml sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml systemctl restart containerd systemctl enable containerd ######################################## ######################################## # Install docker ######################################## ######################################## # yum install -y yum-utils curl gettext device-mapper-persistent-data lvm2 docker # # Start services # systemctl enable docker # systemctl start docker # # Set settings needed by Docker # sysctl net.bridge.bridge-nf-call-iptables=1 # sysctl net.bridge.bridge-nf-call-ip6tables=1 ######################################## ######################################## # Install Kubernetes components ######################################## ######################################## sudo cat < /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kubelet kubeadm kubectl EOF yum install -y kubelet-$KUBERNETES_VERSION kubeadm-$KUBERNETES_VERSION kubernetes-cni --disableexcludes=kubernetes # Start services systemctl enable kubelet systemctl start kubelet # Fix certificates file on CentOS if cat /etc/*release | grep ^NAME= | grep CentOS ; then rm -rf /etc/ssl/certs/ca-certificates.crt/ cp /etc/ssl/certs/ca-bundle.crt /etc/ssl/certs/ca-certificates.crt fi ######################################## ######################################## # Initialize the Kube node ######################################## ######################################## cat >/tmp/kubeadm.yaml <