Kubernetes est un système open source d'orchestration de conteneurs permettant d'automatiser le déploiement, la mise à l'échelle et la gestion d'applications informatiques.
Avant de commencer, assurez-vous que votre logiciel est à jour
sudo apt apdate
sudo apt upgrade
Installer
Installez les packages suivants sur toutes vos machines :
kubeadm
:la commande pour amorcer le cluster.kubelet
:le composant qui s'exécute sur toutes les machines de votre cluster et effectue des opérations telles que le démarrage des POD et des conteneurs.kubectl
:l'utilitaire de ligne de commande pour parler à votre 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
Confirmer les versions installées
kubectl version --client
kubeadm version
Sortie :
[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"}
Désactivez l'échange.
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a
Configurez sysctl.
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
Installer l'environnement d'exécution Containerd Container
sudo apt-get install -y containerd
Configurer le conteneur et démarrer le service
sudo mkdir -p /etc/containerd
sudo containerd config default > /etc/containerd/config.toml
Activer le service pour démarrer au démarrage et démarrer
sudo systemctl enable --now containerd
# check status
sudo systemctl status containerd
Le service devrait être en cours d'exécution
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"
Initialiser le nœud maître
Activez et démarrez le service kubelet.
sudo systemctl enable --now kubelet
Extraction des images de conteneur requises :
sudo kubeadm config images pull
Définissez le nom DNS du point de terminaison du cluster ou ajoutez un enregistrement à /etc/hosts
fichier.
192.168.20.7 k8s.citizix.local
Créer un cluster :
sudo kubeadm init \
--pod-network-cidr=192.168.0.0/16 \
--control-plane-endpoint=k8s.citizix.local
Lorsque cela est fait, les k8 devraient être opérationnels. Obtenez le fichier d'administration kubeconfig à partir de ce chemin /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
Vérifier l'état du cluster :
kubectl cluster-info
Confirmer que le nœud maître est prêt :
kubectl get nodes -o wide
Des nœuds maîtres supplémentaires peuvent être ajoutés à l'aide de la commande dans la sortie d'installation :
kubeadm join k8s-cluster.computingforgeeks.com:6443 --token sr4l2l.2kvot0pfalh5o4ik \
--discovery-token-ca-cert-hash sha256:c692fb047e15883b575bd6710779dc2c5af8073f7cab460abd181fd3ddb29a18 \
--control-plane
Ajouter des noeuds worker
Une fois le plan de contrôle prêt, vous pouvez ajouter des nœuds de travail au cluster pour exécuter des charges de travail planifiées.
Si l'adresse du point de terminaison n'est pas dans le DNS, ajoutez un enregistrement à /etc/hosts.
$ sudo vim /etc/hosts
192.168.20.7 k8s.citizix.local
La commande join qui a été donnée est utilisée pour ajouter un noeud worker au cluster.
kubeadm join k8s-cluster.computingforgeeks.com:6443 \
--token sr4l2l.2kvot0pfalh5o4ik \
--discovery-token-ca-cert-hash sha256:c692fb047e15883b575bd6710779dc2c5af8073f7cab460abd181fd3ddb29a18
Exécutez la commande ci-dessous sur le plan de contrôle pour voir si le nœud a rejoint le cluster.
kubectl get nodes
Déployer l'application sur le cluster