kubernetes-on-embedded

所属分类:云原生工具
开发工具:Shell
文件大小:667KB
下载次数:0
上传日期:2019-02-13 13:02:08
上 传 者sh-1993
说明:  使用混合嵌入式设备构建kubernetes数据中心
(Build your on kubernetes datacenter with hybrid embedded devices)

文件列表:
LICENSE (11357, 2019-02-13)
ansible.cfg (112, 2019-02-13)
cluster (1451, 2019-02-13)
files (0, 2019-02-13)
files\bootstrap-17.03.sh (3051, 2019-02-13)
files\bootstrap-up.sh (3059, 2019-02-13)
files\bootstrap.sh (2325, 2019-02-13)
files\examples (0, 2019-02-13)
files\examples\alpine.yml (249, 2019-02-13)
files\examples\nginx-deploy.yml (316, 2019-02-13)
files\examples\nginx-service.yml (210, 2019-02-13)
files\examples\nginx.yml (210, 2019-02-13)
images (0, 2019-02-13)
images\EdgeMax-DHCP-configure.png (572283, 2019-02-13)
install_flash.sh (167, 2019-02-13)
kubernetes-up.yml (1504, 2019-02-13)
kubernetes.yml (952, 2019-02-13)
pictures (0, 2019-02-13)
pictures\Kubernetes-systemdesign-raspberrypi-edge.png (45133, 2019-02-13)
pictures\Kubernetes-systemdesign-raspberrypi.graffle (20123, 2019-02-13)
pictures\Kubernetes-systemdesign-raspberrypi.png (99284, 2019-02-13)
reset.yml (490, 2019-02-13)
user-data-example (2255, 2019-02-13)

