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.
Lascia un commento