Dit artikel beschrijft het automatiseren van de installatie van Kubernetes 1.13 op Raspberry Pi met Ansible en een zelfgemaakte rol.
Vereisten
- Raspbian geïnstalleerd hebben op de doel-Raspberry Pi’s (minstens 2); de procedure staat in een eerder artikel Initialisatie en geautomatiseerde beveiliging van Raspbian op Raspberry Pi
Installatie van Docker + Kubernetes
Ophalen van de rol
Ik heb een Ansible-rol ontwikkeld voor deze automatisering, zo haal je hem binnen:
## Pré-requis Docker (rôle fait maison)git clone https://gitlab.com/jls42/ansible-rpi-docker.git roles/ansible-rpi-docker## Rôle pour l'installation de Kubernetesgit clone https://gitlab.com/jls42/ansible-rpi-k8s.git roles/ansible-rpi-k8sVoor meer details, zie de documentatie van ansible-rpi-k8s
Aanmaken van het inventarisbestand met de naam inventory
In dit voorbeeld-inventaris meerdere Raspberry Pi’s; de ene heeft het IP 192.168.1.190 en de andere 192.168.1.191
In de subgroep (hier rpi-k8s) moet de master als eerste worden opgegeven
[rpi1]192.168.1.190 k8s_master=true
[rpi2]192.168.1.191
[rpi-k8s:children]rpi1rpi2Voorbereiding van het playbook k8s-rpi.yml
---- name: "Installation de Docker sur le Raspberry Pi" hosts: rpi-k8s remote_user: "pi" roles: - roles/ansible-rpi-docker vars: docker_version: 18.06.1~ce~3-0~raspbian
- name: "Installation de k8s sur le Raspberry Pi" hosts: rpi-k8s remote_user: "pi" roles: - roles/ansible-rpi-k8s vars: k8s_version: "1.13.0-00" k8s_master_token: "abcdef.0123456789abcdef" k8s_cluster_group: rpi-k8sUitrol van Docker en Kubernetes
De rollen ansible-rpi-docker en ansible-rpi-k8s worden achtereenvolgens uitgevoerd.
Als Docker al geïnstalleerd is, is het mogelijk alleen ansible-rpi-k8s uit te voeren.
export ANSIBLE_HOST_KEY_CHECKING=Falseansible-playbook -b -i inventory k8s-rpi.ymlDat geeft:
jls42@boo:~/rpi$ ansible-playbook -b -i inventory k8s-rpi.yml
PLAY [Installation de Docker sur le Raspberry Pi] ******************************************************************************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************************************************************************Sunday 09 December 2018 03:26:30 +0100 (0:00:00.051) 0:00:00.051 *******ok: [192.168.1.190]ok: [192.168.1.191]
TASK [roles/ansible-rpi-docker : Installe les paquets nécessaire à l'utilisation d'un dépôt HTTPS] *****************************************************************************************************************************************Sunday 09 December 2018 03:26:33 +0100 (0:00:03.476) 0:00:03.527 *******changed: [192.168.1.190] => (item=[u'apt-transport-https', u'ca-certificates', u'curl', u'gnupg2', u'software-properties-common'])changed: [192.168.1.191] => (item=[u'apt-transport-https', u'ca-certificates', u'curl', u'gnupg2', u'software-properties-common'])
TASK [roles/ansible-rpi-docker : Ajoute la clef officielle du dépôt Docker] ****************************************************************************************************************************************************************Sunday 09 December 2018 03:27:12 +0100 (0:00:39.274) 0:00:42.802 *******changed: [192.168.1.190]changed: [192.168.1.191]
TASK [roles/ansible-rpi-docker : Ajoute le dépôt Docker] ***********************************************************************************************************************************************************************************Sunday 09 December 2018 03:27:17 +0100 (0:00:04.747) 0:00:47.549 *******changed: [192.168.1.190]changed: [192.168.1.191]
TASK [roles/ansible-rpi-docker : Installe le paquet docker-ce] *****************************************************************************************************************************************************************************Sunday 09 December 2018 03:27:27 +0100 (0:00:10.238) 0:00:57.788 *******changed: [192.168.1.190]changed: [192.168.1.191]
TASK [roles/ansible-rpi-docker : Installe python-pip] **************************************************************************************************************************************************************************************Sunday 09 December 2018 03:29:04 +0100 (0:01:36.285) 0:02:34.074 *******changed: [192.168.1.191]changed: [192.168.1.190]
TASK [roles/ansible-rpi-docker : Installe docker-compose via pip] **************************************************************************************************************************************************************************Sunday 09 December 2018 03:30:06 +0100 (0:01:02.641) 0:03:36.715 *******changed: [192.168.1.191]changed: [192.168.1.190]
TASK [roles/ansible-rpi-docker : Configure Docker pour qu'il démarre au boot] **************************************************************************************************************************************************************Sunday 09 December 2018 03:31:03 +0100 (0:00:56.384) 0:04:33.099 *******ok: [192.168.1.190]ok: [192.168.1.191]
TASK [roles/ansible-rpi-docker : Ajoute l'utilisateur pi dans le groupe docker] ************************************************************************************************************************************************************Sunday 09 December 2018 03:31:04 +0100 (0:00:01.075) 0:04:34.175 *******changed: [192.168.1.191]changed: [192.168.1.190]
TASK [roles/ansible-rpi-docker : Supprime la swap] *****************************************************************************************************************************************************************************************Sunday 09 December 2018 03:31:05 +0100 (0:00:01.348) 0:04:35.523 *******changed: [192.168.1.190]changed: [192.168.1.191]PLAY [Installation de k8s sur le Raspberry Pi] *********************************************************************************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************************************************************************Sunday 09 December 2018 03:31:07 +0100 (0:00:02.096) 0:04:37.620 *******ok: [192.168.1.190]ok: [192.168.1.191]
TASK [roles/ansible-rpi-k8s : Installe les paquets nécessaires à l'utilisation d'un dépôt HTTPS] *******************************************************************************************************************************************Sunday 09 December 2018 03:31:09 +0100 (0:00:01.934) 0:04:39.555 *******ok: [192.168.1.190] => (item=[u'apt-transport-https', u'ca-certificates', u'curl', u'gnupg2', u'software-properties-common'])ok: [192.168.1.191] => (item=[u'apt-transport-https', u'ca-certificates', u'curl', u'gnupg2', u'software-properties-common'])
TASK [roles/ansible-rpi-k8s : Supprime la swap] ********************************************************************************************************************************************************************************************Sunday 09 December 2018 03:31:15 +0100 (0:00:05.740) 0:04:45.295 *******ok: [192.168.1.190]ok: [192.168.1.191]
TASK [roles/ansible-rpi-k8s : Active cgroup_memory] ****************************************************************************************************************************************************************************************Sunday 09 December 2018 03:31:16 +0100 (0:00:00.966) 0:04:46.262 *******changed: [192.168.1.190]changed: [192.168.1.191]
TASK [roles/ansible-rpi-k8s : Redémarre] ***************************************************************************************************************************************************************************************************Sunday 09 December 2018 03:31:17 +0100 (0:00:01.032) 0:04:47.295 *******changed: [192.168.1.191]changed: [192.168.1.190]
TASK [roles/ansible-rpi-k8s : Attente suite au redémarrage] ********************************************************************************************************************************************************************************Sunday 09 December 2018 03:31:18 +0100 (0:00:01.667) 0:04:48.962 *******ok: [192.168.1.190]ok: [192.168.1.191]
TASK [roles/ansible-rpi-k8s : Ajoute la clef officielle Kubernetes] ************************************************************************************************************************************************************************Sunday 09 December 2018 03:32:19 +0100 (0:01:00.447) 0:05:49.409 *******changed: [192.168.1.190]changed: [192.168.1.191]
TASK [roles/ansible-rpi-k8s : Ajoute le dépôt stable de Kubernetes] ************************************************************************************************************************************************************************Sunday 09 December 2018 03:32:25 +0100 (0:00:06.282) 0:05:55.692 *******changed: [192.168.1.190]changed: [192.168.1.191]
TASK [roles/ansible-rpi-k8s : Installe kubeadm, kubelet and kubectl] ***********************************************************************************************************************************************************************Sunday 09 December 2018 03:32:45 +0100 (0:00:20.277) 0:06:15.970 *******changed: [192.168.1.190] => (item=[u'kubeadm=1.13.0-00', u'kubelet=1.13.0-00', u'kubectl=1.13.0-00'])changed: [192.168.1.191] => (item=[u'kubeadm=1.13.0-00', u'kubelet=1.13.0-00', u'kubectl=1.13.0-00'])
TASK [roles/ansible-rpi-k8s : Configure kubelet pour qu'il démarre au boot] ****************************************************************************************************************************************************************Sunday 09 December 2018 03:34:25 +0100 (0:01:39.895) 0:07:55.865 *******ok: [192.168.1.191]ok: [192.168.1.190]
TASK [roles/ansible-rpi-k8s : Installe les paquets nécessaires pour l'utilisation du client CIFS] ******************************************************************************************************************************************Sunday 09 December 2018 03:34:26 +0100 (0:00:01.029) 0:07:56.894 *******changed: [192.168.1.191] => (item=[u'cifs-utils', u'util-linux', u'coreutils', u'jq'])changed: [192.168.1.190] => (item=[u'cifs-utils', u'util-linux', u'coreutils', u'jq'])
TASK [roles/ansible-rpi-k8s : Ajout le répertoire d'addons cifs] ***************************************************************************************************************************************************************************Sunday 09 December 2018 03:34:40 +0100 (0:00:13.835) 0:08:10.730 *******changed: [192.168.1.191]changed: [192.168.1.190]
TASK [roles/ansible-rpi-k8s : Télécharge le plugin CIFS] ***********************************************************************************************************************************************************************************Sunday 09 December 2018 03:34:41 +0100 (0:00:01.051) 0:08:11.782 *******changed: [192.168.1.191]changed: [192.168.1.190]TASK [roles/ansible-rpi-k8s : Installe les paquets nécessaires à l'utilisation du client GlusterFS] *********************************************************************************************************************************************************Sunday 09 December 2018 03:34:43 +0100 (0:00:01.740) 0:08:13.522 *******changed: [192.168.1.190] => (item=[u'glusterfs-client'])changed: [192.168.1.191] => (item=[u'glusterfs-client'])
TASK [roles/ansible-rpi-k8s : Définie l'ip du maître] **************************************************************************************************************************************************************************************Sunday 09 December 2018 03:35:16 +0100 (0:00:32.640) 0:08:46.162 *******ok: [192.168.1.190]ok: [192.168.1.191]
TASK [roles/ansible-rpi-k8s : Vérifie si le master a déjà été configuré] *******************************************************************************************************************************************************************Sunday 09 December 2018 03:35:16 +0100 (0:00:00.113) 0:08:46.276 *******skipping: [192.168.1.191]ok: [192.168.1.190]
TASK [roles/ansible-rpi-k8s : Définie l'initialisation du cluster à oui] *******************************************************************************************************************************************************************Sunday 09 December 2018 03:35:17 +0100 (0:00:01.074) 0:08:47.350 *******skipping: [192.168.1.191]ok: [192.168.1.190]
TASK [roles/ansible-rpi-k8s : Définie l'initialisation du cluster à non] *******************************************************************************************************************************************************************Sunday 09 December 2018 03:35:17 +0100 (0:00:00.113) 0:08:47.464 *******skipping: [192.168.1.190]skipping: [192.168.1.191]
TASK [roles/ansible-rpi-k8s : Définie l'initialisation du/des noeud(s)] ********************************************************************************************************************************************************************Sunday 09 December 2018 03:35:17 +0100 (0:00:00.097) 0:08:47.562 *******skipping: [192.168.1.190]ok: [192.168.1.191]
TASK [roles/ansible-rpi-k8s : Initialise le cluster Kubernetes sur le maître] **************************************************************************************************************************************************************Sunday 09 December 2018 03:35:17 +0100 (0:00:00.181) 0:08:47.743 *******skipping: [192.168.1.191]changed: [192.168.1.190]
TASK [roles/ansible-rpi-k8s : Attend la fin de l'initialisation] ***************************************************************************************************************************************************************************Sunday 09 December 2018 03:35:19 +0100 (0:00:01.598) 0:08:49.342 *******skipping: [192.168.1.191]FAILED - RETRYING: Attend la fin de l'initialisation (42 retries left).FAILED - RETRYING: Attend la fin de l'initialisation (41 retries left).FAILED - RETRYING: Attend la fin de l'initialisation (40 retries left).FAILED - RETRYING: Attend la fin de l'initialisation (39 retries left).FAILED - RETRYING: Attend la fin de l'initialisation (38 retries left).FAILED - RETRYING: Attend la fin de l'initialisation (37 retries left).FAILED - RETRYING: Attend la fin de l'initialisation (36 retries left).FAILED - RETRYING: Attend la fin de l'initialisation (35 retries left).FAILED - RETRYING: Attend la fin de l'initialisation (34 retries left).FAILED - RETRYING: Attend la fin de l'initialisation (33 retries left).FAILED - RETRYING: Attend la fin de l'initialisation (32 retries left).changed: [192.168.1.190]
TASK [roles/ansible-rpi-k8s : Crée le répertoire kubernetes /home/pi/.kube/] ***************************************************************************************************************************************************************Sunday 09 December 2018 03:41:02 +0100 (0:05:43.339) 0:14:32.682 *******skipping: [192.168.1.191]changed: [192.168.1.190]
TASK [roles/ansible-rpi-k8s : Copie le fichier /etc/kubernetes/admin.conf vers /home/pi/.kube/config] **************************************************************************************************************************************Sunday 09 December 2018 03:41:03 +0100 (0:00:00.948) 0:14:33.630 *******skipping: [192.168.1.191]changed: [192.168.1.190]
TASK [roles/ansible-rpi-k8s : Récupère la configuration kubernetes dans un répertoire local] ***********************************************************************************************************************************************Sunday 09 December 2018 03:41:04 +0100 (0:00:01.030) 0:14:34.661 *******skipping: [192.168.1.191]changed: [192.168.1.190]TASK [roles/ansible-rpi-k8s : Jointure de(s) noeud(s) avec le maître] **********************************************************************************************************************************************************************Sunday 09 December 2018 03:41:05 +0100 (0:00:01.016) 0:14:35.678 *******skipping: [192.168.1.190]changed: [192.168.1.191]
TASK [roles/ansible-rpi-k8s : Installation des pods réseaux avec Weave] ********************************************************************************************************************************************************************Sunday 09 December 2018 03:41:12 +0100 (0:00:06.567) 0:14:42.245 *******skipping: [192.168.1.191]changed: [192.168.1.190]
PLAY RECAP *********************************************************************************************************************************************************************************************************************************192.168.1.190 : ok=33 changed=23 unreachable=0 failed=0192.168.1.191 : ok=27 changed=18 unreachable=0 failed=0
Sunday 09 December 2018 03:41:18 +0100 (0:00:05.893) 0:14:48.139 *******===============================================================================roles/ansible-rpi-k8s ------------------------------------------------- 608.58sroles/ansible-rpi-docker ---------------------------------------------- 274.09ssetup ------------------------------------------------------------------- 5.41s~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~total ----------------------------------------------------------------- 888.09sPlaybook run took 0 days, 0 hours, 14 minutes, 48 secondsControle
We verbinden met de Raspberry Pi om de correcte installatie van Kubernetes te bevestigen
(de nodes zullen niet meteen allemaal de status “Ready” hebben, dit kan enkele minuten duren)
jls42@boo:~/rpi$ ssh pi@192.168.1.190Linux rpi1 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l
The programs included with the Debian GNU/Linux system are free software;the exact distribution terms for each program are described in theindividual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extentpermitted by applicable law.Last login: Sun Dec 9 02:41:12 2018 from 192.168.1.42pi@rpi1:~ $ kubectl get nodes -o wideNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIMErpi1 Ready master 2m3s v1.13.0 192.168.1.190 <none> Raspbian GNU/Linux 9 (stretch) 4.14.79-v7+ docker://18.6.1rpi2 Ready <none> 85s v1.13.0 192.168.1.191 <none> Raspbian GNU/Linux 9 (stretch) 4.14.79-v7+ docker://18.6.1pi@rpi1:~ $En aangezien de k8s-configuratie lokaal is gekopieerd, is het ook mogelijk kubectl op de lokale machine te draaien (als deze geïnstalleerd is).
Veel plezier!
Dit document is vertaald van de Franse versie naar het Nederlands met behulp van het model gpt-5-mini. Voor meer informatie over het vertaalproces, zie https://gitlab.com/jls42/ai-powered-markdown-translator