# Kubernetes-On-Embedded Dies ist das Repo fur unseren Blogpost https://bee42.com/de/blog/tutorials/kubernetes-cluster-on-embedded/, schaut mal rein! ## Kubernetes 1.9 mit Docker 17.03 _Achtung: Mit der Hypriot-Version 1.4.0 gab es einen schwerwiegenden Fehler: Die Machine-ID wurde nicht neu generiert und war deshalb bei allen RPI's identisch. Das fuhrte zu [Problemen](https://stackoverflow.com/questions/49113253/kubernetes-pods-stuck-at-containercreating) mit dem Netzwerk-Layer!_ ![RPI Systemdesign:](pictures/Kubernetes-systemdesign-raspberrypi.png) Alternative kann man den Cluster auch folgendermassen aufbauen: Wir bauen einen kompleten Kubernetes-Cluster auf Embedded-Hardware. Dazu benutzen wir einen EdgeRouterX, 2 WLAN-Router, 2 Switches, ein Intel UP-Board und fur den eigentlichen K8S-Cluster Raspberry Pi's. ![RPI Systemdesign edge:](pictures/Kubernetes-systemdesign-raspberrypi-edge.png) ## Einkaufswagen fullen, bestellen, bezahlen, installieren und Spa haben! Alle Komponenten die Ihr braucht um einen Docker PI-Cluster aufzubauen konnen in der Regel preiswert und zuverlassig bestellt werden. Wir haben uns an der Liste von [Roland Huss](https://ro14nd.de/kubernetes-on-raspberry-pi3) orientiert: Danke Roland :-) Wir haben hier den aktuellsten RPI Modell 3B+ genommen, ein RPI 2 funktioniert aber auch, naturlich mit Abstrichen in der Leistung. Stand 2018-10 ca. 290 Euro | Anzahl | Systemkomponente | Preis | |:-------|:--------------------------------------------------------------|:-----------| | 3 | [Raspberry Pi 3 B+](https://www.amazon.de/dp/B07BDR5PDW) | 3 * 41 EUR | | 3 | [Micro SD Card 32 GB](https://www.amazon.de//dp/B073JWXGNT) | 3 * 8 EUR | | 1 | [WLAN Router](https://www.amazon.de/dp/B01MY5JIJ0) | 1 * 34 EUR | | 4 | [USB Kabel](https://www.amazon.de/dp/B016BEVNK4) | 1 * 7 EUR | | 1 | [USB Stromgerat](https://www.amazon.de/dp/B00PTLSH9G) | 1 * 29 EUR | | 1 | [Gehause](https://www.amazon.de/dp/B00NB1WPEE) | 1 * 10 EUR | | 2 | [Zwischenplatten](https://www.amazon.de/dp/B00NB1WQZW) | 2 * 7 EUR | | 5 | [Ethernet Kabel](https://www.amazon.de/dp/B005VFZ00E) | 1 * 8 EUR | | 1 | [Ethernet 8 Port Switch](https://www.amazon.de/dp/B000092RRM) | 1 * 32 EUR | ### Optionen * Kuhler fur die PI kaufen und installieren * OnOff Shim von Pimoroni installieren oder selber bauen * https://shop.pimoroni.com/products/onoff-shim * http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-OnOff/index.html * Nicht vergessen es wird ein Ethernet Switch und Ethernetkabel benotigt. Die WLAN Verbindungen sind in der Regel zu storanfallig. * https://www.amazon.de/dp/B01MU3WUX1 * https://www.amazon.de/dp/B01N362YPG * POE Switch und POE 3+ Hat installieren. * https://shop.pimoroni.com/products/raspberry-pi-poe-hat * TP-Link-TL-WR902AC-AC750 * https://www.amazon.de/dp/B01MY5JIJ0 * Konfiguration via ROOT WLAN Access Point spart den Edge Router und die zweiten TP Link Access Point. ## Kubernetes 1.12.x mit Docker 18.06.x Stand: 2018-10-06 Wer die aktuelle Docker 18.06 mit dem aktuellen Kubernetes 1.12.x zum laufen bringen mochte, muss etwas in die Trickkisten greifen und das OS Image fur die RPIs selber herstellen. ### Selbsterstellen des Hypriot OS mit aktuallisierten Packages * https://github.com/hypriot/image-builder-rpi Installieren von virtualbox und vagrant mit Homebrew * https://brew.sh/ * http://caskroom.io/ ``` $ brew cask install virtualbox $ brew cask install virtualbox-extension-pack $ brew cask install vagrant ``` ``` $ git clone https://github.com/hypriot/image-builder-rpi $ cd image-builder-rpi $ vagrant up $ export DOCKER_HOST=tcp://127.0.0.1:2375 # check OS version and docker version $ docker info | grep 'Operating System' Operating System: Ubuntu 16.04.5 LTS $ mv versions.config versions-orginal.config $ cat >versions.config <docker-compose.yml <versions.config < ``` __Frage__: Wie bekommt eigentlich heraus welche IP dem PI vom DHCP Server zugeordnet wurde? ``` # install nmap $ brew install nmap $ nmap -sn 192.168.42.0/24 # Durch Euer Netz ersetzen ``` Das Passwort fur den Nutzer __pirate__ lautet: **hypriot**. Im Blog der Hypriot Piraten findet Ihr jede Mengen Erklarungen zum Thema Docker on ARM: * https://blog.hypriot.com/getting-started-with-docker-on-your-arm-device/ * https://hub.docker.com/u/hypriot/ ## Kubernetes-Cluster installieren ### Installation des Kubernetes-Masters Zur Ausfuhrung unseres Installationsscripts auf den einzelen RPIs benutzen wir [Ansible](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html). ``` $ brew install ansible ``` Dafur benotigen wir zunachst ein Inhaltsverzeichnis. Wir haben mehrere Cluster, deshalb ist die Konfiguration in der Datei `cluster` etwas groer angelegt: ``` [cluster-1-master] 192.168.42.11 [cluster-1-nodes] 192.168.42.12 192.168.42.13 [cluster-1:children] cluster-1-master cluster-1-nodes [cluster-1:vars] fqdn_master="bee42-crew-01-001.local" network_address_master="192.168.42.11" [master:children] cluster-1-master [nodes:children] cluster-1-nodes ``` Fur eine K8s Cluster sollten die Maschinen eine fixe IP Adresse besitzen. Wir fixieren also die DHCP Records im Edge Max. ![](images/EdgeMax-DHCP-configure.png) Die Maschinen mussen dann alle rebooted werden. Auf einem MAC kann man den DNS Cache mit folgendem Kommando erneuern: ``` sudo killall -HUP mDNSResponder ``` Ansible verbindet sich per SSH auf die zu verwaltenden Rechner, dort muss also offentlicher SSH-Key hinterlegt sein. Falls Ihr noch keinen habt, hier ein kleines Beispiel: ```bash # Schlussel erzeugen $ ssh-keygen -t ed25519 -C "name@example.org" # Offentlichen Schlussel auf alle RPIs kopieren $ ssh-copy-id pirate@192.168.42.11 $ ssh-copy-id pirate@192.168.42.12 ... # Testen der Maschinenverfugbarkeit : $ export SSH_KEY=~/.ssh/id_ed25519 $ export K8sCLUSTER=cluster-1 $ ansible -u pirate --key=$SSH_KEY -i cluster -l $K8sCLUSTER -m ping all 192.168.42.11 | success >> { "changed": false, "ping": "pong" } 192.168.2.12 | success >> { "changed": false, "ping": "pong" } ``` ### K8s-Cluster erzeugen So, wenn alle Vorbereitungen abgeschlossen sind, kann der Kubernetes-Cluster erzeugt werden. Ein RPI wird zum Master und die restlichen werden als Nodes angeschlossen. ```bash $ export K8sCLUSTER=cluster-1 $ export KUBERNETES_VERSION=1.13.2 $ export DOCKER_VERSION=18.09.1 $ ansible-playbook -u pirate --key=$SSH_KEY -i cluster -l $K8sCLUSTER kubernetes.yml $ ssh 192.168.42.11 $ mkdir -p .kube $ sudo cp /etc/kubernetes/admin.conf .kube/config $ sudo chown -R pirate:pirate .kube/ $ kubectl get nodes NAME STATUS ROLES AGE VERSION bee42-crew-04-001 Ready master 8m53s v1.12.0 bee42-crew-04-002 Ready 6m32s v1.12.0 bee42-crew-04-003 Ready 6m22s v1.12.0 $ kubectl run my-shell --rm -i --tty --image alpine -- /bin/sh > ls ``` ``` ssh sudo useradd -m -p hypriot -s /bin/bash pirate sudo usermod -aG sudo pirate exit ssh-copy-id -i $SSH_KEY pirate@192.168.42.35 ``` I2C: * http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_I2C.html __Todo__: * Kopieren der Images eines Release in eine Registry * Installation der PI's auf der Basis dieser Registry * Einrichten eines Mirrors * Einrichten eines DNS Server fur alle Cluster * Test mit einem Unify Router via Ethernet * WLAN Router nur fur Crew * Test mit weiteren AccessPoints * DHCP? * Loadbalancer * Metall LB * https://medium.com/@JockDaRock/kubernetes-metal-lb-for-on-prem-baremetal-cluster-in-10-minutes-c2eaeb3fe813 * External DNS * Noip Dynamic DNS ### Cluster vernichten Manchmal mochte man den Cluster abreissen und vielleicht in einer anderen Version neu bauen, deshalb gibt es auch ein Reset-Playbook: ```bash $ ansible-playbook -u pirate --key=$SSH_KEY -i cluster -l $K8sCLUSTER reset.yml ``` __TIPP__: Phonix aus der Asche entstehen lassen Wer einen wirklich unbelastete Maschine benotigt, sollte allerdings lieber die SD Karte flashen und den RPI neu starten. ## Trouble on arm*** * https://github.com/kubernetes/kubernetes/issues/******9 * https://github.com/kubernetes/kubernetes/pull/6***58/files ``` --audit-log-maxage=30 \ --audit-log-maxbackup=3 \ --audit-log-maxsize=100 \ --authorization-mode=Node,RBAC \ --enable-swagger-ui=true \ --event-ttl=1h \ --insecure-bind-address=127.0.0.1 \ --runtime-config=rbac.authorization.k8s.io/v1alpha1 \ --v=2 ``` Liebe Grue
Peter * https://gist.github.com/alexellis/fdbc90de7691a1b9edb545c17da2d975 * https://www.trion.de/news/2018/07/06/kubernetes-raspberry-pi.html

近期下载者

相关文件


收藏者