Kubernetes
kubernetes
Installer kubctl :
Sur les distribution debian :
ou pour avoire une version plus récente :sudo apt update && sudo apt install -y apt-transport-https gnupg
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
copier le fichier de configuration du noeux kubernetesse ici /etc/kubernetes/admin.conf puis :
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Note
export KUBECONFIG=/etc/kubernetes/admin.conf ne semble pas fonctionner
Autre distribution voir : kubernetes
K8S
Warning
Attention : L'instance hébergant k8s ne doit pas avoir de swap
Installer kubeadm
Sur une distribution debian :
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
echo "br_netfilter" | sudo tee /etc/modules-load.d/netfilter.conf
echo net.ipv4.ip_forward = 1 | sudo tee /etc/sysctl.conf
sudo sysctl --system
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release apt-transport-https -y
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
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 update
sudo apt install -y kubelet kubeadm kubectl containerd.io -y
sudo rm /etc/containerd/config.toml
sudo apt-mark hold kubelet kubeadm kubectl
sudo containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
sudo reboot
Autre distribution voir : kubernetes
Création d'un "Master Node"
Pour crée le worker node on utilise simplement la commande :
Kubernetes a besoins d'une extention pour le réseau. On peut utiliser flannel pour répondre a ce besoins.
Ajouter un "Worker Node"
Sur le master node, exécutez la commande suivante pour récupérer le "token" et le "caCertHash" nécessaires pour rejoindre le cluster :
kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
Notez cette commande pour l'utiliser plus tard sur les worker nodes.
kubeadm join 192.168.0.10:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
[!DANGER] Remplacez control-plane-host control-plane-port token et hash par les valeurs correspondantes obtenues à l'étape 1.
Sur le master node, vérifiez que les worker nodes ont rejoint le cluster en exécutant la commande suivante :
La sortie devrait afficher la liste de tous les nœuds du cluster, y compris les worker nodes ajoutés récemment.Manager un namespace
Voire les namespace :
supprimer un namespace :
source phenixapp
Faire de la HA
https://tansanrao.com/kubernetes-ha-cluster-with-kubeadm/ https://www.youtube.com/watch?v=Ro2qeYeisZQ https://youtu.be/Zxozz8P_l5M Metal lb
Débuguer pool kubeadm
Voire le status de pool kubernetes :
Voire les logs de conteneur individuelle :
puis :Commande kubadm
Pour afficher le commande pour qu'un noeud rejoind le worker node
Commande kubctl
Commande pour voire les noeuds :
Vérifier que les ressources sont disponibles :
Vérifiez le kube-proxy Pod :
Regarder les logs du pod :
Tranformer un mot de passe kubctl en fichier manifest
exemple :
kubectl create secret docker-registry gitlab-registry \
--docker-server=registry.gitlab.com \
--docker-username=gitlab+deploy-token-3940973 \
--docker-password=xxxxx \
--docker-email=m.roveda@lyon.ort.asso.fr \
--namespace=picshoot
via la commande "get secret" picshoot on peut voire les fichier en base64 :
Dans notre exemple nous allons copier coller le resultat en base 64 dans notre fichier manifest
Voici le secret dans le fichier manifest :
supprimer le secret au préalabe et réapliquer le manifest
Traduire un fichier de Docker en ressources k8s
curl -L https://github.com/kubernetes/kompose/releases/download/v1.26.0/kompose-linux-amd64 -o kompose
chmod +x kompose
sudo mv ./kompose /usr/local/bin/kompose
Exemple d'utilisation qui va output qu'une seul fichier :
Source : Kubernetes