M3s ist unser Apache Mesos Framework um multiple Kubernetes Clusters sehr schnell, einfach und flexibel zu betreiben.
In nur wenigen Schritten läßt sich Kubernetes auf einen bestehenden Apache Mesos Stack starten.
1) In diesem Beispiel nutzen wir die vor kompilierte Binary Version von M3s. Die aktuellste Entwickler Version findet man in unserem Github Repository als Artifact unter dem jeweiligen “Binary Build”. Es lohnt sich für Tests diese zu verwenden.
2) M3s benötigt einige Parameter damit sich M3s mit Mesos verbinden kann:
export MESOS_USERNAME=
export MESOS_PASSWORD=
export MESOS_MASTER=
export MESOS_SSL=true
export LOGLEVEL=DEBUG
export AUTH_USERNAME=<HIER EINEN USERNAMEN FUER DAS FRAMEWORK AUSDENKEN>
export AUTH_PASSWORD=<HIER EIN PASSWORT FUER DAS FRAMEWORK AUSDENKEN>
export K3S_TOKEN=<EIN TOKEN: Z.B: GENERIEREN MIT pwgen 33 1 >
export BOOTSTRAP_URL=https://raw.githubusercontent.com/AVENTER-UG/mesos-m3s/master/bootstrap/bootstrap.sh
export K3S_AGENT_LABELS=[{"key":"traefik.enable","value":"true"},{"key":"traefik.http.routers.m3s.entrypoints","value":"web"},{"key":"traefik.http.routers.m3s.service","value":"m3s-http"},{"key":"traefik.http.routers.m3s.rule","value":"HostRegexp(`example.com`, `{subdomain:[a-z]+}.example.com`)"}]
Die Variable K3S_AGENT_LABELS gibt die Möglichkeit, Labels für Traefik oder andere an Mesos verbundene Loadbalancer zu erstellen. In dem hier aufgeführten Beispiel sind es Labels für unseren Traefik Provider.
3) Nun kann M3s gestartet werden:
./mesos-m3s
Nach kurzer Zeit tauchen in der Mesos GUI die entsprechenden M3s Tasks auf:
4) Mit dem M3s Mesos CLI Plugin können wir uns die die benötigte Kubernetes Konfiguration exportieren:
mesos m3s list
ID Active WebUI Name
2f0fc78c-bf81-4fe0-8720-e27ba217adae-0004 True http://andreas-pc:10000 m3s
mesos m3s kubeconfig 2f0fc78c-bf81-4fe0-8720-e27ba217adae-0004 > ~/.kube/config
Anschließend stehen alle kubectl
Kommandos zur Verfügung
kubectl get nodes
NAME STATUS ROLES AGE VERSION
k3sagent0.weave.local-170d0b36 Ready <none> 4m5s v1.21.1+k3s1
k3sserver.weave.local Ready control-plane,master 5m7s v1.21.1+k3s1
Steht eine funktionierende mesos cli nicht zur verfügung, können wir die kubeconfig auch mithilfe von curl
exportieren:
curl -X GET http://127.0.0.1:10000/v0/server/config
Als IP Adresse wird die vom Framework angegeben. Wurde die Variable AUTH_USERNAME/PASSWORD gesetzt, sind diese curl mit zuteilen.
5) Zugriff auf das Kubernetes Dashboard:
kubectl -n kubernetes-dashboard describe secret admin-user-token | grep '^token'
kubectl proxy