Kubernetes è un sistema di orchestrazione di container open source per automatizzare la distribuzione, il ridimensionamento e la gestione delle applicazioni per computer.
Prima di iniziare, assicurati che il tuo software sia aggiornato
sudo apt apdate
sudo apt upgrade
Installa
Installa i seguenti pacchetti su tutte le tue macchine:
kubeadm
:il comando per avviare il cluster.kubelet
:il componente che viene eseguito su tutte le macchine nel tuo cluster e fa cose come l'avvio di POD e container.kubectl
:l'utility della riga di comando per parlare con il tuo cluster.
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
Conferma le versioni installate
kubectl version --client
kubeadm version
Uscita:
[email protected]:~$ kubectl version --client
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"c2b5237ccd9c0f1d600d3072634ca66cefdf272f", GitTreeState:"clean", BuildDate:"2021-08-04T18:03:20Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}
[email protected]:~$ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"c2b5237ccd9c0f1d600d3072634ca66cefdf272f", GitTreeState:"clean", BuildDate:"2021-08-04T18:02:08Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}
Disattiva lo scambio.
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a
Configura sist.
sudo modprobe overlay
sudo modprobe br_netfilter
sudo tee /etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
Installa il runtime Containerd Container
sudo apt-get install -y containerd
Configura containerd e avvia il servizio
sudo mkdir -p /etc/containerd
sudo containerd config default > /etc/containerd/config.toml
Abilita l'avvio del servizio all'avvio e all'avvio
sudo systemctl enable --now containerd
# check status
sudo systemctl status containerd
Il servizio dovrebbe essere in esecuzione
containerd.service - containerd container runtime
Loaded: loaded (/lib/systemd/system/containerd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-08-04 20:27:51 UTC; 7min ago
Docs: https://containerd.io
Main PID: 8159 (containerd)
Tasks: 12
Memory: 23.3M
CGroup: /system.slice/containerd.service
└─8159 /usr/bin/containerd
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.784407330Z" level=info msg="loading plugin \"io.containerd.grpc>
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.785605392Z" level=info msg=serving... address=/run/containerd/c>
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.785639559Z" level=info msg=serving... address=/run/containerd/c>
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.787585658Z" level=info msg="containerd successfully booted in 0>
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.801146245Z" level=info msg="Start subscribing containerd event"
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.804843058Z" level=info msg="Start recovering state"
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.805094249Z" level=info msg="Start event monitor"
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.805193238Z" level=info msg="Start snapshots syncer"
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.805282655Z" level=info msg="Start cni network conf syncer"
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.805369362Z" level=info msg="Start streaming server"
Inizializza il nodo principale
Abilita e avvia il servizio kubelet.
sudo systemctl enable --now kubelet
Estrarre le immagini del contenitore richieste:
sudo kubeadm config images pull
Imposta il nome DNS dell'endpoint del cluster o aggiungi il record a /etc/hosts
file.
192.168.20.7 k8s.citizix.local
Crea cluster:
sudo kubeadm init \
--pod-network-cidr=192.168.0.0/16 \
--control-plane-endpoint=k8s.citizix.local
Quando ciò è fatto, il k8s dovrebbe essere attivo e funzionante. Ottieni il file admin di kubeconfig da questo percorso /etc/kubernetes/admin.conf
mkdir ~/.kube
sudo cp /etc/kubernetes/admin.conf ~/.kube/admin.conf
sudo chown ${USER}.${GROUP} ~/.kube/admin.conf
chmod 400 ~/.kube/admin.conf
Verifica lo stato del cluster:
kubectl cluster-info
Conferma che il nodo master è pronto:
kubectl get nodes -o wide
È possibile aggiungere ulteriori nodi Master utilizzando il comando nell'output dell'installazione:
kubeadm join k8s-cluster.computingforgeeks.com:6443 --token sr4l2l.2kvot0pfalh5o4ik \
--discovery-token-ca-cert-hash sha256:c692fb047e15883b575bd6710779dc2c5af8073f7cab460abd181fd3ddb29a18 \
--control-plane
Aggiungi nodi di lavoro
Con il piano di controllo pronto puoi aggiungere nodi di lavoro al cluster per l'esecuzione di carichi di lavoro pianificati.
Se l'indirizzo dell'endpoint non è in DNS, aggiungi il record a /etc/hosts.
$ sudo vim /etc/hosts
192.168.20.7 k8s.citizix.local
Il comando join fornito viene utilizzato per aggiungere un nodo di lavoro al cluster.
kubeadm join k8s-cluster.computingforgeeks.com:6443 \
--token sr4l2l.2kvot0pfalh5o4ik \
--discovery-token-ca-cert-hash sha256:c692fb047e15883b575bd6710779dc2c5af8073f7cab460abd181fd3ddb29a18
Esegui il comando seguente sul piano di controllo per vedere se il nodo è entrato a far parte del cluster.
kubectl get nodes
Distribuisci l'applicazione sul cluster