2016-05-11 14 views
4

Das ist wie eine Folgefrage von: Recommended way to persistently change kube-env variableskorrekte Art und Weise K8S-User-Startup-Skript zu definieren

Ich spiele herum mit der Möglichkeit, eine K8S-User-Startup-Skript für GKE zu definieren Instanzen (Ich möchte zusätzliche Software für jeden Knoten installieren).

Hinzufügen K8S-User-Startup-Skript auf eine Instanz Gruppenvorlage „Custom Metadata“ funktioniert, aber das von gcloud container clusters upgrade überschrieben, die eine neue Instanz Vorlage ohne die zusätzlichen K8S-user-startup „vererben“ erstellt Skript Metadaten aus der aktuellen Vorlage.

Ich habe auch einen K8S-User-Startup-Skript das Projekt Metadaten hinzuzufügen versucht (ich dachte, dass von allen Instanzen meines Projektes wie beschrieben here vererbt werden würde), aber das wird nicht berücksichtigt.

Was ist die korrekte Methode zum Definieren eines k8s-user-startup-Skripts, das Cluster-Upgrades fortsetzt? Oder, allgemeiner, was ist der gewünschte Weg, um die GKE-Knoten anzupassen?

Antwort

5

Google Container Engine unterstützt keine benutzerdefinierten Startskripts für Knoten.

Wie in Recommended way to persistently change kube-env variables erwähnt, können Sie ein DaemonSet verwenden, um Ihre Knoten anzupassen. Ein DaemonSet, das im privilegierten Modus ausgeführt wird, kann so ziemlich alles tun, was Sie mit einem Startskript tun können, mit dem Vorbehalt, dass es etwas später im Lebenszyklus des Knoten-Bring-ups ausgeführt wird. Da ein DaemonSet auf allen Knoten in Ihrem Cluster ausgeführt wird, wird es automatisch auf alle neuen Knoten angewendet, die sich verbinden (über die Cluster-Größenänderung), und da es ein Kubernetes-API-Objekt ist, wird es bei Betriebssystemaktualisierungen beibehalten.

+0

Danke für Ihre Eingabe! Wird für ein privilegiertes/hostNetwork DaemonSet als gehen. – jayme

+0

Siehe https://github.com/kubernetes/contrib/tree/master/startup-script für ein Beispiel, wie Sie dies mit einem DaemonSet tun können. – Rush

+0

Aber wie man es verwendet, um Kernel-Parameter zu konfigurieren, bevor App ausgeht? Wie: '' ' echo 1024>/proc/sys/net/core/SOMAXCONN Echo nie>/sys/kernel/mm/transparent_hugepage/aktiviert ' '' – Robinho