Eficode-Berater zeigen auf der DevOps World 2018 in San Francisco, wie ihr Kubernetes mit Jenkins nutzen könnt. Erfahrt im Blog vorab, worum es in ihrem Vortrag geht, und taucht tief in die Welt von Kubernetes und Jenkins ein.
Niklas Tanskanen
A problem-solving superhero who is consulting our customers in the DevOps arena, both when it comes to tools and culture.
Kubernetes, die Plattform zur Container-Orchestrierung, wird rasant immer beliebter. Immer mehr Workloads lassen sich auf Kubernetes ausführen. Kubernetes entwickelt sich zu einer zentralen Ebene eurer hyperkonvergenten Infrastruktur.
Wenn ihr Kubernetes in Jenkins als Cloud Provider einrichtet, entsteht eine leistungsstarke Kombination für eure Workloads. Installiert dafür einfach das Kubernetes Plugin für Jenkins. Kubernetes kann eure Jenkins-Workloads ausführen, solange sie in Containern laufen. Container eignen sich hervorragend für Build-Workloads, denn ihr könnt alle Abhängigkeiten eurer Anwendung und des Betriebssystems in einem Container bündeln und ihn überall ausführen.
Stellt euch vor, ihr betreibt in eurem Unternehmen schon seit einiger Zeit einen Kubernetes-Cluster. Anfangs ging es vor allem um einen Proof of Concept, doch inzwischen wird Kubernetes bei euren Entwicklern immer beliebter und ihr müsst euch mit Skalierung und Orchestrierung befassen. Resource Quotas gehören dazu, und jeder verantwortungsvolle Betreiber sollte sie sowohl in Entwicklungs- als auch in Produktionsclustern einrichten. Andernfalls reservieren Nutzer aus Bequemlichkeit alle Ressourcen eures Clusters, ohne sie tatsächlich zu verwenden. Mit Quotas in eurem Cluster könnt ihr steuern, wie viele Ressourcen jedem Namespace zur Verfügung stehen.
Quotas sind bereits eine ausgereifte Kubernetes-Funktion. Ihr könnt sehr granulare Quotas für verschiedene Hardwareressourcen erstellen, etwa für schnelle Festplatten, GPUs oder CPU-Zeit. Außerdem könnt ihr für einen Namespace mehrere Quota-Scopes definieren. So könnt ihr beispielsweise eine Quota für Workloads festlegen, die unbegrenzt laufen sollen, etwa Webserver oder Datenbanken. Oder eine Quota für kurzlebige Workloads wie Builds oder Läufe der Testautomatisierung.
| Scope | Description |
|---|---|
| Terminating | Match pods where .spec.activeDeadlineSeconds >= 0 |
| NotTerminating | Match pods where .spec.activeDeadlineSeconds is nil |
| BestEffort | Match pods that have best effort quality of service. |
| NotBestEffort | Match pods that do not have best effort quality of service. |
Verschiedene Scopes für Kubernetes-Quotas
Da Jenkins vor allem kurze Workloads ausführt, solltet ihr den Quota-Scope „Terminating“ verwenden. Doch wie legt ihr Workloads in Jenkins so fest, dass der richtige Scope genutzt wird?
In Kubernetes müsst ihr dafür .spec.activeDeadlineSeconds festlegen.
Dieselbe Konfiguration ist auch im Jenkinsfile verfügbar, falls ihr keine statischen Konfigurationen verwenden möchtet.
podTemplate(label: 'maven', activeDeadlineSeconds: 180, containers: [
containerTemplate(name: 'maven', image: 'maven:3.5.4-jdk-10-slim')
]) {
// maven magic
}Dies war nur ein kleiner Einblick in die Funktionen des Kubernetes Plugins in Jenkins. Mehr dazu erfahrt ihr in unserem Vortrag auf der Devops World 2018. Dort zeigen wir, wie ihr Kubernetes mit Jenkins nutzen könnt.
- DevOps
- Cloud
Subscribe to our newsletter
Related blogs