In questo articolo installiamo e configuriamo un cluster Kubernetes formato da 3 macchine Ubuntu 22.04 (un master e 2 nodi workers) che chiameremo:

kubemaster1 – kubenode1 – kubenode2

Passaggi da eseguire su tutte le tre macchine con utente sudoers:

# disattivare lo swap:
sudo swapoff -a
sudo sed -i '/swap.img/ s/^\(.*\)$/#\1/g' /etc/fstab

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

sudo sysctl --system

sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt update

sudo apt install -y containerd.io

containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1

sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

sudo systemctl restart containerd

sudo curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/cloud.google.gpg

sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

sudo apt update

sudo apt install -y kubelet kubeadm kubectl

sudo apt-mark hold kubelet kubeadm kubectl

Sulla macchina master:

# inizializzare il cluster:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

# copiare l'output per fare il join dai nodi workes:
kubeadm join 192.168.1.215:6443 --token <token> \
        --discovery-token-ca-cert-hash sha256:<discovery-token>

# il token può essere rigenerato in seguito con il comando:
kubeadm token create --print-join-command

# configurazione ambiente utente corrente (non root)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

wget https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml

kubectl apply -f calico.yaml

# aspettare che i pods calico siano in esecuzione
watch kubectl get pods --all-namespaces

Sui nodi workers:

  • ripeti i passaggi del primo blocco
  • fai il join (come root!!!) con il comando copiato in precedenza sul master

Attivazione Dashboard (su master)

# installare la dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

# attivare l'accesso alla dashboard
kubectl port-forward -n kubernetes-dashboard service/kubernetes-dashboard 8080:443 --address=0.0.0.0 &

# accesso dal browser:
https://kubemaster1.home:8080

creazione utente per la dashboard (maggiori informazioni clicca qui)

crea un file dashboard-adminuser.yaml:

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

applicarlo con kubectl ed ottenere il token:

kubectl apply -f dashboard-adminuser.yaml

kubectl -n kubernetes-dashboard create token admin-user

Passa all’articolo successivo per iniziare ad utilizzare kubernetes.