Documentation => Documentation technique + interviews des acteurs du Libre => Discussion démarrée par: Animateur le août 20, 2023, 01:56:09 pm
Titre: [LJP-Infos] Fabriquation de notre nouvelle usine à VM ou plutôt conteneurs
Posté par: Animateur le août 20, 2023, 01:56:09 pm
[LJP-Infos] Fabriquation de notre nouvelle usine à VM ou plutôt conteneurs
Dans cette vidéo, dans un cluster Kubernetes, on va se fabriquer une machine à VMs.
C'est une chose maintenant acquise, les VMs on peut en avoir besoin pour tout un tas d'utilisations. Une simple machine virtuelle peut être créée avec Virtualbox, Vmware player ou Vmware workstation et HyperV tout dépend aussi de l'environnement.
On est alors limité en CPU et surtout en machines, ça prend de la place, ça prend des ressources. Même si avec les clones liées on peut déjà aller bien loin.
Ici, à partir d'un cluster Kubernetes, on va se créer un système qui va proposer des machines virtuelles, qui ne consomment que quelques Mo de RAM à peine et presque (presque) aucune ressources.
Ici, je parle d'usine à machine virtuelles. Bien que ça soit des conteneurs, on va voir comment s'y connecter, tout ça pour différentes distributions, pour l'utilisateur distant, il ne fera pas la différence avec une VM.
Vous retrouverez le fichier ayant servi pour créer les machines ici: https://drive.google.com/file/d/1J2Ky8PejKpo6F8BEojwjE3NvZTSpmWbv/view
Ce fichier donne quelques indications sur la création d'un pod, avec quelques directives mises dans un fichier de script. Il permet de créer un pod debian de test, il propose également quelques commandes pour le faire fonctionner, dupliquer les machines, se connecter, le supprimer...
Il a été typiquement fait pour la vidéo "On se fabrique notre nouvelle usine a vm ( ou plutot usine à conteneurs)" par Ljp-Infos.
Le fichier est disponible ici: https://drive.google.com/file/d/1J2Ky8PejKpo6F8BEojwjE3NvZTSpmWbv/view?usp=share_link
Ljp-Infos le 18/05/2023
# Créer le fichier de pod vide # ############################
mkdir -p /root/yaml cat << EOF > /root/yaml/debian.yaml --- apiVersion: v1 kind: ConfigMap metadata: name: my-configmap data: entrypoint.sh: |- #!/bin/bash apt update apt install htop openssh-server inetutils-ping sudo -y # users and passwords useradd -m -c "Sudo base account" -s /bin/bash loisel useradd -m -c "Sudo base account" -s /bin/bash utilisateur echo "loisel ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers.d/loisel echo "loisel:MyPassword" | chpasswd echo "utilisateur:MyPassword" | chpasswd echo "root:MyPassword" | chpasswd # Démarre et configure le service ssh sed -i 's/#Port 22/Port 22/g' /etc/ssh/sshd_config sed -i 's/#AddressFamily any/AddressFamily any/g' /etc/ssh/sshd_config sed -i 's/#ListenAddress 0.0.0.0/ListenAddress 0.0.0.0/g' /etc/ssh/sshd_config sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/g' /etc/ssh/sshd_config sed -i 's/#PermitTunnel no/PermitTunnel yes/g' /etc/ssh/sshd_config # Add ssh key... mkdir -p /home/loisel/.ssh echo "mettez_ici_votre_clef_publique_rsa_pour_votre_user" > /home/loisel/.ssh/authorized_keys service ssh start # On peut encore améliorer la config dans le pod... cat << EOF >> /etc/bash.bashrc # alias susu="sudo su" alias ll="ls -l" # if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi EOF
# Ajouter le pod kubectl apply -f /root/yaml/debian.yaml
# Lister les pods (si le script est long il FAUT peut-être attendre un peu) kubectl get pods -o wide
# Se connecter au pod on peut l'utiliser quand le pod est "running" kubectl exec -it debian -- /bin/bash
# Supprimer le pod kubectl delete -n default pod debian --force
# On configure le firewal pour accepter les connexions depuis les autres noeuds (à adapter) firewall-cmd --add-source=172.16.0.0/16 --permanent && firewall-cmd --reload
# Et on peut SSH vers les pods en local ssh utilisateur@ip_du_pod
# Pour du ssh depuis on poste distant vers un pod on ajoute la route qui passe par un des noeuds (à adapter) route add 172.16.0.0/16 passerelle 192.168.1.248 # On ajoute "-p" a la commande pour rendre permanent # Pour ce qui est des ressources qu'on voudra limiter, on rajoute à la définition du pod - dans la rubrique containair (on adapte!) resources: limits: memory: 1Gi cpu: 500m requests: memory: 256Mi cpu: 500m # Pour un scipt de créattion des vm (a adapter pour les besoins):
# Test inputs / return info if needed if [ $# -lt 2 ] then echo 'Usage: $0 <name_of_image> <name_of_pod>' fi
case $1 in debian ) cp /root/yaml/debian.yaml /root/yaml/temp_pod.yaml sed -i "s/ name: debian/ name: $2/g" /root/yaml/temp_pod.yaml sed -i "s/ - name: debian/ - name: $2/g" /root/yaml/temp_pod.yaml ;; default ) Echo "No template for this name $1" exit 1 ;; esac # Create new pod kubectl apply -f /root/yaml/temp_pod.yaml > /dev/null sleep 10 kubectl get pod $2 -o wide
# Bon allez (pour ceux qui auront le courage d'arriver ici)... # Pour Centos, Alma, Rocky c'est comme ça qu'on démarre le ssh - remplacer "service sshd start" par:
Le time code: 02:03 Mon environnement 04:17 Conteneur "classique" 10:55 La connexion SSH 14:51 Configurer le firewall, connexions distantes 22:01 Un mot sur le réseau - des machines accessibles partout 28:48 Limiter les ressources 33:43 Avoir plein de machines