بحث

raspberry-piinfrastructure

التثبيت التلقائي لـ Kubernetes 1.13 على Raspberry Pi عبر Ansible

التثبيت التلقائي لـ Kubernetes 1.13 على Raspberry Pi عبر Ansible

تقترح هذه المقالة أتمتة تثبيت Kubernetes 1.13 على Raspberry Pi عبر Ansible باستخدام دور منزلي الصنع.

المتطلبات المسبقة

تثبيت Docker و Kubernetes

استرجاع الدور
طورت دور Ansible لهذه الأتمتة، إليك كيفية استرجاعه :

## 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 Kubernetes
git clone https://gitlab.com/jls42/ansible-rpi-k8s.git roles/ansible-rpi-k8s

لمزيد من التفاصيل راجع الوثائق عن ansible-rpi-k8s

إنشاء ملف الجرد المسمى inventory
في مثال الجرد هذا عدة Raspberry Pi، واحد له ip 192.168.1.190 والآخر له ip 192.168.1.191
في المجموعة الفرعية (هنا rpi-k8s)، يجب إعلان الماستر أولاً

[rpi1]
192.168.1.190 k8s_master=true

[rpi2]
192.168.1.191

[rpi-k8s:children]
rpi1
rpi2

إعداد 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-k8s

نشر Docker و Kubernetes
ستُشغّل الأدوار ansible-rpi-docker و ansible-rpi-k8s بالتتابع.
في حال كان Docker مثبتًا بالفعل، من الممكن تشغيل ansible-rpi-k8s فقط.

export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook -b -i inventory k8s-rpi.yml

والنتيجة:

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=0
192.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.58s
roles/ansible-rpi-docker ---------------------------------------------- 274.09s
setup ------------------------------------------------------------------- 5.41s
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
total ----------------------------------------------------------------- 888.09s
Playbook run took 0 days, 0 hours, 14 minutes, 48 seconds

التحقق

نتصل بـ Raspberry Pi لتأكيد التثبيت الصحيح لـ Kubernetes
(قد لا تكون العقد كلها في حالة “Ready” فورًا، قد يستغرق ذلك بضع دقائق)

jls42@boo:~/rpi$ ssh pi@192.168.1.190
Linux 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 the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Dec  9 02:41:12 2018 from 192.168.1.42
pi@rpi1:~ $ kubectl get nodes -o wide
NAME   STATUS   ROLES    AGE    VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION   CONTAINER-RUNTIME
rpi1   Ready    master   2m3s   v1.13.0   192.168.1.190   <none>        Raspbian GNU/Linux 9 (stretch)   4.14.79-v7+      docker://18.6.1
rpi2   Ready    <none>   85s    v1.13.0   192.168.1.191   <none>        Raspbian GNU/Linux 9 (stretch)   4.14.79-v7+      docker://18.6.1
pi@rpi1:~ $

وبما أن تكوين k8s نُسِخ محليًا، فمن الممكن أيضًا تشغيل kubectl على الجهاز المحلي (إذا كان مثبتًا).

استمتع!

تمت ترجمة هذا المستند من la version fr vers la langue ar en utilisant le modèle gpt-5-mini. لمزيد من المعلومات حول عملية الترجمة، راجع https://gitlab.com/jls42/ai-powered-markdown-translator