Merge branch 'master' into remove_kubectl_run_command_deprecated_en
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
DOCKER = docker
|
DOCKER ?= docker
|
||||||
HUGO_VERSION = $(shell grep ^HUGO_VERSION netlify.toml | tail -n 1 | cut -d '=' -f 2 | tr -d " \"\n")
|
HUGO_VERSION = $(shell grep ^HUGO_VERSION netlify.toml | tail -n 1 | cut -d '=' -f 2 | tr -d " \"\n")
|
||||||
DOCKER_IMAGE = kubernetes-hugo
|
DOCKER_IMAGE = kubernetes-hugo
|
||||||
DOCKER_RUN = $(DOCKER) run --rm --interactive --tty --volume $(CURDIR):/src
|
DOCKER_RUN = $(DOCKER) run --rm --interactive --tty --volume $(CURDIR):/src
|
||||||
|
|||||||
@@ -124,6 +124,7 @@ aliases:
|
|||||||
- girikuncoro
|
- girikuncoro
|
||||||
- irvifa
|
- irvifa
|
||||||
- wahyuoi
|
- wahyuoi
|
||||||
|
- phanama
|
||||||
sig-docs-it-owners: # Admins for Italian content
|
sig-docs-it-owners: # Admins for Italian content
|
||||||
- fabriziopandini
|
- fabriziopandini
|
||||||
- mattiaperi
|
- mattiaperi
|
||||||
|
|||||||
+16
-5
@@ -23,6 +23,14 @@ disableLanguages = ["hi", "no"]
|
|||||||
|
|
||||||
[markup]
|
[markup]
|
||||||
[markup.goldmark]
|
[markup.goldmark]
|
||||||
|
[markup.goldmark.extensions]
|
||||||
|
definitionList = true
|
||||||
|
table = true
|
||||||
|
typographer = false
|
||||||
|
[markup.goldmark.parser]
|
||||||
|
attribute = true
|
||||||
|
autoHeadingID = true
|
||||||
|
autoHeadingIDType = "blackfriday"
|
||||||
[markup.goldmark.renderer]
|
[markup.goldmark.renderer]
|
||||||
unsafe = true
|
unsafe = true
|
||||||
[markup.highlight]
|
[markup.highlight]
|
||||||
@@ -35,6 +43,10 @@ disableLanguages = ["hi", "no"]
|
|||||||
noClasses = true
|
noClasses = true
|
||||||
style = "emacs"
|
style = "emacs"
|
||||||
tabWidth = 4
|
tabWidth = 4
|
||||||
|
[markup.tableOfContents]
|
||||||
|
endLevel = 2
|
||||||
|
ordered = false
|
||||||
|
startLevel = 2
|
||||||
|
|
||||||
[frontmatter]
|
[frontmatter]
|
||||||
date = ["date", ":filename", "publishDate", "lastmod"]
|
date = ["date", ":filename", "publishDate", "lastmod"]
|
||||||
@@ -82,11 +94,10 @@ nextUrl = "https://kubernetes-io-vnext-staging.netlify.com/"
|
|||||||
githubWebsiteRepo = "github.com/kubernetes/website"
|
githubWebsiteRepo = "github.com/kubernetes/website"
|
||||||
githubWebsiteRaw = "raw.githubusercontent.com/kubernetes/website"
|
githubWebsiteRaw = "raw.githubusercontent.com/kubernetes/website"
|
||||||
|
|
||||||
# param for displaying an announcement block on every page; see PR #16210
|
# param for displaying an announcement block on every page.
|
||||||
announcement = false
|
# See /i18n/en.toml for message text and title.
|
||||||
# announcement_message is only displayed when announcement = true; update with your specific message
|
announcement = true
|
||||||
announcement_message = "The Kubernetes Documentation team would like your feedback! Please take a <a href='https://www.surveymonkey.com/r/8R237FN' target='_blank'>short survey</a> so we can improve the Kubernetes online documentation."
|
announcement_bg = "#000000" #choose a dark color – text is white
|
||||||
|
|
||||||
|
|
||||||
[params.pushAssets]
|
[params.pushAssets]
|
||||||
css = [
|
css = [
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
---
|
---
|
||||||
title: Konzepte
|
title: Konzepte
|
||||||
main_menu: true
|
main_menu: true
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 40
|
weight: 40
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Im Abschnitt Konzepte erfahren Sie mehr über die Bestandteile des Kubernetes-Systems und die Abstraktionen, die Kubernetes zur Verwaltung Ihres Clusters zur Verfügung stellt. Sie erhalten zudem ein tieferes Verständnis der Funktionsweise von Kubernetes.
|
Im Abschnitt Konzepte erfahren Sie mehr über die Bestandteile des Kubernetes-Systems und die Abstraktionen, die Kubernetes zur Verwaltung Ihres Clusters zur Verfügung stellt. Sie erhalten zudem ein tieferes Verständnis der Funktionsweise von Kubernetes.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Überblick
|
## Überblick
|
||||||
|
|
||||||
@@ -65,11 +65,12 @@ Die Nodes in einem Cluster sind die Maschinen (VMs, physische Server usw.), auf
|
|||||||
|
|
||||||
* [Anmerkungen](/docs/concepts/overview/working-with-objects/annotations/)
|
* [Anmerkungen](/docs/concepts/overview/working-with-objects/annotations/)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
Wenn Sie eine Konzeptseite schreiben möchten, lesen Sie [Seitenvorlagen verwenden](/docs/home/contribute/page-templates/)
|
Wenn Sie eine Konzeptseite schreiben möchten, lesen Sie [Seitenvorlagen verwenden](/docs/home/contribute/page-templates/)
|
||||||
für Informationen zum Konzeptseitentyp und zur Dokumentations Vorlage.
|
für Informationen zum Konzeptseitentyp und zur Dokumentations Vorlage.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
title: Zugrunde liegende Konzepte des Cloud Controller Manager
|
title: Zugrunde liegende Konzepte des Cloud Controller Manager
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 30
|
weight: 30
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
Das Konzept des Cloud Controller Managers (CCM) (nicht zu verwechseln mit der Binärdatei) wurde ursprünglich entwickelt, um Cloud-spezifischen Anbieter Code und den Kubernetes Kern unabhängig voneinander entwickeln zu können. Der Cloud Controller Manager läuft zusammen mit anderen Master Komponenten wie dem Kubernetes Controller Manager, dem API-Server und dem Scheduler auf dem Host. Es kann auch als Kubernetes Addon gestartet werden, in diesem Fall läuft er auf Kubernetes.
|
Das Konzept des Cloud Controller Managers (CCM) (nicht zu verwechseln mit der Binärdatei) wurde ursprünglich entwickelt, um Cloud-spezifischen Anbieter Code und den Kubernetes Kern unabhängig voneinander entwickeln zu können. Der Cloud Controller Manager läuft zusammen mit anderen Master Komponenten wie dem Kubernetes Controller Manager, dem API-Server und dem Scheduler auf dem Host. Es kann auch als Kubernetes Addon gestartet werden, in diesem Fall läuft er auf Kubernetes.
|
||||||
|
|
||||||
Das Design des Cloud Controller Managers basiert auf einem Plugin Mechanismus, der es neuen Cloud Anbietern ermöglicht, sich mit Kubernetes einfach über Plugins zu integrieren. Es gibt Pläne für die Einbindung neuer Cloud Anbieter auf Kubernetes und für die Migration von Cloud Anbietern vom alten Modell auf das neue CCM-Modell.
|
Das Design des Cloud Controller Managers basiert auf einem Plugin Mechanismus, der es neuen Cloud Anbietern ermöglicht, sich mit Kubernetes einfach über Plugins zu integrieren. Es gibt Pläne für die Einbindung neuer Cloud Anbieter auf Kubernetes und für die Migration von Cloud Anbietern vom alten Modell auf das neue CCM-Modell.
|
||||||
@@ -15,10 +15,10 @@ Die Architektur eines Kubernetes Clusters ohne den Cloud Controller Manager sieh
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Design
|
## Design
|
||||||
|
|
||||||
@@ -235,4 +235,4 @@ Die folgenden Cloud Anbieter haben CCMs implementiert:
|
|||||||
|
|
||||||
Eine vollständige Anleitung zur Konfiguration und zum Betrieb des CCM findest du [hier](/docs/tasks/administer-cluster/running-cloud-controller/#cloud-controller-manager).
|
Eine vollständige Anleitung zur Konfiguration und zum Betrieb des CCM findest du [hier](/docs/tasks/administer-cluster/running-cloud-controller/#cloud-controller-manager).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
---
|
---
|
||||||
title: Master-Node Kommunikation
|
title: Master-Node Kommunikation
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 20
|
weight: 20
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Dieses Dokument katalogisiert die Kommunikationspfade zwischen dem Master (eigentlich dem Apiserver) und des Kubernetes-Clusters.
|
Dieses Dokument katalogisiert die Kommunikationspfade zwischen dem Master (eigentlich dem Apiserver) und des Kubernetes-Clusters.
|
||||||
Die Absicht besteht darin, Benutzern die Möglichkeit zu geben, ihre Installation so anzupassen, dass die Netzwerkkonfiguration so abgesichert wird, dass der Cluster in einem nicht vertrauenswürdigen Netzwerk (oder mit vollständig öffentlichen IP-Adressen eines Cloud-Providers) ausgeführt werden kann.
|
Die Absicht besteht darin, Benutzern die Möglichkeit zu geben, ihre Installation so anzupassen, dass die Netzwerkkonfiguration so abgesichert wird, dass der Cluster in einem nicht vertrauenswürdigen Netzwerk (oder mit vollständig öffentlichen IP-Adressen eines Cloud-Providers) ausgeführt werden kann.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Cluster zum Master
|
## Cluster zum Master
|
||||||
|
|
||||||
@@ -69,4 +69,4 @@ Dieser Tunnel stellt sicher, dass der Datenverkehr nicht außerhalb des Netzwerk
|
|||||||
|
|
||||||
SSH-Tunnel werden zur Zeit nicht unterstützt. Sie sollten also nicht verwendet werden, sei denn, man weiß, was man tut. Ein Ersatz für diesen Kommunikationskanal wird entwickelt.
|
SSH-Tunnel werden zur Zeit nicht unterstützt. Sie sollten also nicht verwendet werden, sei denn, man weiß, was man tut. Ein Ersatz für diesen Kommunikationskanal wird entwickelt.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
title: Nodes
|
title: Nodes
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Ein Knoten (Node in Englisch) ist eine Arbeitsmaschine in Kubernetes, früher als `minion` bekannt. Ein Node
|
Ein Knoten (Node in Englisch) ist eine Arbeitsmaschine in Kubernetes, früher als `minion` bekannt. Ein Node
|
||||||
kann je nach Cluster eine VM oder eine physische Maschine sein. Jeder Node enthält
|
kann je nach Cluster eine VM oder eine physische Maschine sein. Jeder Node enthält
|
||||||
@@ -13,10 +13,10 @@ und wird von den Master-Komponenten verwaltet.
|
|||||||
Die Dienste auf einem Node umfassen die [Container Runtime](/docs/concepts/overview/components/#node-components), das Kubelet und den Kube-Proxy.
|
Die Dienste auf einem Node umfassen die [Container Runtime](/docs/concepts/overview/components/#node-components), das Kubelet und den Kube-Proxy.
|
||||||
Weitere Informationen finden Sie im Abschnitt Kubernetes Node in der Architekturdesign-Dokumentation.
|
Weitere Informationen finden Sie im Abschnitt Kubernetes Node in der Architekturdesign-Dokumentation.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Node Status
|
## Node Status
|
||||||
|
|
||||||
@@ -244,4 +244,4 @@ Wenn Sie Ressourcen explizit für Nicht-Pod-Prozesse reservieren möchten, folge
|
|||||||
Node ist eine Top-Level-Ressource in der Kubernetes-REST-API. Weitere Details zum API-Objekt finden Sie unter:
|
Node ist eine Top-Level-Ressource in der Kubernetes-REST-API. Weitere Details zum API-Objekt finden Sie unter:
|
||||||
[Node API object](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#node-v1-core).
|
[Node API object](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#node-v1-core).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
---
|
---
|
||||||
title: Addons Installieren
|
title: Addons Installieren
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
|
|
||||||
Add-Ons erweitern die Funktionalität von Kubernetes.
|
Add-Ons erweitern die Funktionalität von Kubernetes.
|
||||||
@@ -12,10 +12,10 @@ Diese Seite gibt eine Übersicht über einige verfügbare Add-Ons und verweist a
|
|||||||
|
|
||||||
Die Add-Ons in den einzelnen Kategorien sind alphabetisch sortiert - Die Reihenfolge impliziert keine bevorzugung einzelner Projekte.
|
Die Add-Ons in den einzelnen Kategorien sind alphabetisch sortiert - Die Reihenfolge impliziert keine bevorzugung einzelner Projekte.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Networking und Network Policy
|
## Networking und Network Policy
|
||||||
|
|
||||||
@@ -53,4 +53,4 @@ Es gibt einige weitere Add-Ons die in dem abgekündigten [cluster/addons](https:
|
|||||||
|
|
||||||
Add-Ons die ordentlich gewartet werden dürfen gerne hier aufgezählt werden. Wir freuen uns auf PRs!
|
Add-Ons die ordentlich gewartet werden dürfen gerne hier aufgezählt werden. Wir freuen uns auf PRs!
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
---
|
---
|
||||||
title: Controller Manager Metriken
|
title: Controller Manager Metriken
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 100
|
weight: 100
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
Controller Manager Metriken liefern wichtige Erkenntnisse über die Leistung und den Zustand von den Controller Managern.
|
Controller Manager Metriken liefern wichtige Erkenntnisse über die Leistung und den Zustand von den Controller Managern.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
## Was sind Controller Manager Metriken
|
## Was sind Controller Manager Metriken
|
||||||
|
|
||||||
Die Kennzahlen des Controller Managers liefert wichtige Erkenntnisse über die Leistung und den Zustand des Controller Managers.
|
Die Kennzahlen des Controller Managers liefert wichtige Erkenntnisse über die Leistung und den Zustand des Controller Managers.
|
||||||
@@ -38,4 +38,3 @@ Die Metriken werden im [Prometheus Format](https://prometheus.io/docs/instrument
|
|||||||
|
|
||||||
In einer Produktionsumgebung können Sie Prometheus oder einen anderen Metrik Scraper konfigurieren, um diese Metriken regelmäßig zu sammeln und in einer Art Zeitreihen Datenbank verfügbar zu machen.
|
In einer Produktionsumgebung können Sie Prometheus oder einen anderen Metrik Scraper konfigurieren, um diese Metriken regelmäßig zu sammeln und in einer Art Zeitreihen Datenbank verfügbar zu machen.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
---
|
---
|
||||||
title: Proxies in Kubernetes
|
title: Proxies in Kubernetes
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 90
|
weight: 90
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
Auf dieser Seite werden die im Kubernetes verwendeten Proxies erläutert.
|
Auf dieser Seite werden die im Kubernetes verwendeten Proxies erläutert.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Proxies
|
## Proxies
|
||||||
|
|
||||||
@@ -61,4 +61,3 @@ Kubernetes Benutzer müssen sich in der Regel um nichts anderes als die ersten b
|
|||||||
|
|
||||||
Proxies haben die Möglichkeit der Umleitung (redirect) ersetzt. Umleitungen sind veraltet.
|
Proxies haben die Möglichkeit der Umleitung (redirect) ersetzt. Umleitungen sind veraltet.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
---
|
---
|
||||||
title: Images
|
title: Images
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Sie erstellen ihr Docker Image und laden es in eine Registry hoch, bevor es in einem Kubernetes Pod referenziert werden kann.
|
Sie erstellen ihr Docker Image und laden es in eine Registry hoch, bevor es in einem Kubernetes Pod referenziert werden kann.
|
||||||
|
|
||||||
Die `image` Eigenschaft eines Containers unterstüzt die gleiche Syntax wie die des `docker` Kommandos, inklusive privater Registries und Tags.
|
Die `image` Eigenschaft eines Containers unterstüzt die gleiche Syntax wie die des `docker` Kommandos, inklusive privater Registries und Tags.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Aktualisieren von Images
|
## Aktualisieren von Images
|
||||||
|
|
||||||
@@ -334,7 +334,7 @@ Es gibt eine Anzahl an Lösungen um eigene Registries zu konfigurieren, hier sin
|
|||||||
- Generieren die Registry - Zugriffsdaten für jeden Mandanten, abgelegt in einem Secret das in jedem Mandanten - Namespace vorhanden ist.
|
- Generieren die Registry - Zugriffsdaten für jeden Mandanten, abgelegt in einem Secret das in jedem Mandanten - Namespace vorhanden ist.
|
||||||
- Der Mandant fügt dieses Sercret zu den imagePullSecrets in jedem seiner Namespace hinzu.
|
- Der Mandant fügt dieses Sercret zu den imagePullSecrets in jedem seiner Namespace hinzu.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
Falls die Zugriff auf mehrere Registries benötigen, können sie ein Secret für jede Registry erstellen, Kubelet wird jedwede `imagePullSecrets` in einer einzelnen `.docker/config.json` zusammenfassen.
|
Falls die Zugriff auf mehrere Registries benötigen, können sie ein Secret für jede Registry erstellen, Kubelet wird jedwede `imagePullSecrets` in einer einzelnen `.docker/config.json` zusammenfassen.
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
title: Konzept Dokumentations-Vorlage
|
title: Konzept Dokumentations-Vorlage
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
toc_hide: true
|
toc_hide: true
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
Stellen Sie auch sicher [einen Eintrag im Inhaltsverzeichnis](/docs/home/contribute/write-new-topic/#creating-an-entry-in-the-table-of-contents) für Ihr neues Dokument zu erstellen.
|
Stellen Sie auch sicher [einen Eintrag im Inhaltsverzeichnis](/docs/home/contribute/write-new-topic/#creating-an-entry-in-the-table-of-contents) für Ihr neues Dokument zu erstellen.
|
||||||
@@ -12,9 +12,9 @@ Stellen Sie auch sicher [einen Eintrag im Inhaltsverzeichnis](/docs/home/contrib
|
|||||||
|
|
||||||
Diese Seite erklärt ...
|
Diese Seite erklärt ...
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Verstehen ...
|
## Verstehen ...
|
||||||
|
|
||||||
@@ -24,15 +24,16 @@ Kubernetes bietet ...
|
|||||||
|
|
||||||
Benutzen Sie ...
|
Benutzen Sie ...
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
**[Optionaler Bereich]**
|
**[Optionaler Bereich]**
|
||||||
|
|
||||||
* Lernen Sie mehr über [ein neues Thema schreiben](/docs/home/contribute/write-new-topic/).
|
* Lernen Sie mehr über [ein neues Thema schreiben](/docs/home/contribute/write-new-topic/).
|
||||||
* Besuchen Sie [Seitenvorlagen verwenden - Konzeptvorlage](/docs/home/contribute/page-templates/#concept_template) wie Sie diese Vorlage verwenden.
|
* Besuchen Sie [Seitenvorlagen verwenden - Konzeptvorlage](/docs/home/contribute/page-templates/#concept_template) wie Sie diese Vorlage verwenden.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
---
|
---
|
||||||
title: Kubernetes Komponenten
|
title: Kubernetes Komponenten
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 20
|
weight: 20
|
||||||
card:
|
card:
|
||||||
name: concepts
|
name: concepts
|
||||||
weight: 20
|
weight: 20
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
In diesem Dokument werden die verschiedenen binären Komponenten beschrieben, die zur Bereitstellung eines funktionsfähigen Kubernetes-Clusters erforderlich sind.
|
In diesem Dokument werden die verschiedenen binären Komponenten beschrieben, die zur Bereitstellung eines funktionsfähigen Kubernetes-Clusters erforderlich sind.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
## Master-Komponenten
|
## Master-Komponenten
|
||||||
|
|
||||||
Master-Komponenten stellen die Steuerungsebene des Clusters bereit. Master-Komponenten treffen globale Entscheidungen über den Cluster (z. B. Zeitplanung) und das Erkennen und Reagieren auf Clusterereignisse (Starten eines neuen Pods, wenn das `replicas`-Feld eines Replikationscontrollers nicht zufriedenstellend ist).
|
Master-Komponenten stellen die Steuerungsebene des Clusters bereit. Master-Komponenten treffen globale Entscheidungen über den Cluster (z. B. Zeitplanung) und das Erkennen und Reagieren auf Clusterereignisse (Starten eines neuen Pods, wenn das `replicas`-Feld eines Replikationscontrollers nicht zufriedenstellend ist).
|
||||||
@@ -107,6 +107,6 @@ Von Kubernetes gestartete Container schließen diesen DNS-Server automatisch in
|
|||||||
|
|
||||||
Ein [Cluster-level logging](/docs/concepts/cluster-administration/logging/) Mechanismus ist für das Speichern von Containerprotokollen in einem zentralen Protokollspeicher mit Such- / Browsing-Schnittstelle verantwortlich.
|
Ein [Cluster-level logging](/docs/concepts/cluster-administration/logging/) Mechanismus ist für das Speichern von Containerprotokollen in einem zentralen Protokollspeicher mit Such- / Browsing-Schnittstelle verantwortlich.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
---
|
---
|
||||||
title: Was ist Kubernetes?
|
title: Was ist Kubernetes?
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
card:
|
card:
|
||||||
name: concepts
|
name: concepts
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
Diese Seite ist eine Übersicht über Kubernetes.
|
Diese Seite ist eine Übersicht über Kubernetes.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
Kubernetes ist eine portable, erweiterbare Open-Source-Plattform zur Verwaltung von
|
Kubernetes ist eine portable, erweiterbare Open-Source-Plattform zur Verwaltung von
|
||||||
containerisierten Arbeitslasten und Services, die sowohl die deklarative Konfiguration als auch die Automatisierung erleichtert.
|
containerisierten Arbeitslasten und Services, die sowohl die deklarative Konfiguration als auch die Automatisierung erleichtert.
|
||||||
@@ -160,11 +160,12 @@ Der Name **Kubernetes** stammt aus dem Griechischen, bedeutet *Steuermann* oder
|
|||||||
[cybernetic](http://www.etymonline.com/index.php?term=cybernetics). *K8s*
|
[cybernetic](http://www.etymonline.com/index.php?term=cybernetics). *K8s*
|
||||||
ist eine Abkürzung, die durch Ersetzen der 8 Buchstaben "ubernete" mit "8" abgeleitet wird.
|
ist eine Abkürzung, die durch Ersetzen der 8 Buchstaben "ubernete" mit "8" abgeleitet wird.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* [Bereit loszulegen](/docs/setup/)?
|
* [Bereit loszulegen](/docs/setup/)?
|
||||||
* Weitere Einzelheiten finden Sie in der [Kubernetes Dokumentation](/docs/home/).
|
* Weitere Einzelheiten finden Sie in der [Kubernetes Dokumentation](/docs/home/).
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
---
|
---
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
title: Zur Kubernets-Dokumentation beitragen
|
title: Zur Kubernets-Dokumentation beitragen
|
||||||
linktitle: Mitmachen
|
linktitle: Mitmachen
|
||||||
main_menu: true
|
main_menu: true
|
||||||
weight: 80
|
weight: 80
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Wenn Sie an der Dokumentation oder der Website von Kubernetes mitwirken möchten, freuen wir uns über Ihre Hilfe!
|
Wenn Sie an der Dokumentation oder der Website von Kubernetes mitwirken möchten, freuen wir uns über Ihre Hilfe!
|
||||||
Jeder kann seinen Beitrag leisten, unabhängig davon ob Sie neu im Projekt sind oder schon lange dabei sind, und ob Sie sich als
|
Jeder kann seinen Beitrag leisten, unabhängig davon ob Sie neu im Projekt sind oder schon lange dabei sind, und ob Sie sich als
|
||||||
@@ -15,7 +15,7 @@ Entwickler, Endbenutzer oder einfach jemanden, der es einfach nicht aushält, Ti
|
|||||||
Weitere Möglichkeiten, sich in der Kubernetes-Community zu engagieren oder mehr über uns zu erfahren, finden Sie auf der [Kubernetes-Community-Seite](/community/).
|
Weitere Möglichkeiten, sich in der Kubernetes-Community zu engagieren oder mehr über uns zu erfahren, finden Sie auf der [Kubernetes-Community-Seite](/community/).
|
||||||
Informationen zum Handbuch zur Dokumentation von Kubernetes finden Sie im [Gestaltungshandbuch](/docs/contribute/style/style-guide/).
|
Informationen zum Handbuch zur Dokumentation von Kubernetes finden Sie im [Gestaltungshandbuch](/docs/contribute/style/style-guide/).
|
||||||
|
|
||||||
{{% capture body %}}
|
<!-- body -->
|
||||||
|
|
||||||
## Arten von Mitwirkenden
|
## Arten von Mitwirkenden
|
||||||
|
|
||||||
@@ -59,4 +59,4 @@ Dies ist keine vollständige Liste von Möglichkeiten, wie Sie zur Kubernetes-Do
|
|||||||
- Verbesserungsvorschläge für Dokumentprüfungen vorschlagen
|
- Verbesserungsvorschläge für Dokumentprüfungen vorschlagen
|
||||||
- Vorschläge für Verbesserungen der Kubernetes-Website oder anderer Tools
|
- Vorschläge für Verbesserungen der Kubernetes-Website oder anderer Tools
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Lokalisierung der Kubernetes Dokumentation
|
title: Lokalisierung der Kubernetes Dokumentation
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 50
|
weight: 50
|
||||||
card:
|
card:
|
||||||
name: mitarbeiten
|
name: mitarbeiten
|
||||||
@@ -8,13 +8,13 @@ card:
|
|||||||
title: Übersetzen der Dokumentation
|
title: Übersetzen der Dokumentation
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Diese Seite zeigt dir wie die Dokumentation für verschiedene Sprachen [lokalisiert](https://blog.mozilla.org/l10n/2011/12/14/i18n-vs-l10n-whats-the-diff/) wird.
|
Diese Seite zeigt dir wie die Dokumentation für verschiedene Sprachen [lokalisiert](https://blog.mozilla.org/l10n/2011/12/14/i18n-vs-l10n-whats-the-diff/) wird.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Erste Schritte
|
## Erste Schritte
|
||||||
|
|
||||||
@@ -277,13 +277,14 @@ SIG Docs begrüßt Upstream Beiträge, also auf das englische Original, und Korr
|
|||||||
|
|
||||||
Du kannst auch dazu beitragen, Inhalte zu einer bestehenden Lokalisierung hinzuzufügen oder zu verbessern. Trete dem [Slack-Kanal](https://kubernetes.slack.com/messages/C1J0BPD2M/) für die Lokalisierung bei und beginne mit der Eröffnung von PRs, um zu helfen. Bitte beschränke deine Pull-Anfragen auf eine einzige Lokalisierung, da Pull-Anfragen, die Inhalte in mehreren Lokalisierungen ändern, schwer zu überprüfen sein könnten.
|
Du kannst auch dazu beitragen, Inhalte zu einer bestehenden Lokalisierung hinzuzufügen oder zu verbessern. Trete dem [Slack-Kanal](https://kubernetes.slack.com/messages/C1J0BPD2M/) für die Lokalisierung bei und beginne mit der Eröffnung von PRs, um zu helfen. Bitte beschränke deine Pull-Anfragen auf eine einzige Lokalisierung, da Pull-Anfragen, die Inhalte in mehreren Lokalisierungen ändern, schwer zu überprüfen sein könnten.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
Sobald eine Lokalisierung die Anforderungen an den Arbeitsablauf und die Mindestausgabe erfüllt, wird SIG docs:
|
Sobald eine Lokalisierung die Anforderungen an den Arbeitsablauf und die Mindestausgabe erfüllt, wird SIG docs:
|
||||||
|
|
||||||
- Die Sprachauswahl auf der Website aktivieren
|
- Die Sprachauswahl auf der Website aktivieren
|
||||||
- Die Verfügbarkeit der Lokalisierung über die Kanäle der [Cloud Native Computing Foundation](https://www.cncf.io/about/) (CNCF), einschließlich des [Kubernetes Blogs](https://kubernetes.io/blog/) veröffentlichen.
|
- Die Verfügbarkeit der Lokalisierung über die Kanäle der [Cloud Native Computing Foundation](https://www.cncf.io/about/) (CNCF), einschließlich des [Kubernetes Blogs](https://kubernetes.io/blog/) veröffentlichen.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
---
|
---
|
||||||
title: Unterstützte Versionen der Kubernetes-Dokumentation
|
title: Unterstützte Versionen der Kubernetes-Dokumentation
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
card:
|
card:
|
||||||
name: about
|
name: about
|
||||||
weight: 10
|
weight: 10
|
||||||
title: Unterstützte Versionen der Dokumentation
|
title: Unterstützte Versionen der Dokumentation
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Diese Website enthält Dokumentation für die aktuelle Version von Kubernetes
|
Diese Website enthält Dokumentation für die aktuelle Version von Kubernetes
|
||||||
und die vier vorherigen Versionen von Kubernetes.
|
und die vier vorherigen Versionen von Kubernetes.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Aktuelle Version
|
## Aktuelle Version
|
||||||
|
|
||||||
@@ -25,6 +25,6 @@ Die aktuelle Version ist
|
|||||||
|
|
||||||
{{< versions-other >}}
|
{{< versions-other >}}
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,16 +5,16 @@ approvers:
|
|||||||
linkTitle: "Referenzen"
|
linkTitle: "Referenzen"
|
||||||
main_menu: true
|
main_menu: true
|
||||||
weight: 70
|
weight: 70
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Dieser Abschnitt der Kubernetes-Dokumentation enthält Referenzinformationen.
|
Dieser Abschnitt der Kubernetes-Dokumentation enthält Referenzinformationen.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## API-Referenz
|
## API-Referenz
|
||||||
|
|
||||||
@@ -58,4 +58,4 @@ Offiziell unterstützte Clientbibliotheken:
|
|||||||
|
|
||||||
Ein Archiv der Designdokumente für Kubernetes-Funktionalität. Gute Ansatzpunkte sind [Kubernetes Architektur](https://git.k8s.io/community/contributors/design-proposals/architecture/architecture.md) und [Kubernetes Design Übersicht](https://git.k8s.io/community/contributors/design-proposals).
|
Ein Archiv der Designdokumente für Kubernetes-Funktionalität. Gute Ansatzpunkte sind [Kubernetes Architektur](https://git.k8s.io/community/contributors/design-proposals/architecture/architecture.md) und [Kubernetes Design Übersicht](https://git.k8s.io/community/contributors/design-proposals).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
---
|
---
|
||||||
title: kubectl Spickzettel
|
title: kubectl Spickzettel
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
card:
|
card:
|
||||||
name: reference
|
name: reference
|
||||||
weight: 30
|
weight: 30
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Siehe auch: [Kubectl Überblick](/docs/reference/kubectl/overview/) und [JsonPath Dokumentation](/docs/reference/kubectl/jsonpath).
|
Siehe auch: [Kubectl Überblick](/docs/reference/kubectl/overview/) und [JsonPath Dokumentation](/docs/reference/kubectl/jsonpath).
|
||||||
|
|
||||||
Diese Seite ist eine Übersicht über den Befehl `kubectl`.
|
Diese Seite ist eine Übersicht über den Befehl `kubectl`.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
# kubectl - Spickzettel
|
# kubectl - Spickzettel
|
||||||
|
|
||||||
@@ -335,9 +335,10 @@ Ausführlichkeit | Beschreibung
|
|||||||
`--v=8` | HTTP-Anforderungsinhalt anzeigen
|
`--v=8` | HTTP-Anforderungsinhalt anzeigen
|
||||||
`--v=9` | HTTP-Anforderungsinhalt anzeigen, ohne den Inhalt zu kürzen.
|
`--v=9` | HTTP-Anforderungsinhalt anzeigen, ohne den Inhalt zu kürzen.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* Lernen Sie mehr im [Überblick auf kubectl](/docs/reference/kubectl/overview/).
|
* Lernen Sie mehr im [Überblick auf kubectl](/docs/reference/kubectl/overview/).
|
||||||
|
|
||||||
@@ -347,4 +348,4 @@ Ausführlichkeit | Beschreibung
|
|||||||
|
|
||||||
* Entdecken Sie mehr Community [kubectl Spickzettel](https://github.com/dennyzhang/cheatsheet-kubernetes-A4).
|
* Entdecken Sie mehr Community [kubectl Spickzettel](https://github.com/dennyzhang/cheatsheet-kubernetes-A4).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
---
|
---
|
||||||
title: Tools
|
title: Tools
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
Kubernetes enthält mehrere integrierte Tools, die Ihnen bei der Arbeit mit dem Kubernetes System helfen.
|
Kubernetes enthält mehrere integrierte Tools, die Ihnen bei der Arbeit mit dem Kubernetes System helfen.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
## Kubectl
|
## Kubectl
|
||||||
|
|
||||||
[`kubectl`](/docs/tasks/tools/install-kubectl/) ist ein Kommandozeilenprogramm für Kubernetes. Es steuert den Kubernetes Clustermanager.
|
[`kubectl`](/docs/tasks/tools/install-kubectl/) ist ein Kommandozeilenprogramm für Kubernetes. Es steuert den Kubernetes Clustermanager.
|
||||||
@@ -49,4 +49,4 @@ Verwenden Sie Kompose um:
|
|||||||
* Ein Docker Compose Datei in Kubernetes Objekte zu übersetzen
|
* Ein Docker Compose Datei in Kubernetes Objekte zu übersetzen
|
||||||
* Von Ihrer lokalen Docker Entwicklung auf eine Kubernetes verwaltete Entwicklung zu wechseln
|
* Von Ihrer lokalen Docker Entwicklung auf eine Kubernetes verwaltete Entwicklung zu wechseln
|
||||||
* v1 oder v2 Docker Compose `yaml` Dateien oder [Distributed Application Bundles](https://docs.docker.com/compose/bundles/) zu konvertieren
|
* v1 oder v2 Docker Compose `yaml` Dateien oder [Distributed Application Bundles](https://docs.docker.com/compose/bundles/) zu konvertieren
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
title: Setup
|
title: Setup
|
||||||
main_menu: true
|
main_menu: true
|
||||||
weight: 30
|
weight: 30
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Diese Sektion umfasst verschiedene Optionen zum Einrichten und Betrieb von Kubernetes.
|
Diese Sektion umfasst verschiedene Optionen zum Einrichten und Betrieb von Kubernetes.
|
||||||
|
|
||||||
@@ -15,9 +15,9 @@ Sie können einen Kubernetes-Cluster auf einer lokalen Maschine, Cloud, On-Prem
|
|||||||
|
|
||||||
Noch einfacher können Sie einen Kubernetes-Cluster in einer Lern- und Produktionsumgebung erstellen.
|
Noch einfacher können Sie einen Kubernetes-Cluster in einer Lern- und Produktionsumgebung erstellen.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Lernumgebung
|
## Lernumgebung
|
||||||
|
|
||||||
@@ -99,4 +99,4 @@ Die folgende Tabelle für Produktionsumgebungs-Lösungen listet Anbieter und der
|
|||||||
| [VMware](https://cloud.vmware.com/) | [VMware Cloud PKS](https://cloud.vmware.com/vmware-cloud-pks) |[VMware Enterprise PKS](https://cloud.vmware.com/vmware-enterprise-pks) | [VMware Enterprise PKS](https://cloud.vmware.com/vmware-enterprise-pks) | [VMware Essential PKS](https://cloud.vmware.com/vmware-essential-pks) | |[VMware Essential PKS](https://cloud.vmware.com/vmware-essential-pks)
|
| [VMware](https://cloud.vmware.com/) | [VMware Cloud PKS](https://cloud.vmware.com/vmware-cloud-pks) |[VMware Enterprise PKS](https://cloud.vmware.com/vmware-enterprise-pks) | [VMware Enterprise PKS](https://cloud.vmware.com/vmware-enterprise-pks) | [VMware Essential PKS](https://cloud.vmware.com/vmware-essential-pks) | |[VMware Essential PKS](https://cloud.vmware.com/vmware-essential-pks)
|
||||||
| [Z.A.R.V.I.S.](https://zarvis.ai/) | ✔ | | | | | |
|
| [Z.A.R.V.I.S.](https://zarvis.ai/) | ✔ | | | | | |
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
---
|
---
|
||||||
title: Kubernetes lokal über Minikube betreiben
|
title: Kubernetes lokal über Minikube betreiben
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Minikube ist ein Tool, mit dem Kubernetes lokal einfach ausgeführt werden kann. Minikube führt einen Kubernetes-Cluster mit einem einzigen Node in einer VM auf Ihrem Laptop aus, damit Anwender Kubernetes ausprobieren oder täglich damit entwickeln können.
|
Minikube ist ein Tool, mit dem Kubernetes lokal einfach ausgeführt werden kann. Minikube führt einen Kubernetes-Cluster mit einem einzigen Node in einer VM auf Ihrem Laptop aus, damit Anwender Kubernetes ausprobieren oder täglich damit entwickeln können.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Minikube-Funktionen
|
## Minikube-Funktionen
|
||||||
|
|
||||||
@@ -439,4 +439,4 @@ Weitere Informationen zu Minikube finden Sie im [Vorschlag](https://git.k8s.io/c
|
|||||||
|
|
||||||
Beiträge, Fragen und Kommentare werden begrüßt und ermutigt! Minikube-Entwickler finden Sie in [Slack](https://kubernetes.slack.com) im #minikube Kanal (Erhalten Sie [hier](http://slack.kubernetes.io/) eine Einladung). Wir haben ausserdem die [kubernetes-dev Google Groups-Mailingliste](https://groups.google.com/forum/#!forum/kubernetes-dev). Wenn Sie in der Liste posten, fügen Sie Ihrem Betreff bitte "minikube:" voran.
|
Beiträge, Fragen und Kommentare werden begrüßt und ermutigt! Minikube-Entwickler finden Sie in [Slack](https://kubernetes.slack.com) im #minikube Kanal (Erhalten Sie [hier](http://slack.kubernetes.io/) eine Einladung). Wir haben ausserdem die [kubernetes-dev Google Groups-Mailingliste](https://groups.google.com/forum/#!forum/kubernetes-dev). Wenn Sie in der Liste posten, fügen Sie Ihrem Betreff bitte "minikube:" voran.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
---
|
---
|
||||||
title: Release erstellen
|
title: Release erstellen
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
card:
|
card:
|
||||||
name: download
|
name: download
|
||||||
weight: 20
|
weight: 20
|
||||||
title: Release erstellen
|
title: Release erstellen
|
||||||
---
|
---
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
Sie können entweder eine Version aus dem Quellcode erstellen oder eine bereits kompilierte Version herunterladen.
|
Sie können entweder eine Version aus dem Quellcode erstellen oder eine bereits kompilierte Version herunterladen.
|
||||||
Wenn Sie nicht vorhaben, Kubernetes selbst zu entwickeln, empfehlen wir die Verwendung eines vorkompilierten Builds der aktuellen Version, die Sie in den [Versionshinweisen](/docs/setup/release/notes/) finden.
|
Wenn Sie nicht vorhaben, Kubernetes selbst zu entwickeln, empfehlen wir die Verwendung eines vorkompilierten Builds der aktuellen Version, die Sie in den [Versionshinweisen](/docs/setup/release/notes/) finden.
|
||||||
|
|
||||||
Der Kubernetes-Quellcode kann aus dem [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes) repo der heruntergeladen werden.
|
Der Kubernetes-Quellcode kann aus dem [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes) repo der heruntergeladen werden.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Aus dem Quellcode kompilieren
|
## Aus dem Quellcode kompilieren
|
||||||
|
|
||||||
@@ -29,4 +29,4 @@ make release
|
|||||||
|
|
||||||
Mehr Informationen zum Release-Prozess finden Sie im kubernetes/kubernetes [`build`](http://releases.k8s.io/{{< param "githubbranch" >}}/build/) Verzeichnis.
|
Mehr Informationen zum Release-Prozess finden Sie im kubernetes/kubernetes [`build`](http://releases.k8s.io/{{< param "githubbranch" >}}/build/) Verzeichnis.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,19 +2,19 @@
|
|||||||
title: Aufgaben
|
title: Aufgaben
|
||||||
main_menu: true
|
main_menu: true
|
||||||
weight: 50
|
weight: 50
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< toc >}}
|
{{< toc >}}
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Dieser Abschnitt der Kubernetes-Dokumentation enthält Seiten, die zeigen, wie man einzelne Aufgaben erledigt.
|
Dieser Abschnitt der Kubernetes-Dokumentation enthält Seiten, die zeigen, wie man einzelne Aufgaben erledigt.
|
||||||
Eine Aufgabenseite zeigt, wie man eine einzelne Aufgabe ausführt, typischerweise durch eine kurze Abfolge von Schritten.
|
Eine Aufgabenseite zeigt, wie man eine einzelne Aufgabe ausführt, typischerweise durch eine kurze Abfolge von Schritten.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Webbenutzeroberfläche (Dashboard)
|
## Webbenutzeroberfläche (Dashboard)
|
||||||
|
|
||||||
@@ -76,10 +76,11 @@ Konfigurieren und planen Sie NVIDIA-GPUs für die Verwendung durch Nodes in eine
|
|||||||
|
|
||||||
Konfigurieren und verwalten Sie `HugePages` als planbare Ressource in einem Cluster.
|
Konfigurieren und verwalten Sie `HugePages` als planbare Ressource in einem Cluster.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
Wenn Sie eine Aufgabenseite schreiben möchten, finden Sie weitere Informationen unter [Erstellen einer Pull-Anfrage für Dokumentation](/docs/home/contribute/create-pull-request/).
|
Wenn Sie eine Aufgabenseite schreiben möchten, finden Sie weitere Informationen unter [Erstellen einer Pull-Anfrage für Dokumentation](/docs/home/contribute/create-pull-request/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ feature:
|
|||||||
description: >
|
description: >
|
||||||
Skaliere deine Anwendung mit einem einfachen Befehl, über die Benutzeroberfläche oder automatisch, basierend auf der CPU-Auslastung.
|
Skaliere deine Anwendung mit einem einfachen Befehl, über die Benutzeroberfläche oder automatisch, basierend auf der CPU-Auslastung.
|
||||||
|
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 90
|
weight: 90
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Der Horizontal Pod Autoscaler skaliert automatisch die Anzahl der Pods eines Replication Controller, Deployment oder Replikat Set basierend auf der beobachteten CPU-Auslastung (oder, mit Unterstützung von [benutzerdefinierter Metriken](https://git.k8s.io/community/contributors/design-proposals/instrumentation/custom-metrics-api.md), von der Anwendung bereitgestellten Metriken). Beachte, dass die horizontale Pod Autoskalierung nicht für Objekte gilt, die nicht skaliert werden können, z. B. DaemonSets.
|
Der Horizontal Pod Autoscaler skaliert automatisch die Anzahl der Pods eines Replication Controller, Deployment oder Replikat Set basierend auf der beobachteten CPU-Auslastung (oder, mit Unterstützung von [benutzerdefinierter Metriken](https://git.k8s.io/community/contributors/design-proposals/instrumentation/custom-metrics-api.md), von der Anwendung bereitgestellten Metriken). Beachte, dass die horizontale Pod Autoskalierung nicht für Objekte gilt, die nicht skaliert werden können, z. B. DaemonSets.
|
||||||
|
|
||||||
@@ -17,9 +17,9 @@ Der Horizontal Pod Autoscaler ist als Kubernetes API-Ressource und einem Control
|
|||||||
Die Ressource bestimmt das Verhalten des Controllers.
|
Die Ressource bestimmt das Verhalten des Controllers.
|
||||||
Der Controller passt die Anzahl der Replikate eines Replication Controller oder Deployments regelmäßig an, um die beobachtete durchschnittliche CPU-Auslastung an das vom Benutzer angegebene Ziel anzupassen.
|
Der Controller passt die Anzahl der Replikate eines Replication Controller oder Deployments regelmäßig an, um die beobachtete durchschnittliche CPU-Auslastung an das vom Benutzer angegebene Ziel anzupassen.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Wie funktioniert der Horizontal Pod Autoscaler?
|
## Wie funktioniert der Horizontal Pod Autoscaler?
|
||||||
|
|
||||||
@@ -161,12 +161,13 @@ Standardmäßig ruft der HorizontalPodAutoscaler Controller Metriken aus einer R
|
|||||||
|
|
||||||
* Das Flag `--horizontal-pod-autoscaler-use-rest-clients` ist auf `true` oder ungesetzt. Wird dies auf `false` gesetzt wird die Heapster basierte Autoskalierung aktiviert, welche veraltet ist.
|
* Das Flag `--horizontal-pod-autoscaler-use-rest-clients` ist auf `true` oder ungesetzt. Wird dies auf `false` gesetzt wird die Heapster basierte Autoskalierung aktiviert, welche veraltet ist.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* Design Dokument [Horizontal Pod Autoscaling](https://git.k8s.io/community/contributors/design-proposals/autoscaling/horizontal-pod-autoscaler.md).
|
* Design Dokument [Horizontal Pod Autoscaling](https://git.k8s.io/community/contributors/design-proposals/autoscaling/horizontal-pod-autoscaler.md).
|
||||||
* kubectl autoscale Befehl: [kubectl autoscale](/docs/reference/generated/kubectl/kubectl-commands/#autoscale).
|
* kubectl autoscale Befehl: [kubectl autoscale](/docs/reference/generated/kubectl/kubectl-commands/#autoscale).
|
||||||
* Verwenden des [Horizontal Pod Autoscaler](/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/).
|
* Verwenden des [Horizontal Pod Autoscaler](/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Installieren und konfigurieren von kubectl
|
title: Installieren und konfigurieren von kubectl
|
||||||
content_template: templates/task
|
content_type: task
|
||||||
weight: 10
|
weight: 10
|
||||||
card:
|
card:
|
||||||
name: tasks
|
name: tasks
|
||||||
@@ -8,17 +8,18 @@ card:
|
|||||||
title: Kubectl installieren
|
title: Kubectl installieren
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
Verwenden Sie das Kubernetes Befehlszeilenprogramm, [kubectl](/docs/user-guide/kubectl/), um Anwendungen auf Kubernetes bereitzustellen und zu verwalten.
|
Verwenden Sie das Kubernetes Befehlszeilenprogramm, [kubectl](/docs/user-guide/kubectl/), um Anwendungen auf Kubernetes bereitzustellen und zu verwalten.
|
||||||
Mit kubectl können Sie Clusterressourcen überprüfen, Komponenten erstellen, löschen und aktualisieren; Ihren neuen Cluster betrachten; und Beispielanwendungen aufrufen.
|
Mit kubectl können Sie Clusterressourcen überprüfen, Komponenten erstellen, löschen und aktualisieren; Ihren neuen Cluster betrachten; und Beispielanwendungen aufrufen.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture prerequisites %}}
|
|
||||||
|
## {{% heading "prerequisites" %}}
|
||||||
|
|
||||||
Sie müssen eine kubectl-Version verwenden, die innerhalb eines geringfügigen Versionsunterschieds zur Version Ihres Clusters liegt. Ein v1.2-Client sollte beispielsweise mit einem v1.1, v1.2 und v1.3-Master arbeiten. Die Verwendung der neuesten Version von kubectl verhindert unvorhergesehene Probleme.
|
Sie müssen eine kubectl-Version verwenden, die innerhalb eines geringfügigen Versionsunterschieds zur Version Ihres Clusters liegt. Ein v1.2-Client sollte beispielsweise mit einem v1.1, v1.2 und v1.3-Master arbeiten. Die Verwendung der neuesten Version von kubectl verhindert unvorhergesehene Probleme.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture steps %}}
|
|
||||||
|
<!-- steps -->
|
||||||
|
|
||||||
## Kubectl installieren
|
## Kubectl installieren
|
||||||
|
|
||||||
@@ -421,9 +422,10 @@ compinit
|
|||||||
{{% /tab %}}
|
{{% /tab %}}
|
||||||
{{< /tabs >}}
|
{{< /tabs >}}
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
[Erfahren Sie, wie Sie Ihre Anwendung starten und verfügbar machen.](/docs/tasks/access-application-cluster/service-access-application-cluster/)
|
[Erfahren Sie, wie Sie Ihre Anwendung starten und verfügbar machen.](/docs/tasks/access-application-cluster/service-access-application-cluster/)
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,28 +1,29 @@
|
|||||||
---
|
---
|
||||||
title: Installation von Minikube
|
title: Installation von Minikube
|
||||||
content_template: templates/task
|
content_type: task
|
||||||
weight: 20
|
weight: 20
|
||||||
card:
|
card:
|
||||||
name: tasks
|
name: tasks
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Diese Seite zeigt Ihnen, wie Sie [Minikube](/docs/tutorials/hello-minikube) installieren, ein Programm, das einen Kubernetes-Cluster mit einem einzigen Node in einer virtuellen Maschine auf Ihrem Laptop ausführt.
|
Diese Seite zeigt Ihnen, wie Sie [Minikube](/docs/tutorials/hello-minikube) installieren, ein Programm, das einen Kubernetes-Cluster mit einem einzigen Node in einer virtuellen Maschine auf Ihrem Laptop ausführt.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture prerequisites %}}
|
|
||||||
|
## {{% heading "prerequisites" %}}
|
||||||
|
|
||||||
|
|
||||||
Die VT-x- oder AMD-v-Virtualisierung muss im BIOS Ihres Computers aktiviert sein. Um dies unter Linux zu überprüfen, führen Sie Folgendes aus und vergewissern Sie sich, dass die Ausgabe nicht leer ist:
|
Die VT-x- oder AMD-v-Virtualisierung muss im BIOS Ihres Computers aktiviert sein. Um dies unter Linux zu überprüfen, führen Sie Folgendes aus und vergewissern Sie sich, dass die Ausgabe nicht leer ist:
|
||||||
```shell
|
```shell
|
||||||
egrep --color 'vmx|svm' /proc/cpuinfo
|
egrep --color 'vmx|svm' /proc/cpuinfo
|
||||||
```
|
```
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture steps %}}
|
|
||||||
|
<!-- steps -->
|
||||||
|
|
||||||
## Einen Hypervisor installieren
|
## Einen Hypervisor installieren
|
||||||
|
|
||||||
@@ -106,13 +107,6 @@ Schließen Sie nach der Installation von Minikube die aktuelle CLI-Sitzung und s
|
|||||||
|
|
||||||
So installieren Sie Minikube manuell unter Windows mit [Windows Installer](https://docs.microsoft.com/en-us/windows/desktop/msi/windows-installer-portal), laden Sie die Datei [`minikube-installer.exe`](https://github.com/kubernetes/minikube/releases/latest) und führen Sie den Installer aus.
|
So installieren Sie Minikube manuell unter Windows mit [Windows Installer](https://docs.microsoft.com/en-us/windows/desktop/msi/windows-installer-portal), laden Sie die Datei [`minikube-installer.exe`](https://github.com/kubernetes/minikube/releases/latest) und führen Sie den Installer aus.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
|
||||||
* [Kubernetes lokal über Minikube ausführen](/docs/setup/minikube/)
|
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
## Eine bestehende Installation bereinigen
|
## Eine bestehende Installation bereinigen
|
||||||
|
|
||||||
@@ -130,3 +124,8 @@ Müssen Sie die Konfigurationsdateien löschen:
|
|||||||
```shell
|
```shell
|
||||||
rm -rf ~/.minikube
|
rm -rf ~/.minikube
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
|
* [Kubernetes lokal über Minikube ausführen](/docs/setup/minikube/)
|
||||||
|
|||||||
@@ -2,19 +2,19 @@
|
|||||||
title: Tutorials
|
title: Tutorials
|
||||||
main_menu: true
|
main_menu: true
|
||||||
weight: 60
|
weight: 60
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Dieser Abschnitt der Kubernetes-Dokumentation enthält Tutorials.
|
Dieser Abschnitt der Kubernetes-Dokumentation enthält Tutorials.
|
||||||
Ein Tutorial zeigt, wie Sie ein Ziel erreichen, das größer ist als eine einzelne [Aufgabe](/docs/tasks/).
|
Ein Tutorial zeigt, wie Sie ein Ziel erreichen, das größer ist als eine einzelne [Aufgabe](/docs/tasks/).
|
||||||
Ein Tutorial besteht normalerweise aus mehreren Abschnitten, die jeweils eine Abfolge von Schritten haben.
|
Ein Tutorial besteht normalerweise aus mehreren Abschnitten, die jeweils eine Abfolge von Schritten haben.
|
||||||
Bevor Sie die einzelnen Lernprogramme durchgehen, möchten Sie möglicherweise ein Lesezeichen zur Seite mit dem [Standardisierten Glossar](/docs/reference/glossary/) setzen um später Informationen nachzuschlagen.
|
Bevor Sie die einzelnen Lernprogramme durchgehen, möchten Sie möglicherweise ein Lesezeichen zur Seite mit dem [Standardisierten Glossar](/docs/reference/glossary/) setzen um später Informationen nachzuschlagen.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Grundlagen
|
## Grundlagen
|
||||||
|
|
||||||
@@ -64,12 +64,13 @@ Bevor Sie die einzelnen Lernprogramme durchgehen, möchten Sie möglicherweise e
|
|||||||
|
|
||||||
* [Source IP verwenden](/docs/tutorials/services/source-ip/)
|
* [Source IP verwenden](/docs/tutorials/services/source-ip/)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
Wenn Sie ein Tutorial schreiben möchten, lesen Sie
|
Wenn Sie ein Tutorial schreiben möchten, lesen Sie
|
||||||
[Seitenvorlagen verwenden](/docs/home/contribute/page-templates/)
|
[Seitenvorlagen verwenden](/docs/home/contribute/page-templates/)
|
||||||
für weitere Informationen zum Typ der Tutorial-Seite und zur Tutorial-Vorlage.
|
für weitere Informationen zum Typ der Tutorial-Seite und zur Tutorial-Vorlage.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Hallo Minikube
|
title: Hallo Minikube
|
||||||
content_template: templates/tutorial
|
content_type: tutorial
|
||||||
weight: 5
|
weight: 5
|
||||||
menu:
|
menu:
|
||||||
main:
|
main:
|
||||||
@@ -13,7 +13,7 @@ card:
|
|||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Dieses Tutorial zeigt Ihnen, wie Sie eine einfache "Hallo Welt" Node.js-Anwendung auf Kubernetes mit [Minikube](/docs/getting-started-guides/minikube) und Katacoda ausführen.
|
Dieses Tutorial zeigt Ihnen, wie Sie eine einfache "Hallo Welt" Node.js-Anwendung auf Kubernetes mit [Minikube](/docs/getting-started-guides/minikube) und Katacoda ausführen.
|
||||||
Katacoda bietet eine kostenlose Kubernetes-Umgebung im Browser.
|
Katacoda bietet eine kostenlose Kubernetes-Umgebung im Browser.
|
||||||
@@ -22,17 +22,19 @@ Katacoda bietet eine kostenlose Kubernetes-Umgebung im Browser.
|
|||||||
Sie können dieses Tutorial auch verwenden, wenn Sie [Minikube lokal](/docs/tasks/tools/install-minikube/) installiert haben.
|
Sie können dieses Tutorial auch verwenden, wenn Sie [Minikube lokal](/docs/tasks/tools/install-minikube/) installiert haben.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture objectives %}}
|
|
||||||
|
## {{% heading "objectives" %}}
|
||||||
|
|
||||||
|
|
||||||
* Stellen Sie eine Hallo-Welt-Anwendung für Minikube bereit.
|
* Stellen Sie eine Hallo-Welt-Anwendung für Minikube bereit.
|
||||||
* Führen Sie die App aus.
|
* Führen Sie die App aus.
|
||||||
* Betrachten Sie die Log Dateien.
|
* Betrachten Sie die Log Dateien.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture prerequisites %}}
|
|
||||||
|
## {{% heading "prerequisites" %}}
|
||||||
|
|
||||||
|
|
||||||
Dieses Lernprogramm enthält ein aus den folgenden Dateien erstelltes Container-Image:
|
Dieses Lernprogramm enthält ein aus den folgenden Dateien erstelltes Container-Image:
|
||||||
|
|
||||||
@@ -42,9 +44,9 @@ Dieses Lernprogramm enthält ein aus den folgenden Dateien erstelltes Container-
|
|||||||
|
|
||||||
Weitere Informationen zum `docker build` Befehl, lesen Sie die [Docker Dokumentation](https://docs.docker.com/engine/reference/commandline/build/).
|
Weitere Informationen zum `docker build` Befehl, lesen Sie die [Docker Dokumentation](https://docs.docker.com/engine/reference/commandline/build/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture lessoncontent %}}
|
|
||||||
|
<!-- lessoncontent -->
|
||||||
|
|
||||||
## Erstellen Sie einen Minikube-Cluster
|
## Erstellen Sie einen Minikube-Cluster
|
||||||
|
|
||||||
@@ -260,12 +262,13 @@ Löschen Sie optional die Minikube-VM:
|
|||||||
minikube delete
|
minikube delete
|
||||||
```
|
```
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* Lernen Sie mehr über [Bereitstellungsobjekte](/docs/concepts/workloads/controllers/deployment/).
|
* Lernen Sie mehr über [Bereitstellungsobjekte](/docs/concepts/workloads/controllers/deployment/).
|
||||||
* Lernen Sie mehr über [Anwendungen bereitstellen](/docs/user-guide/deploying-applications/).
|
* Lernen Sie mehr über [Anwendungen bereitstellen](/docs/user-guide/deploying-applications/).
|
||||||
* Lernen Sie mehr über [Serviceobjekte](/docs/concepts/services-networking/service/).
|
* Lernen Sie mehr über [Serviceobjekte](/docs/concepts/services-networking/service/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -3,9 +3,6 @@ title: "Production-Grade Container Orchestration"
|
|||||||
abstract: "Automated container deployment, scaling, and management"
|
abstract: "Automated container deployment, scaling, and management"
|
||||||
cid: home
|
cid: home
|
||||||
---
|
---
|
||||||
{{< announcement >}}
|
|
||||||
|
|
||||||
{{< deprecationwarning >}}
|
|
||||||
|
|
||||||
{{< blocks/section id="oceanNodes" >}}
|
{{< blocks/section id="oceanNodes" >}}
|
||||||
{{% blocks/feature image="flower" %}}
|
{{% blocks/feature image="flower" %}}
|
||||||
|
|||||||
+18
-181
@@ -6,6 +6,9 @@ url: /blog/2017/01/Running-Mongodb-On-Kubernetes-With-Statefulsets
|
|||||||
---
|
---
|
||||||
_Editor's note: Today’s post is by Sandeep Dinesh, Developer Advocate, Google Cloud Platform, showing how to run a database in a container._
|
_Editor's note: Today’s post is by Sandeep Dinesh, Developer Advocate, Google Cloud Platform, showing how to run a database in a container._
|
||||||
|
|
||||||
|
{{% warning %}}
|
||||||
|
This post is several years old. The code examples need changes to work on a current Kubernetes cluster.
|
||||||
|
{{% /warning %}}
|
||||||
|
|
||||||
Conventional wisdom says you can’t run a database in a container. “Containers are stateless!” they say, and “databases are pointless without state!”
|
Conventional wisdom says you can’t run a database in a container. “Containers are stateless!” they say, and “databases are pointless without state!”
|
||||||
|
|
||||||
@@ -19,103 +22,61 @@ With StatefulSets, these headaches finally go away. You can create and manage yo
|
|||||||
|
|
||||||
_Note: StatefulSets are currently a beta resource. The [sidecar container](https://github.com/cvallance/mongo-k8s-sidecar) used for auto-configuration is also unsupported._
|
_Note: StatefulSets are currently a beta resource. The [sidecar container](https://github.com/cvallance/mongo-k8s-sidecar) used for auto-configuration is also unsupported._
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Prerequisites and Setup**
|
**Prerequisites and Setup**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Before we get started, you’ll need a Kubernetes 1.5+ and the [Kubernetes command line tool](/docs/user-guide/prereqs/). If you want to follow along with this tutorial and use Google Cloud Platform, you also need the [Google Cloud SDK](http://cloud.google.com/sdk).
|
Before we get started, you’ll need a Kubernetes 1.5+ and the [Kubernetes command line tool](/docs/user-guide/prereqs/). If you want to follow along with this tutorial and use Google Cloud Platform, you also need the [Google Cloud SDK](http://cloud.google.com/sdk).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Once you have a [Google Cloud project created](https://console.cloud.google.com/projectcreate) and have your Google Cloud SDK setup (hint: gcloud init), we can create our cluster.
|
Once you have a [Google Cloud project created](https://console.cloud.google.com/projectcreate) and have your Google Cloud SDK setup (hint: gcloud init), we can create our cluster.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
To create a Kubernetes 1.5 cluster, run the following command:
|
To create a Kubernetes 1.5 cluster, run the following command:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
gcloud container clusters create "test-cluster"
|
gcloud container clusters create "test-cluster"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
This will make a three node Kubernetes cluster. Feel free to [customize the command](https://cloud.google.com/sdk/gcloud/reference/container/clusters/create) as you see fit.
|
This will make a three node Kubernetes cluster. Feel free to [customize the command](https://cloud.google.com/sdk/gcloud/reference/container/clusters/create) as you see fit.
|
||||||
|
|
||||||
Then, authenticate into the cluster:
|
Then, authenticate into the cluster:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
gcloud container clusters get-credentials test-cluster
|
gcloud container clusters get-credentials test-cluster
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Setting up the MongoDB replica set**
|
**Setting up the MongoDB replica set**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
To set up the MongoDB replica set, you need three things: A [StorageClass](/docs/user-guide/persistent-volumes/#storageclasses), a [Headless Service](/docs/user-guide/services/#headless-services), and a [StatefulSet](/docs/concepts/abstractions/controllers/statefulsets/).
|
To set up the MongoDB replica set, you need three things: A [StorageClass](/docs/user-guide/persistent-volumes/#storageclasses), a [Headless Service](/docs/user-guide/services/#headless-services), and a [StatefulSet](/docs/concepts/abstractions/controllers/statefulsets/).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
I’ve created the configuration files for these already, and you can clone the example from GitHub:
|
I’ve created the configuration files for these already, and you can clone the example from GitHub:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/thesandlord/mongo-k8s-sidecar.git
|
git clone https://github.com/thesandlord/mongo-k8s-sidecar.git
|
||||||
|
|
||||||
cd /mongo-k8s-sidecar/example/StatefulSet/
|
cd /mongo-k8s-sidecar/example/StatefulSet/
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
To create the MongoDB replica set, run these two commands:
|
To create the MongoDB replica set, run these two commands:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
kubectl apply -f googlecloud\_ssd.yaml
|
kubectl apply -f googlecloud\_ssd.yaml
|
||||||
|
|
||||||
kubectl apply -f mongo-statefulset.yaml
|
kubectl apply -f mongo-statefulset.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
That's it! With these two commands, you have launched all the components required to run an highly available and redundant MongoDB replica set.
|
That's it! With these two commands, you have launched all the components required to run an highly available and redundant MongoDB replica set.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
At an high level, it looks something like this:
|
At an high level, it looks something like this:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Let’s examine each piece in more detail.
|
Let’s examine each piece in more detail.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**StorageClass**
|
**StorageClass**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The storage class tells Kubernetes what kind of storage to use for the database nodes. You can set up many different types of StorageClasses in a ton of different environments. For example, if you run Kubernetes in your own datacenter, you can use [GlusterFS](https://www.gluster.org/). On GCP, your [storage choices](https://cloud.google.com/compute/docs/disks/) are SSDs and hard disks. There are currently drivers for [AWS](/docs/user-guide/persistent-volumes/#aws), [Azure](/docs/user-guide/persistent-volumes/#azure-disk), [Google Cloud](/docs/user-guide/persistent-volumes/#gce), [GlusterFS](/docs/user-guide/persistent-volumes/#glusterfs), [OpenStack Cinder](/docs/user-guide/persistent-volumes/#openstack-cinder), [vSphere](/docs/user-guide/persistent-volumes/#vsphere), [Ceph RBD](/docs/user-guide/persistent-volumes/#ceph-rbd), and [Quobyte](/docs/user-guide/persistent-volumes/#quobyte).
|
The storage class tells Kubernetes what kind of storage to use for the database nodes. You can set up many different types of StorageClasses in a ton of different environments. For example, if you run Kubernetes in your own datacenter, you can use [GlusterFS](https://www.gluster.org/). On GCP, your [storage choices](https://cloud.google.com/compute/docs/disks/) are SSDs and hard disks. There are currently drivers for [AWS](/docs/user-guide/persistent-volumes/#aws), [Azure](/docs/user-guide/persistent-volumes/#azure-disk), [Google Cloud](/docs/user-guide/persistent-volumes/#gce), [GlusterFS](/docs/user-guide/persistent-volumes/#glusterfs), [OpenStack Cinder](/docs/user-guide/persistent-volumes/#openstack-cinder), [vSphere](/docs/user-guide/persistent-volumes/#vsphere), [Ceph RBD](/docs/user-guide/persistent-volumes/#ceph-rbd), and [Quobyte](/docs/user-guide/persistent-volumes/#quobyte).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The configuration for the StorageClass looks like this:
|
The configuration for the StorageClass looks like this:
|
||||||
|
|
||||||
|
```yaml
|
||||||
```
|
|
||||||
kind: StorageClass
|
kind: StorageClass
|
||||||
apiVersion: storage.k8s.io/v1beta1
|
apiVersion: storage.k8s.io/v1beta1
|
||||||
metadata:
|
metadata:
|
||||||
@@ -125,247 +86,144 @@ parameters:
|
|||||||
type: pd-ssd
|
type: pd-ssd
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
This configuration creates a new StorageClass called “fast” that is backed by SSD volumes. The StatefulSet can now request a volume, and the StorageClass will automatically create it!
|
This configuration creates a new StorageClass called “fast” that is backed by SSD volumes. The StatefulSet can now request a volume, and the StorageClass will automatically create it!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Deploy this StorageClass:
|
Deploy this StorageClass:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
kubectl apply -f googlecloud\_ssd.yaml
|
kubectl apply -f googlecloud\_ssd.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Headless Service**
|
**Headless Service**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Now you have created the Storage Class, you need to make a Headless Service. These are just like normal Kubernetes Services, except they don’t do any load balancing for you. When combined with StatefulSets, they can give you unique DNS addresses that let you directly access the pods! This is perfect for creating MongoDB replica sets, because our app needs to connect to all of the MongoDB nodes individually.
|
Now you have created the Storage Class, you need to make a Headless Service. These are just like normal Kubernetes Services, except they don’t do any load balancing for you. When combined with StatefulSets, they can give you unique DNS addresses that let you directly access the pods! This is perfect for creating MongoDB replica sets, because our app needs to connect to all of the MongoDB nodes individually.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The configuration for the Headless Service looks like this:
|
The configuration for the Headless Service looks like this:
|
||||||
|
|
||||||
|
```yaml
|
||||||
```
|
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
|
|
||||||
kind: Service
|
kind: Service
|
||||||
|
|
||||||
metadata:
|
metadata:
|
||||||
|
|
||||||
name: mongo
|
name: mongo
|
||||||
|
|
||||||
labels:
|
labels:
|
||||||
|
|
||||||
name: mongo
|
name: mongo
|
||||||
|
|
||||||
spec:
|
spec:
|
||||||
|
|
||||||
ports:
|
ports:
|
||||||
|
|
||||||
- port: 27017
|
- port: 27017
|
||||||
|
|
||||||
targetPort: 27017
|
targetPort: 27017
|
||||||
|
|
||||||
clusterIP: None
|
clusterIP: None
|
||||||
|
|
||||||
selector:
|
selector:
|
||||||
|
|
||||||
role: mongo
|
role: mongo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
You can tell this is a Headless Service because the clusterIP is set to “None.” Other than that, it looks exactly the same as any normal Kubernetes Service.
|
You can tell this is a Headless Service because the clusterIP is set to “None.” Other than that, it looks exactly the same as any normal Kubernetes Service.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**StatefulSet**
|
**StatefulSet**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The pièce de résistance. The StatefulSet actually runs MongoDB and orchestrates everything together. StatefulSets differ from Kubernetes [ReplicaSets](/docs/user-guide/replicasets/) (not to be confused with MongoDB replica sets!) in certain ways that makes them more suited for stateful applications. Unlike Kubernetes ReplicaSets, pods created under a StatefulSet have a few unique attributes. The name of the pod is not random, instead each pod gets an ordinal name. Combined with the Headless Service, this allows pods to have stable identification. In addition, pods are created one at a time instead of all at once, which can help when bootstrapping a stateful system. You can read more about StatefulSets in the [documentation](/docs/concepts/abstractions/controllers/statefulsets/).
|
The pièce de résistance. The StatefulSet actually runs MongoDB and orchestrates everything together. StatefulSets differ from Kubernetes [ReplicaSets](/docs/user-guide/replicasets/) (not to be confused with MongoDB replica sets!) in certain ways that makes them more suited for stateful applications. Unlike Kubernetes ReplicaSets, pods created under a StatefulSet have a few unique attributes. The name of the pod is not random, instead each pod gets an ordinal name. Combined with the Headless Service, this allows pods to have stable identification. In addition, pods are created one at a time instead of all at once, which can help when bootstrapping a stateful system. You can read more about StatefulSets in the [documentation](/docs/concepts/abstractions/controllers/statefulsets/).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Just like before, [this “sidecar” container](https://github.com/cvallance/mongo-k8s-sidecar) will configure the MongoDB replica set automatically. A “sidecar” is a helper container which helps the main container do its work.
|
Just like before, [this “sidecar” container](https://github.com/cvallance/mongo-k8s-sidecar) will configure the MongoDB replica set automatically. A “sidecar” is a helper container which helps the main container do its work.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The configuration for the StatefulSet looks like this:
|
The configuration for the StatefulSet looks like this:
|
||||||
|
|
||||||
|
```yaml
|
||||||
```
|
|
||||||
apiVersion: apps/v1beta1
|
apiVersion: apps/v1beta1
|
||||||
|
|
||||||
kind: StatefulSet
|
kind: StatefulSet
|
||||||
|
|
||||||
metadata:
|
metadata:
|
||||||
|
|
||||||
name: mongo
|
name: mongo
|
||||||
|
|
||||||
spec:
|
spec:
|
||||||
|
selector:
|
||||||
serviceName: "mongo"
|
matchLabels:
|
||||||
|
role: mongo
|
||||||
replicas: 3
|
environment: test
|
||||||
|
serviceName: "mongo"
|
||||||
template:
|
replicas: 3
|
||||||
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
|
labels:
|
||||||
labels:
|
|
||||||
|
|
||||||
role: mongo
|
role: mongo
|
||||||
|
|
||||||
environment: test
|
environment: test
|
||||||
|
|
||||||
spec:
|
spec:
|
||||||
|
|
||||||
terminationGracePeriodSeconds: 10
|
terminationGracePeriodSeconds: 10
|
||||||
|
|
||||||
containers:
|
containers:
|
||||||
|
|
||||||
- name: mongo
|
- name: mongo
|
||||||
|
|
||||||
image: mongo
|
image: mongo
|
||||||
|
|
||||||
command:
|
command:
|
||||||
|
|
||||||
- mongod
|
- mongod
|
||||||
|
|
||||||
- "--replSet"
|
- "--replSet"
|
||||||
|
|
||||||
- rs0
|
- rs0
|
||||||
|
|
||||||
- "--smallfiles"
|
- "--smallfiles"
|
||||||
|
|
||||||
- "--noprealloc"
|
- "--noprealloc"
|
||||||
|
|
||||||
ports:
|
ports:
|
||||||
|
|
||||||
- containerPort: 27017
|
- containerPort: 27017
|
||||||
|
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
|
|
||||||
- name: mongo-persistent-storage
|
- name: mongo-persistent-storage
|
||||||
|
|
||||||
mountPath: /data/db
|
mountPath: /data/db
|
||||||
|
|
||||||
- name: mongo-sidecar
|
- name: mongo-sidecar
|
||||||
|
|
||||||
image: cvallance/mongo-k8s-sidecar
|
image: cvallance/mongo-k8s-sidecar
|
||||||
|
|
||||||
env:
|
env:
|
||||||
|
- name: MONGO_SIDECAR_POD_LABELS
|
||||||
- name: MONGO\_SIDECAR\_POD\_LABELS
|
|
||||||
|
|
||||||
value: "role=mongo,environment=test"
|
value: "role=mongo,environment=test"
|
||||||
|
|
||||||
volumeClaimTemplates:
|
volumeClaimTemplates:
|
||||||
|
|
||||||
- metadata:
|
- metadata:
|
||||||
|
|
||||||
name: mongo-persistent-storage
|
name: mongo-persistent-storage
|
||||||
|
|
||||||
annotations:
|
|
||||||
|
|
||||||
volume.beta.kubernetes.io/storage-class: "fast"
|
|
||||||
|
|
||||||
spec:
|
spec:
|
||||||
|
storageClassName: "fast"
|
||||||
accessModes: ["ReadWriteOnce"]
|
accessModes: ["ReadWriteOnce"]
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
|
|
||||||
requests:
|
requests:
|
||||||
|
|
||||||
storage: 100Gi
|
storage: 100Gi
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
It’s a little long, but fairly straightforward.
|
It’s a little long, but fairly straightforward.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The first second describes the StatefulSet object. Then, we move into the Metadata section, where you can specify labels and the number of replicas.
|
The first second describes the StatefulSet object. Then, we move into the Metadata section, where you can specify labels and the number of replicas.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Next comes the pod spec. The terminationGracePeriodSeconds is used to gracefully shutdown the pod when you scale down the number of replicas, which is important for databases! Then the configurations for the two containers is shown. The first one runs MongoDB with command line flags that configure the replica set name. It also mounts the persistent storage volume to /data/db, the location where MongoDB saves its data. The second container runs the sidecar.
|
Next comes the pod spec. The terminationGracePeriodSeconds is used to gracefully shutdown the pod when you scale down the number of replicas, which is important for databases! Then the configurations for the two containers is shown. The first one runs MongoDB with command line flags that configure the replica set name. It also mounts the persistent storage volume to /data/db, the location where MongoDB saves its data. The second container runs the sidecar.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Finally, there is the volumeClaimTemplates. This is what talks to the StorageClass we created before to provision the volume. It will provision a 100 GB disk for each MongoDB replica.
|
Finally, there is the volumeClaimTemplates. This is what talks to the StorageClass we created before to provision the volume. It will provision a 100 GB disk for each MongoDB replica.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Using the MongoDB replica set**
|
**Using the MongoDB replica set**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
At this point, you should have three pods created in your cluster. These correspond to the three nodes in your MongoDB replica set. You can see them with this command:
|
At this point, you should have three pods created in your cluster. These correspond to the three nodes in your MongoDB replica set. You can see them with this command:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
kubectl get pods
|
kubectl get pods
|
||||||
|
|
||||||
NAME READY STATUS RESTARTS AGE
|
NAME READY STATUS RESTARTS AGE
|
||||||
|
|
||||||
mongo-0 2/2 Running 0 3m
|
mongo-0 2/2 Running 0 3m
|
||||||
|
|
||||||
mongo-1 2/2 Running 0 3m
|
mongo-1 2/2 Running 0 3m
|
||||||
|
|
||||||
mongo-2 2/2 Running 0 3m
|
mongo-2 2/2 Running 0 3m
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Each pod in a StatefulSet backed by a Headless Service will have a stable DNS name. The template follows this format: \<pod-name\>.\<service-name\>
|
Each pod in a StatefulSet backed by a Headless Service will have a stable DNS name. The template follows this format: \<pod-name\>.\<service-name\>
|
||||||
|
|
||||||
This means the DNS names for the MongoDB replica set are:
|
This means the DNS names for the MongoDB replica set are:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
mongo-0.mongo
|
mongo-0.mongo
|
||||||
|
|
||||||
mongo-1.mongo
|
mongo-1.mongo
|
||||||
|
|
||||||
mongo-2.mongo
|
mongo-2.mongo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
You can use these names directly in the [connection string URI](http://docs.mongodb.com/manual/reference/connection-string) of your app.
|
You can use these names directly in the [connection string URI](http://docs.mongodb.com/manual/reference/connection-string) of your app.
|
||||||
|
|
||||||
In this case, the connection string URI would be:
|
In this case, the connection string URI would be:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
“mongodb://mongo-0.mongo,mongo-1.mongo,mongo-2.mongo:27017/dbname\_?”
|
mongodb://mongo-0.mongo,mongo-1.mongo,mongo-2.mongo:27017/dbname\_?
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
That’s it!
|
That’s it!
|
||||||
|
|
||||||
**Scaling the MongoDB replica set**
|
**Scaling the MongoDB replica set**
|
||||||
|
|
||||||
A huge advantage of StatefulSets is that you can scale them just like Kubernetes ReplicaSets. If you want 5 MongoDB Nodes instead of 3, just run the scale command:
|
A huge advantage of StatefulSets is that you can scale them just like Kubernetes ReplicaSets. If you want 5 MongoDB Nodes instead of 3, just run the scale command:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
kubectl scale --replicas=5 statefulset mongo
|
kubectl scale --replicas=5 statefulset mongo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
The sidecar container will automatically configure the new MongoDB nodes to join the replica set.
|
The sidecar container will automatically configure the new MongoDB nodes to join the replica set.
|
||||||
|
|
||||||
Include the two new nodes (mongo-3.mongo & mongo-4.mongo) in your connection string URI and you are good to go. Too easy!
|
Include the two new nodes (mongo-3.mongo & mongo-4.mongo) in your connection string URI and you are good to go. Too easy!
|
||||||
@@ -376,51 +234,30 @@ To clean up the deployed resources, delete the StatefulSet, Headless Service, an
|
|||||||
|
|
||||||
Delete the StatefulSet:
|
Delete the StatefulSet:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
kubectl delete statefulset mongo
|
kubectl delete statefulset mongo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Delete the Service:
|
Delete the Service:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
kubectl delete svc mongo
|
kubectl delete svc mongo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Delete the Volumes:
|
Delete the Volumes:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
kubectl delete pvc -l role=mongo
|
kubectl delete pvc -l role=mongo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Finally, you can delete the test cluster:
|
Finally, you can delete the test cluster:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
gcloud container clusters delete "test-cluster"
|
gcloud container clusters delete "test-cluster"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Happy Hacking!
|
Happy Hacking!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
For more cool Kubernetes and Container blog posts, follow me on [Twitter](https://twitter.com/sandeepdinesh) and [Medium](https://medium.com/@SandeepDinesh).
|
For more cool Kubernetes and Container blog posts, follow me on [Twitter](https://twitter.com/sandeepdinesh) and [Medium](https://medium.com/@SandeepDinesh).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
_--Sandeep Dinesh, Developer Advocate, Google Cloud Platform._
|
_--Sandeep Dinesh, Developer Advocate, Google Cloud Platform._
|
||||||
|
|||||||
+56
@@ -0,0 +1,56 @@
|
|||||||
|
---
|
||||||
|
layout: blog
|
||||||
|
title: Supporting the Evolving Ingress Specification in Kubernetes 1.18
|
||||||
|
date: 2020-06-05
|
||||||
|
slug: Supporting-the-Evolving-Ingress-Specification-in-Kubernetes-1.18
|
||||||
|
---
|
||||||
|
|
||||||
|
**Authors:** Alex Gervais (Datawire.io)
|
||||||
|
|
||||||
|
Earlier this year, the Kubernetes team released [Kubernetes 1.18](https://kubernetes.io/blog/2020/03/25/kubernetes-1-18-release-announcement/), which extended Ingress. In this blog post, we’ll walk through what’s new in the new Ingress specification, what it means for your applications, and how to upgrade to an ingress controller that supports this new specification.
|
||||||
|
|
||||||
|
### What is Kubernetes Ingress
|
||||||
|
When deploying your applications in Kubernetes, one of the first challenges many people encounter is how to get traffic into their cluster. [Kubernetes ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) is a collection of routing rules that govern how external users access services running in a Kubernetes cluster. There are [three general approaches](https://blog.getambassador.io/kubernetes-ingress-nodeport-load-balancers-and-ingress-controllers-6e29f1c44f2d) for exposing your application:
|
||||||
|
|
||||||
|
* Using a `NodePort` to expose your application on a port across each of your nodes
|
||||||
|
* Using a `LoadBalancer` service to create an external load balancer that points to a Kubernetes service in your cluster
|
||||||
|
* Using a Kubernetes Ingress resource
|
||||||
|
|
||||||
|
### What’s new in Kubernetes 1.18 Ingress
|
||||||
|
There are three significant additions to the Ingress API in Kubernetes 1.18:
|
||||||
|
|
||||||
|
* A new `pathType` field
|
||||||
|
* A new `IngressClass` resource
|
||||||
|
* Support for wildcards in hostnames
|
||||||
|
|
||||||
|
The new `pathType` field allows you to specify how Ingress paths should match.
|
||||||
|
The field supports three types: `ImplementationSpecific` (default), `exact`, and `prefix`. Explicitly defining the expected behavior of path matching will allow every ingress-controller to support a user’s needs and will increase portability between ingress-controller implementation solutions.
|
||||||
|
|
||||||
|
The `IngressClass` resource specifies how Ingresses should be implemented by controllers. This was added to formalize the commonly used but never standardized `kubernetes.io/ingress.class` annotation and allow for implementation-specific extensions and configuration.
|
||||||
|
|
||||||
|
You can read more about these changes, as well as the support for wildcards in hostnames in more detail in [a previous blog post](https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/).
|
||||||
|
|
||||||
|
## Supporting Kubernetes ingress
|
||||||
|
[Ambassador](https://www.getambassador.io) is an open-source Envoy-based ingress controller. We believe strongly in supporting common standards such as Kubernetes ingress, which we adopted and [announced our initial support for back in 2019](https://blog.getambassador.io/ambassador-ingress-controller-better-config-reporting-updated-envoy-proxy-99dc9139e28f).
|
||||||
|
|
||||||
|
Every Ambassador release goes through rigorous testing. Therefore, we also contributed an [open conformance test suite](https://github.com/kubernetes-sigs/ingress-controller-conformance), supporting Kubernetes ingress. We wrote the initial bits of test code and will keep iterating over the newly added features and different versions of the Ingress specification as it evolves to a stable v1 GA release. Documentation and usage samples, is one of our top priorities. We understand how complex usage can be, especially when transitioning from a previous version of an API.
|
||||||
|
|
||||||
|
Following a test-driven development approach, the first step we took in supporting Ingress improvements in Ambassador was to translate the revised specification -- both in terms of API and behavior -- into a comprehensible test suite. The test suite, although still under heavy development and going through multiple iterations, was rapidly added to the Ambassador CI infrastructure and acceptance criteria. This means every change to the Ambassador codebase going forward will be compliant with the Ingress API and be tested end-to-end in a lightweight [KIND cluster](https://kind.sigs.k8s.io/). Using KIND allowed us to make rapid improvements while limiting our cloud provider infrastructure bill and testing out unreleased Kubernetes features with pre-release builds.
|
||||||
|
|
||||||
|
### Adopting a new specification
|
||||||
|
With a global comprehension of additions to Ingress introduced in Kubernetes 1.18 and a test suite on hand, we tackled the task of adapting the Ambassador code so that it would support translating the high-level Ingress API resources into Envoy configurations and constructs. Luckily Ambassador already supported previous versions of ingress functionalities so the development effort was incremental.
|
||||||
|
|
||||||
|
We settled on a controller name of `getambassador.io/ingress-controller`. This value, consistent with Ambassador's domain and CRD versions, must be used to tie in an IngressClass `spec.controller` with an Ambassador deployment. The new IngressClass resource allows for extensibility by setting a `spec.parameters` field. At the moment Ambassador makes no use of this field and its usage is reserved for future development.
|
||||||
|
|
||||||
|
Paths can now define different matching behaviors using the `pathType` field. The field will default to a value of `ImplementationSpecific`, which uses the same matching rules as the [Ambassador Mappings](https://www.getambassador.io/docs/latest/topics/using/mappings/) prefix field and previous Ingress specification for backward compatibility reasons.
|
||||||
|
|
||||||
|
### Kubernetes Ingress Controllers
|
||||||
|
A comprehensive [list of Kubernetes ingress controllers](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) is available in the Kubernetes documentation. Currently, Ambassador is the only ingress controller that supports these new additions to the ingress specification. Powered by the [Envoy Proxy](https://www.envoyproxy.io), Ambassador is the fastest way for you to try out the new ingress specification today.
|
||||||
|
|
||||||
|
Check out the following resources:
|
||||||
|
|
||||||
|
* Ambassador on [GitHub](https://www.github.com/datawire/ambassador)
|
||||||
|
* The Ambassador [documentation](https://www.getambassador.io/docs)
|
||||||
|
* [Improvements to the Ingress API](https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/)
|
||||||
|
|
||||||
|
Or join the community on [Slack](http://d6e.co/slack)!
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
---
|
---
|
||||||
title: Concepts
|
title: Concepts
|
||||||
main_menu: true
|
main_menu: true
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 40
|
weight: 40
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
The Concepts section helps you learn about the parts of the Kubernetes system and the abstractions Kubernetes uses to represent your {{< glossary_tooltip text="cluster" term_id="cluster" length="all" >}}, and helps you obtain a deeper understanding of how Kubernetes works.
|
The Concepts section helps you learn about the parts of the Kubernetes system and the abstractions Kubernetes uses to represent your {{< glossary_tooltip text="cluster" term_id="cluster" length="all" >}}, and helps you obtain a deeper understanding of how Kubernetes works.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
@@ -60,12 +60,13 @@ The Kubernetes master is responsible for maintaining the desired state for your
|
|||||||
The nodes in a cluster are the machines (VMs, physical servers, etc) that run your applications and cloud workflows. The Kubernetes master controls each node; you'll rarely interact with nodes directly.
|
The nodes in a cluster are the machines (VMs, physical servers, etc) that run your applications and cloud workflows. The Kubernetes master controls each node; you'll rarely interact with nodes directly.
|
||||||
|
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
If you would like to write a concept page, see
|
If you would like to write a concept page, see
|
||||||
[Using Page Templates](/docs/home/contribute/page-templates/)
|
[Page Content Types](/docs/home/contribute/style/page-content-types/#concept)
|
||||||
for information about the concept page type and the concept template.
|
for information about the concept page types.
|
||||||
|
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
title: Cloud Controller Manager
|
title: Cloud Controller Manager
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 40
|
weight: 40
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< feature-state state="beta" for_k8s_version="v1.11" >}}
|
{{< feature-state state="beta" for_k8s_version="v1.11" >}}
|
||||||
|
|
||||||
@@ -17,9 +17,9 @@ components.
|
|||||||
The cloud-controller-manager is structured using a plugin
|
The cloud-controller-manager is structured using a plugin
|
||||||
mechanism that allows different cloud providers to integrate their platforms with Kubernetes.
|
mechanism that allows different cloud providers to integrate their platforms with Kubernetes.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Design
|
## Design
|
||||||
|
|
||||||
@@ -200,8 +200,9 @@ rules:
|
|||||||
- update
|
- update
|
||||||
```
|
```
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
{{% capture whatsnext %}}
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
[Cloud Controller Manager Administration](/docs/tasks/administer-cluster/running-cloud-controller/#cloud-controller-manager)
|
[Cloud Controller Manager Administration](/docs/tasks/administer-cluster/running-cloud-controller/#cloud-controller-manager)
|
||||||
has instructions on running and managing the cloud controller manager.
|
has instructions on running and managing the cloud controller manager.
|
||||||
|
|
||||||
@@ -212,4 +213,3 @@ The cloud controller manager uses Go interfaces to allow implementations from an
|
|||||||
The implementation of the shared controllers highlighted in this document (Node, Route, and Service), and some scaffolding along with the shared cloudprovider interface, is part of the Kubernetes core. Implementations specific to cloud providers are outside the core of Kubernetes and implement the `CloudProvider` interface.
|
The implementation of the shared controllers highlighted in this document (Node, Route, and Service), and some scaffolding along with the shared cloudprovider interface, is part of the Kubernetes core. Implementations specific to cloud providers are outside the core of Kubernetes and implement the `CloudProvider` interface.
|
||||||
|
|
||||||
For more information about developing plugins, see [Developing Cloud Controller Manager](/docs/tasks/administer-cluster/developing-cloud-controller-manager/).
|
For more information about developing plugins, see [Developing Cloud Controller Manager](/docs/tasks/administer-cluster/developing-cloud-controller-manager/).
|
||||||
{{% /capture %}}
|
|
||||||
@@ -3,22 +3,22 @@ reviewers:
|
|||||||
- dchen1107
|
- dchen1107
|
||||||
- liggitt
|
- liggitt
|
||||||
title: Control Plane-Node Communication
|
title: Control Plane-Node Communication
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 20
|
weight: 20
|
||||||
aliases:
|
aliases:
|
||||||
- master-node-communication
|
- master-node-communication
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
This document catalogs the communication paths between the control plane (really the apiserver) and the Kubernetes cluster. The intent is to allow users to customize their installation to harden the network configuration such that the cluster can be run on an untrusted network (or on fully public IPs on a cloud provider).
|
This document catalogs the communication paths between the control plane (really the apiserver) and the Kubernetes cluster. The intent is to allow users to customize their installation to harden the network configuration such that the cluster can be run on an untrusted network (or on fully public IPs on a cloud provider).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Node to Control Plane
|
## Node to Control Plane
|
||||||
All communication paths from the nodes to the control plane terminate at the apiserver (none of the other master components are designed to expose remote services). In a typical deployment, the apiserver is configured to listen for remote connections on a secure HTTPS port (443) with one or more forms of client [authentication](/docs/reference/access-authn-authz/authentication/) enabled.
|
Kubernetes has a "hub-and-spoke" API pattern. All API usage from nodes (or the pods they run) terminate at the apiserver (none of the other control plane components are designed to expose remote services). The apiserver is configured to listen for remote connections on a secure HTTPS port (typically 443) with one or more forms of client [authentication](/docs/reference/access-authn-authz/authentication/) enabled.
|
||||||
One or more forms of [authorization](/docs/reference/access-authn-authz/authorization/) should be enabled, especially if [anonymous requests](/docs/reference/access-authn-authz/authentication/#anonymous-requests) or [service account tokens](/docs/reference/access-authn-authz/authentication/#service-account-tokens) are allowed.
|
One or more forms of [authorization](/docs/reference/access-authn-authz/authorization/) should be enabled, especially if [anonymous requests](/docs/reference/access-authn-authz/authentication/#anonymous-requests) or [service account tokens](/docs/reference/access-authn-authz/authentication/#service-account-tokens) are allowed.
|
||||||
|
|
||||||
Nodes should be provisioned with the public root certificate for the cluster such that they can connect securely to the apiserver along with valid client credentials. For example, on a default GKE deployment, the client credentials provided to the kubelet are in the form of a client certificate. See [kubelet TLS bootstrapping](/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/) for automated provisioning of kubelet client certificates.
|
Nodes should be provisioned with the public root certificate for the cluster such that they can connect securely to the apiserver along with valid client credentials. For example, on a default GKE deployment, the client credentials provided to the kubelet are in the form of a client certificate. See [kubelet TLS bootstrapping](/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/) for automated provisioning of kubelet client certificates.
|
||||||
@@ -31,9 +31,11 @@ The control plane components also communicate with the cluster apiserver over th
|
|||||||
As a result, the default operating mode for connections from the nodes and pods running on the nodes to the control plane is secured by default and can run over untrusted and/or public networks.
|
As a result, the default operating mode for connections from the nodes and pods running on the nodes to the control plane is secured by default and can run over untrusted and/or public networks.
|
||||||
|
|
||||||
## Control Plane to node
|
## Control Plane to node
|
||||||
|
|
||||||
There are two primary communication paths from the control plane (apiserver) to the nodes. The first is from the apiserver to the kubelet process which runs on each node in the cluster. The second is from the apiserver to any node, pod, or service through the apiserver's proxy functionality.
|
There are two primary communication paths from the control plane (apiserver) to the nodes. The first is from the apiserver to the kubelet process which runs on each node in the cluster. The second is from the apiserver to any node, pod, or service through the apiserver's proxy functionality.
|
||||||
|
|
||||||
### apiserver to kubelet
|
### apiserver to kubelet
|
||||||
|
|
||||||
The connections from the apiserver to the kubelet are used for:
|
The connections from the apiserver to the kubelet are used for:
|
||||||
|
|
||||||
* Fetching logs for pods.
|
* Fetching logs for pods.
|
||||||
@@ -61,9 +63,10 @@ This tunnel ensures that the traffic is not exposed outside of the network in wh
|
|||||||
SSH tunnels are currently deprecated so you shouldn't opt to use them unless you know what you are doing. The Konnectivity service is a replacement for this communication channel.
|
SSH tunnels are currently deprecated so you shouldn't opt to use them unless you know what you are doing. The Konnectivity service is a replacement for this communication channel.
|
||||||
|
|
||||||
### Konnectivity service
|
### Konnectivity service
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.18" state="beta" >}}
|
{{< feature-state for_k8s_version="v1.18" state="beta" >}}
|
||||||
|
|
||||||
As a replacement to the SSH tunnels, the Konnectivity service provides TCP level proxy for the control plane to Cluster communication. The Konnectivity consists of two parts, the Konnectivity server and the Konnectivity agents, running in the control plane network and the nodes network respectively. The Konnectivity agents initiate connections to the Konnectivity server and maintain the connections.
|
As a replacement to the SSH tunnels, the Konnectivity service provides TCP level proxy for the control plane to cluster communication. The Konnectivity service consists of two parts: the Konnectivity server and the Konnectivity agents, running in the control plane network and the nodes network respectively. The Konnectivity agents initiate connections to the Konnectivity server and maintain the network connections.
|
||||||
All control plane to nodes traffic then goes through these connections.
|
After enabling the Konnectivity service, all control plane to nodes traffic goes through these connections.
|
||||||
|
|
||||||
See [Konnectivity Service Setup](/docs/tasks/setup-konnectivity/) on how to set it up in your cluster.
|
Follow the [Konnectivity service task](/docs/tasks/extend-kubernetes/setup-konnectivity/) to set up the Konnectivity service in your cluster.
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
title: Controllers
|
title: Controllers
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 30
|
weight: 30
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
In robotics and automation, a _control loop_ is
|
In robotics and automation, a _control loop_ is
|
||||||
a non-terminating loop that regulates the state of a system.
|
a non-terminating loop that regulates the state of a system.
|
||||||
@@ -18,10 +18,10 @@ closer to the desired state, by turning equipment on or off.
|
|||||||
|
|
||||||
{{< glossary_definition term_id="controller" length="short">}}
|
{{< glossary_definition term_id="controller" length="short">}}
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Controller pattern
|
## Controller pattern
|
||||||
|
|
||||||
@@ -150,11 +150,12 @@ You can run your own controller as a set of Pods,
|
|||||||
or externally to Kubernetes. What fits best will depend on what that particular
|
or externally to Kubernetes. What fits best will depend on what that particular
|
||||||
controller does.
|
controller does.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* Read about the [Kubernetes control plane](/docs/concepts/#kubernetes-control-plane)
|
* Read about the [Kubernetes control plane](/docs/concepts/#kubernetes-control-plane)
|
||||||
* Discover some of the basic [Kubernetes objects](/docs/concepts/#kubernetes-objects)
|
* Discover some of the basic [Kubernetes objects](/docs/concepts/#kubernetes-objects)
|
||||||
* Learn more about the [Kubernetes API](/docs/concepts/overview/kubernetes-api/)
|
* Learn more about the [Kubernetes API](/docs/concepts/overview/kubernetes-api/)
|
||||||
* If you want to write your own controller, see [Extension Patterns](/docs/concepts/extend-kubernetes/extend-cluster/#extension-patterns) in Extending Kubernetes.
|
* If you want to write your own controller, see [Extension Patterns](/docs/concepts/extend-kubernetes/extend-cluster/#extension-patterns) in Extending Kubernetes.
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ reviewers:
|
|||||||
- caesarxuchao
|
- caesarxuchao
|
||||||
- dchen1107
|
- dchen1107
|
||||||
title: Nodes
|
title: Nodes
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Kubernetes runs your workload by placing containers into Pods to run on _Nodes_.
|
Kubernetes runs your workload by placing containers into Pods to run on _Nodes_.
|
||||||
A node may be a virtual or physical machine, depending on the cluster. Each node
|
A node may be a virtual or physical machine, depending on the cluster. Each node
|
||||||
@@ -23,9 +23,9 @@ The [components](/docs/concepts/overview/components/#node-components) on a node
|
|||||||
{{< glossary_tooltip text="container runtime" term_id="container-runtime" >}}, and the
|
{{< glossary_tooltip text="container runtime" term_id="container-runtime" >}}, and the
|
||||||
{{< glossary_tooltip text="kube-proxy" term_id="kube-proxy" >}}.
|
{{< glossary_tooltip text="kube-proxy" term_id="kube-proxy" >}}.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Management
|
## Management
|
||||||
|
|
||||||
@@ -332,12 +332,13 @@ the kubelet can use topology hints when making resource assignment decisions.
|
|||||||
See [Control Topology Management Policies on a Node](/docs/tasks/administer-cluster/topology-manager/)
|
See [Control Topology Management Policies on a Node](/docs/tasks/administer-cluster/topology-manager/)
|
||||||
for more information.
|
for more information.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
{{% capture whatsnext %}}
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* Learn about the [components](/docs/concepts/overview/components/#node-components) that make up a node.
|
* Learn about the [components](/docs/concepts/overview/components/#node-components) that make up a node.
|
||||||
* Read the [API definition for Node](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#node-v1-core).
|
* Read the [API definition for Node](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#node-v1-core).
|
||||||
* Read the [Node](https://git.k8s.io/community/contributors/design-proposals/architecture/architecture.md#the-kubernetes-node)
|
* Read the [Node](https://git.k8s.io/community/contributors/design-proposals/architecture/architecture.md#the-kubernetes-node)
|
||||||
section of the architecture design document.
|
section of the architecture design document.
|
||||||
* Read about [taints and tolerations](/docs/concepts/configuration/taint-and-toleration/).
|
* Read about [taints and tolerations](/docs/concepts/configuration/taint-and-toleration/).
|
||||||
* Read about [cluster autoscaling](/docs/tasks/administer-cluster/cluster-management/#cluster-autoscaling).
|
* Read about [cluster autoscaling](/docs/tasks/administer-cluster/cluster-management/#cluster-autoscaling).
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
---
|
---
|
||||||
title: Installing Addons
|
title: Installing Addons
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
|
|
||||||
Add-ons extend the functionality of Kubernetes.
|
Add-ons extend the functionality of Kubernetes.
|
||||||
@@ -12,10 +12,10 @@ This page lists some of the available add-ons and links to their respective inst
|
|||||||
|
|
||||||
Add-ons in each section are sorted alphabetically - the ordering does not imply any preferential status.
|
Add-ons in each section are sorted alphabetically - the ordering does not imply any preferential status.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Networking and Network Policy
|
## Networking and Network Policy
|
||||||
|
|
||||||
@@ -55,4 +55,4 @@ There are several other add-ons documented in the deprecated [cluster/addons](ht
|
|||||||
|
|
||||||
Well-maintained ones should be linked to here. PRs welcome!
|
Well-maintained ones should be linked to here. PRs welcome!
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
---
|
---
|
||||||
title: Certificates
|
title: Certificates
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 20
|
weight: 20
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
When using client certificate authentication, you can generate certificates
|
When using client certificate authentication, you can generate certificates
|
||||||
manually through `easyrsa`, `openssl` or `cfssl`.
|
manually through `easyrsa`, `openssl` or `cfssl`.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
### easyrsa
|
### easyrsa
|
||||||
|
|
||||||
@@ -249,4 +249,4 @@ You can use the `certificates.k8s.io` API to provision
|
|||||||
x509 certificates to use for authentication as documented
|
x509 certificates to use for authentication as documented
|
||||||
[here](/docs/tasks/tls/managing-tls-in-a-cluster).
|
[here](/docs/tasks/tls/managing-tls-in-a-cluster).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
---
|
---
|
||||||
title: Cloud Providers
|
title: Cloud Providers
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 30
|
weight: 30
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
This page explains how to manage Kubernetes running on a specific
|
This page explains how to manage Kubernetes running on a specific
|
||||||
cloud provider.
|
cloud provider.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
### kubeadm
|
### kubeadm
|
||||||
[kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/) is a popular option for creating kubernetes clusters.
|
[kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/) is a popular option for creating kubernetes clusters.
|
||||||
kubeadm has configuration options to specify configuration information for cloud providers. For example a typical
|
kubeadm has configuration options to specify configuration information for cloud providers. For example a typical
|
||||||
@@ -363,7 +363,7 @@ Kubernetes network plugin and should appear in the `[Route]` section of the
|
|||||||
|
|
||||||
[kubenet]: /docs/concepts/cluster-administration/network-plugins/#kubenet
|
[kubenet]: /docs/concepts/cluster-administration/network-plugins/#kubenet
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
## OVirt
|
## OVirt
|
||||||
|
|
||||||
|
|||||||
@@ -3,16 +3,16 @@ reviewers:
|
|||||||
- davidopp
|
- davidopp
|
||||||
- lavalamp
|
- lavalamp
|
||||||
title: Cluster Administration Overview
|
title: Cluster Administration Overview
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
The cluster administration overview is for anyone creating or administering a Kubernetes cluster.
|
The cluster administration overview is for anyone creating or administering a Kubernetes cluster.
|
||||||
It assumes some familiarity with core Kubernetes [concepts](/docs/concepts/).
|
It assumes some familiarity with core Kubernetes [concepts](/docs/concepts/).
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
## Planning a cluster
|
## Planning a cluster
|
||||||
|
|
||||||
See the guides in [Setup](/docs/setup/) for examples of how to plan, set up, and configure Kubernetes clusters. The solutions listed in this article are called *distros*.
|
See the guides in [Setup](/docs/setup/) for examples of how to plan, set up, and configure Kubernetes clusters. The solutions listed in this article are called *distros*.
|
||||||
@@ -68,6 +68,6 @@ Note: Not all distros are actively maintained. Choose distros which have been te
|
|||||||
|
|
||||||
* [Logging and Monitoring Cluster Activity](/docs/concepts/cluster-administration/logging/) explains how logging in Kubernetes works and how to implement it.
|
* [Logging and Monitoring Cluster Activity](/docs/concepts/cluster-administration/logging/) explains how logging in Kubernetes works and how to implement it.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
title: API Priority and Fairness
|
title: API Priority and Fairness
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
min-kubernetes-server-version: v1.18
|
min-kubernetes-server-version: v1.18
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< feature-state state="alpha" for_k8s_version="v1.18" >}}
|
{{< feature-state state="alpha" for_k8s_version="v1.18" >}}
|
||||||
|
|
||||||
@@ -33,9 +33,9 @@ the `--max-requests-inflight` flag without the API Priority and
|
|||||||
Fairness feature enabled.
|
Fairness feature enabled.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Enabling API Priority and Fairness
|
## Enabling API Priority and Fairness
|
||||||
|
|
||||||
@@ -136,7 +136,7 @@ classes:
|
|||||||
controllers.
|
controllers.
|
||||||
|
|
||||||
* The `workload-low` priority level is for requests from any other service
|
* The `workload-low` priority level is for requests from any other service
|
||||||
account, which will typically include all requests from controllers runing in
|
account, which will typically include all requests from controllers running in
|
||||||
Pods.
|
Pods.
|
||||||
|
|
||||||
* The `global-default` priority level handles all other traffic, e.g.
|
* The `global-default` priority level handles all other traffic, e.g.
|
||||||
@@ -366,13 +366,13 @@ poorly-behaved workloads that may be harming system health.
|
|||||||
request and the PriorityLevel to which it was assigned.
|
request and the PriorityLevel to which it was assigned.
|
||||||
|
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
For background information on design details for API priority and fairness, see
|
For background information on design details for API priority and fairness, see
|
||||||
the [enhancement proposal](https://github.com/kubernetes/enhancements/blob/master/keps/sig-api-machinery/20190228-priority-and-fairness.md).
|
the [enhancement proposal](https://github.com/kubernetes/enhancements/blob/master/keps/sig-api-machinery/20190228-priority-and-fairness.md).
|
||||||
You can make suggestions and feature requests via [SIG API
|
You can make suggestions and feature requests via [SIG API
|
||||||
Machinery](https://github.com/kubernetes/community/tree/master/sig-api-machinery).
|
Machinery](https://github.com/kubernetes/community/tree/master/sig-api-machinery).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
@@ -1,20 +1,20 @@
|
|||||||
---
|
---
|
||||||
reviewers:
|
reviewers:
|
||||||
title: Configuring kubelet Garbage Collection
|
title: Configuring kubelet Garbage Collection
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 70
|
weight: 70
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Garbage collection is a helpful function of kubelet that will clean up unused images and unused containers. Kubelet will perform garbage collection for containers every minute and garbage collection for images every five minutes.
|
Garbage collection is a helpful function of kubelet that will clean up unused images and unused containers. Kubelet will perform garbage collection for containers every minute and garbage collection for images every five minutes.
|
||||||
|
|
||||||
External garbage collection tools are not recommended as these tools can potentially break the behavior of kubelet by removing containers expected to exist.
|
External garbage collection tools are not recommended as these tools can potentially break the behavior of kubelet by removing containers expected to exist.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Image Collection
|
## Image Collection
|
||||||
|
|
||||||
@@ -77,10 +77,11 @@ Including:
|
|||||||
| `--low-diskspace-threshold-mb` | `--eviction-hard` or `eviction-soft` | eviction generalizes disk thresholds to other resources |
|
| `--low-diskspace-threshold-mb` | `--eviction-hard` or `eviction-soft` | eviction generalizes disk thresholds to other resources |
|
||||||
| `--outofdisk-transition-frequency` | `--eviction-pressure-transition-period` | eviction generalizes disk pressure transition to other resources |
|
| `--outofdisk-transition-frequency` | `--eviction-pressure-transition-period` | eviction generalizes disk pressure transition to other resources |
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
See [Configuring Out Of Resource Handling](/docs/tasks/administer-cluster/out-of-resource/) for more details.
|
See [Configuring Out Of Resource Handling](/docs/tasks/administer-cluster/out-of-resource/) for more details.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -3,20 +3,20 @@ reviewers:
|
|||||||
- piosz
|
- piosz
|
||||||
- x13n
|
- x13n
|
||||||
title: Logging Architecture
|
title: Logging Architecture
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 60
|
weight: 60
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Application and systems logs can help you understand what is happening inside your cluster. The logs are particularly useful for debugging problems and monitoring cluster activity. Most modern applications have some kind of logging mechanism; as such, most container engines are likewise designed to support some kind of logging. The easiest and most embraced logging method for containerized applications is to write to the standard output and standard error streams.
|
Application and systems logs can help you understand what is happening inside your cluster. The logs are particularly useful for debugging problems and monitoring cluster activity. Most modern applications have some kind of logging mechanism; as such, most container engines are likewise designed to support some kind of logging. The easiest and most embraced logging method for containerized applications is to write to the standard output and standard error streams.
|
||||||
|
|
||||||
However, the native functionality provided by a container engine or runtime is usually not enough for a complete logging solution. For example, if a container crashes, a pod is evicted, or a node dies, you'll usually still want to access your application's logs. As such, logs should have a separate storage and lifecycle independent of nodes, pods, or containers. This concept is called _cluster-level-logging_. Cluster-level logging requires a separate backend to store, analyze, and query logs. Kubernetes provides no native storage solution for log data, but you can integrate many existing logging solutions into your Kubernetes cluster.
|
However, the native functionality provided by a container engine or runtime is usually not enough for a complete logging solution. For example, if a container crashes, a pod is evicted, or a node dies, you'll usually still want to access your application's logs. As such, logs should have a separate storage and lifecycle independent of nodes, pods, or containers. This concept is called _cluster-level-logging_. Cluster-level logging requires a separate backend to store, analyze, and query logs. Kubernetes provides no native storage solution for log data, but you can integrate many existing logging solutions into your Kubernetes cluster.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
Cluster-level logging architectures are described in assumption that
|
Cluster-level logging architectures are described in assumption that
|
||||||
a logging backend is present inside or outside of your cluster. If you're
|
a logging backend is present inside or outside of your cluster. If you're
|
||||||
@@ -267,4 +267,4 @@ You can implement cluster-level logging by exposing or pushing logs directly fro
|
|||||||
every application; however, the implementation for such a logging mechanism
|
every application; however, the implementation for such a logging mechanism
|
||||||
is outside the scope of Kubernetes.
|
is outside the scope of Kubernetes.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,18 +2,18 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
- janetkuo
|
- janetkuo
|
||||||
title: Managing Resources
|
title: Managing Resources
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 40
|
weight: 40
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
You've deployed your application and exposed it via a service. Now what? Kubernetes provides a number of tools to help you manage your application deployment, including scaling and updating. Among the features that we will discuss in more depth are [configuration files](/docs/concepts/configuration/overview/) and [labels](/docs/concepts/overview/working-with-objects/labels/).
|
You've deployed your application and exposed it via a service. Now what? Kubernetes provides a number of tools to help you manage your application deployment, including scaling and updating. Among the features that we will discuss in more depth are [configuration files](/docs/concepts/configuration/overview/) and [labels](/docs/concepts/overview/working-with-objects/labels/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Organizing resource configurations
|
## Organizing resource configurations
|
||||||
|
|
||||||
@@ -402,7 +402,7 @@ For more information, please see [kubectl edit](/docs/reference/generated/kubect
|
|||||||
|
|
||||||
You can use `kubectl patch` to update API objects in place. This command supports JSON patch,
|
You can use `kubectl patch` to update API objects in place. This command supports JSON patch,
|
||||||
JSON merge patch, and strategic merge patch. See
|
JSON merge patch, and strategic merge patch. See
|
||||||
[Update API Objects in Place Using kubectl patch](/docs/tasks/run-application/update-api-object-kubectl-patch/)
|
[Update API Objects in Place Using kubectl patch](/docs/tasks/manage-kubernetes-objects/update-api-object-kubectl-patch/)
|
||||||
and
|
and
|
||||||
[kubectl patch](/docs/reference/generated/kubectl/kubectl-commands/#patch).
|
[kubectl patch](/docs/reference/generated/kubectl/kubectl-commands/#patch).
|
||||||
|
|
||||||
@@ -449,11 +449,12 @@ kubectl edit deployment/my-nginx
|
|||||||
|
|
||||||
That's it! The Deployment will declaratively update the deployed nginx application progressively behind the scene. It ensures that only a certain number of old replicas may be down while they are being updated, and only a certain number of new replicas may be created above the desired number of pods. To learn more details about it, visit [Deployment page](/docs/concepts/workloads/controllers/deployment/).
|
That's it! The Deployment will declaratively update the deployed nginx application progressively behind the scene. It ensures that only a certain number of old replicas may be down while they are being updated, and only a certain number of new replicas may be created above the desired number of pods. To learn more details about it, visit [Deployment page](/docs/concepts/workloads/controllers/deployment/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
- Learn about [how to use `kubectl` for application introspection and debugging](/docs/tasks/debug-application-cluster/debug-application-introspection/).
|
- Learn about [how to use `kubectl` for application introspection and debugging](/docs/tasks/debug-application-cluster/debug-application-introspection/).
|
||||||
- See [Configuration Best Practices and Tips](/docs/concepts/configuration/overview/).
|
- See [Configuration Best Practices and Tips](/docs/concepts/configuration/overview/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -4,21 +4,21 @@ reviewers:
|
|||||||
- brancz
|
- brancz
|
||||||
- logicalhan
|
- logicalhan
|
||||||
- RainbowMango
|
- RainbowMango
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 60
|
weight: 60
|
||||||
aliases:
|
aliases:
|
||||||
- controller-metrics.md
|
- controller-metrics.md
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
System component metrics can give a better look into what is happening inside them. Metrics are particularly useful for building dashboards and alerts.
|
System component metrics can give a better look into what is happening inside them. Metrics are particularly useful for building dashboards and alerts.
|
||||||
|
|
||||||
Metrics in Kubernetes control plane are emitted in [prometheus format](https://prometheus.io/docs/instrumenting/exposition_formats/) and are human readable.
|
Metrics in Kubernetes control plane are emitted in [prometheus format](https://prometheus.io/docs/instrumenting/exposition_formats/) and are human readable.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Metrics in Kubernetes
|
## Metrics in Kubernetes
|
||||||
|
|
||||||
@@ -124,10 +124,11 @@ cloudprovider_gce_api_request_duration_seconds { request = "detach_disk"}
|
|||||||
cloudprovider_gce_api_request_duration_seconds { request = "list_disk"}
|
cloudprovider_gce_api_request_duration_seconds { request = "list_disk"}
|
||||||
```
|
```
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* Read about the [Prometheus text format](https://github.com/prometheus/docs/blob/master/content/docs/instrumenting/exposition_formats.md#text-based-format) for metrics
|
* Read about the [Prometheus text format](https://github.com/prometheus/docs/blob/master/content/docs/instrumenting/exposition_formats.md#text-based-format) for metrics
|
||||||
* See the list of [stable Kubernetes metrics](https://github.com/kubernetes/kubernetes/blob/master/test/instrumentation/testdata/stable-metrics-list.yaml)
|
* See the list of [stable Kubernetes metrics](https://github.com/kubernetes/kubernetes/blob/master/test/instrumentation/testdata/stable-metrics-list.yaml)
|
||||||
* Read about the [Kubernetes deprecation policy](https://kubernetes.io/docs/reference/using-api/deprecation-policy/#deprecating-a-feature-or-behavior )
|
* Read about the [Kubernetes deprecation policy](https://kubernetes.io/docs/reference/using-api/deprecation-policy/#deprecating-a-feature-or-behavior )
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
- thockin
|
- thockin
|
||||||
title: Cluster Networking
|
title: Cluster Networking
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 50
|
weight: 50
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
Networking is a central part of Kubernetes, but it can be challenging to
|
Networking is a central part of Kubernetes, but it can be challenging to
|
||||||
understand exactly how it is expected to work. There are 4 distinct networking
|
understand exactly how it is expected to work. There are 4 distinct networking
|
||||||
problems to address:
|
problems to address:
|
||||||
@@ -17,10 +17,10 @@ problems to address:
|
|||||||
3. Pod-to-Service communications: this is covered by [services](/docs/concepts/services-networking/service/).
|
3. Pod-to-Service communications: this is covered by [services](/docs/concepts/services-networking/service/).
|
||||||
4. External-to-Service communications: this is covered by [services](/docs/concepts/services-networking/service/).
|
4. External-to-Service communications: this is covered by [services](/docs/concepts/services-networking/service/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
Kubernetes is all about sharing machines between applications. Typically,
|
Kubernetes is all about sharing machines between applications. Typically,
|
||||||
sharing machines requires ensuring that two applications do not try to use the
|
sharing machines requires ensuring that two applications do not try to use the
|
||||||
@@ -312,12 +312,13 @@ Weave Net runs as a [CNI plug-in](https://www.weave.works/docs/net/latest/cni-pl
|
|||||||
or stand-alone. In either version, it doesn't require any configuration or extra code
|
or stand-alone. In either version, it doesn't require any configuration or extra code
|
||||||
to run, and in both cases, the network provides one IP address per pod - as is standard for Kubernetes.
|
to run, and in both cases, the network provides one IP address per pod - as is standard for Kubernetes.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
The early design of the networking model and its rationale, and some future
|
The early design of the networking model and its rationale, and some future
|
||||||
plans are described in more detail in the [networking design
|
plans are described in more detail in the [networking design
|
||||||
document](https://git.k8s.io/community/contributors/design-proposals/network/networking.md).
|
document](https://git.k8s.io/community/contributors/design-proposals/network/networking.md).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
---
|
---
|
||||||
title: Proxies in Kubernetes
|
title: Proxies in Kubernetes
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 90
|
weight: 90
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
This page explains proxies used with Kubernetes.
|
This page explains proxies used with Kubernetes.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Proxies
|
## Proxies
|
||||||
|
|
||||||
@@ -62,6 +62,6 @@ will typically ensure that the latter types are setup correctly.
|
|||||||
|
|
||||||
Proxies have replaced redirect capabilities. Redirects have been deprecated.
|
Proxies have replaced redirect capabilities. Redirects have been deprecated.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
title: ConfigMaps
|
title: ConfigMaps
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 20
|
weight: 20
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< glossary_definition term_id="configmap" prepend="A ConfigMap is" length="all" >}}
|
{{< glossary_definition term_id="configmap" prepend="A ConfigMap is" length="all" >}}
|
||||||
|
|
||||||
@@ -15,9 +15,9 @@ If the data you want to store are confidential, use a
|
|||||||
or use additional (third party) tools to keep your data private.
|
or use additional (third party) tools to keep your data private.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
## Motivation
|
## Motivation
|
||||||
|
|
||||||
Use a ConfigMap for setting configuration data separately from application code.
|
Use a ConfigMap for setting configuration data separately from application code.
|
||||||
@@ -157,13 +157,99 @@ or {{< glossary_tooltip text="operators" term_id="operator-pattern" >}} that
|
|||||||
adjust their behavior based on a ConfigMap.
|
adjust their behavior based on a ConfigMap.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
|
## Using ConfigMaps
|
||||||
|
|
||||||
|
ConfigMaps can be mounted as data volumes. ConfigMaps can also be used by other
|
||||||
|
parts of the system, without being directly exposed to the Pod. For example,
|
||||||
|
ConfigMaps can hold data that other parts of the system should use for configuration.
|
||||||
|
|
||||||
|
### Using ConfigMaps as files from a Pod
|
||||||
|
|
||||||
|
To consume a ConfigMap in a volume in a Pod:
|
||||||
|
|
||||||
|
1. Create a config map or use an existing one. Multiple Pods can reference the same config map.
|
||||||
|
1. Modify your Pod definition to add a volume under `.spec.volumes[]`. Name the volume anything, and have a `.spec.volumes[].configmap.localObjectReference` field set to reference your ConfigMap object.
|
||||||
|
1. Add a `.spec.containers[].volumeMounts[]` to each container that needs the config map. Specify `.spec.containers[].volumeMounts[].readOnly = true` and `.spec.containers[].volumeMounts[].mountPath` to an unused directory name where you would like the config map to appear.
|
||||||
|
1. Modify your image or command line so that the program looks for files in that directory. Each key in the config map `data` map becomes the filename under `mountPath`.
|
||||||
|
|
||||||
|
This is an example of a Pod that mounts a ConfigMap in a volume:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: mypod
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: mypod
|
||||||
|
image: redis
|
||||||
|
volumeMounts:
|
||||||
|
- name: foo
|
||||||
|
mountPath: "/etc/foo"
|
||||||
|
readOnly: true
|
||||||
|
volumes:
|
||||||
|
- name: foo
|
||||||
|
configMap:
|
||||||
|
name: myconfigmap
|
||||||
|
```
|
||||||
|
|
||||||
|
Each ConfigMap you want to use needs to be referred to in `.spec.volumes`.
|
||||||
|
|
||||||
|
If there are multiple containers in the Pod, then each container needs its
|
||||||
|
own `volumeMounts` block, but only one `.spec.volumes` is needed per ConfigMap.
|
||||||
|
|
||||||
|
#### Mounted ConfigMaps are updated automatically
|
||||||
|
|
||||||
|
When a config map currently consumed in a volume is updated, projected keys are eventually updated as well.
|
||||||
|
The kubelet checks whether the mounted config map is fresh on every periodic sync.
|
||||||
|
However, the kubelet uses its local cache for getting the current value of the ConfigMap.
|
||||||
|
The type of the cache is configurable using the `ConfigMapAndSecretChangeDetectionStrategy` field in
|
||||||
|
the [KubeletConfiguration struct](https://github.com/kubernetes/kubernetes/blob/{{< param "docsbranch" >}}/staging/src/k8s.io/kubelet/config/v1beta1/types.go).
|
||||||
|
A ConfigMap can be either propagated by watch (default), ttl-based, or simply redirecting
|
||||||
|
all requests directly to the API server.
|
||||||
|
As a result, the total delay from the moment when the ConfigMap is updated to the moment
|
||||||
|
when new keys are projected to the Pod can be as long as the kubelet sync period + cache
|
||||||
|
propagation delay, where the cache propagation delay depends on the chosen cache type
|
||||||
|
(it equals to watch propagation delay, ttl of cache, or zero correspondingly).
|
||||||
|
|
||||||
|
{{< feature-state for_k8s_version="v1.18" state="alpha" >}}
|
||||||
|
|
||||||
|
The Kubernetes alpha feature _Immutable Secrets and ConfigMaps_ provides an option to set
|
||||||
|
individual Secrets and ConfigMaps as immutable. For clusters that extensively use ConfigMaps
|
||||||
|
(at least tens of thousands of unique ConfigMap to Pod mounts), preventing changes to their
|
||||||
|
data has the following advantages:
|
||||||
|
|
||||||
|
- protects you from accidental (or unwanted) updates that could cause applications outages
|
||||||
|
- improves performance of your cluster by significantly reducing load on kube-apiserver, by
|
||||||
|
closing watches for config maps marked as immutable.
|
||||||
|
|
||||||
|
To use this feature, enable the `ImmutableEmphemeralVolumes`
|
||||||
|
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/) and set
|
||||||
|
your Secret or ConfigMap `immutable` field to `true`. For example:
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
...
|
||||||
|
data:
|
||||||
|
...
|
||||||
|
immutable: true
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< note >}}
|
||||||
|
Once a ConfigMap or Secret is marked as immutable, it is _not_ possible to revert this change
|
||||||
|
nor to mutate the contents of the `data` field. You can only delete and recreate the ConfigMap.
|
||||||
|
Existing Pods maintain a mount point to the deleted ConfigMap - it is recommended to recreate
|
||||||
|
these pods.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
|
||||||
* Read about [Secrets](/docs/concepts/configuration/secret/).
|
* Read about [Secrets](/docs/concepts/configuration/secret/).
|
||||||
* Read [Configure a Pod to Use a ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/).
|
* Read [Configure a Pod to Use a ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/).
|
||||||
* Read [The Twelve-Factor App](https://12factor.net/) to understand the motivation for
|
* Read [The Twelve-Factor App](https://12factor.net/) to understand the motivation for
|
||||||
separating code from configuration.
|
separating code from configuration.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Managing Resources for Containers
|
title: Managing Resources for Containers
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 40
|
weight: 40
|
||||||
feature:
|
feature:
|
||||||
title: Automatic bin packing
|
title: Automatic bin packing
|
||||||
@@ -8,7 +8,7 @@ feature:
|
|||||||
Automatically places containers based on their resource requirements and other constraints, while not sacrificing availability. Mix critical and best-effort workloads in order to drive up utilization and save even more resources.
|
Automatically places containers based on their resource requirements and other constraints, while not sacrificing availability. Mix critical and best-effort workloads in order to drive up utilization and save even more resources.
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
When you specify a {{< glossary_tooltip term_id="pod" >}}, you can optionally specify how
|
When you specify a {{< glossary_tooltip term_id="pod" >}}, you can optionally specify how
|
||||||
much of each resource a {{< glossary_tooltip text="Container" term_id="container" >}} needs.
|
much of each resource a {{< glossary_tooltip text="Container" term_id="container" >}} needs.
|
||||||
@@ -21,10 +21,10 @@ allowed to use more of that resource than the limit you set. The kubelet also re
|
|||||||
at least the _request_ amount of that system resource specifically for that container
|
at least the _request_ amount of that system resource specifically for that container
|
||||||
to use.
|
to use.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Requests and limits
|
## Requests and limits
|
||||||
|
|
||||||
@@ -740,10 +740,11 @@ You can see that the Container was terminated because of `reason:OOM Killed`, wh
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* Get hands-on experience [assigning Memory resources to Containers and Pods](/docs/tasks/configure-pod-container/assign-memory-resource/).
|
* Get hands-on experience [assigning Memory resources to Containers and Pods](/docs/tasks/configure-pod-container/assign-memory-resource/).
|
||||||
|
|
||||||
@@ -758,4 +759,4 @@ You can see that the Container was terminated because of `reason:OOM Killed`, wh
|
|||||||
|
|
||||||
* Read about [project quotas](http://xfs.org/docs/xfsdocs-xml-dev/XFS_User_Guide/tmp/en-US/html/xfs-quotas.html) in XFS
|
* Read about [project quotas](http://xfs.org/docs/xfsdocs-xml-dev/XFS_User_Guide/tmp/en-US/html/xfs-quotas.html) in XFS
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
title: Organizing Cluster Access Using kubeconfig Files
|
title: Organizing Cluster Access Using kubeconfig Files
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 60
|
weight: 60
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Use kubeconfig files to organize information about clusters, users, namespaces, and
|
Use kubeconfig files to organize information about clusters, users, namespaces, and
|
||||||
authentication mechanisms. The `kubectl` command-line tool uses kubeconfig files to
|
authentication mechanisms. The `kubectl` command-line tool uses kubeconfig files to
|
||||||
@@ -25,10 +25,10 @@ variable or by setting the
|
|||||||
For step-by-step instructions on creating and specifying kubeconfig files, see
|
For step-by-step instructions on creating and specifying kubeconfig files, see
|
||||||
[Configure Access to Multiple Clusters](/docs/tasks/access-application-cluster/configure-access-multiple-clusters).
|
[Configure Access to Multiple Clusters](/docs/tasks/access-application-cluster/configure-access-multiple-clusters).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Supporting multiple clusters, users, and authentication mechanisms
|
## Supporting multiple clusters, users, and authentication mechanisms
|
||||||
|
|
||||||
@@ -143,14 +143,15 @@ File references on the command line are relative to the current working director
|
|||||||
In `$HOME/.kube/config`, relative paths are stored relatively, and absolute paths
|
In `$HOME/.kube/config`, relative paths are stored relatively, and absolute paths
|
||||||
are stored absolutely.
|
are stored absolutely.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* [Configure Access to Multiple Clusters](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/)
|
* [Configure Access to Multiple Clusters](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/)
|
||||||
* [`kubectl config`](/docs/reference/generated/kubectl/kubectl-commands#config)
|
* [`kubectl config`](/docs/reference/generated/kubectl/kubectl-commands#config)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,17 +2,17 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
- mikedanese
|
- mikedanese
|
||||||
title: Configuration Best Practices
|
title: Configuration Best Practices
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
This document highlights and consolidates configuration best practices that are introduced throughout the user guide, Getting Started documentation, and examples.
|
This document highlights and consolidates configuration best practices that are introduced throughout the user guide, Getting Started documentation, and examples.
|
||||||
|
|
||||||
This is a living document. If you think of something that is not on this list but might be useful to others, please don't hesitate to file an issue or submit a PR.
|
This is a living document. If you think of something that is not on this list but might be useful to others, please don't hesitate to file an issue or submit a PR.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
## General Configuration Tips
|
## General Configuration Tips
|
||||||
|
|
||||||
- When defining configurations, specify the latest stable API version.
|
- When defining configurations, specify the latest stable API version.
|
||||||
@@ -105,5 +105,5 @@ The caching semantics of the underlying image provider make even `imagePullPolic
|
|||||||
|
|
||||||
- Use `kubectl run` and `kubectl expose` to quickly create single-container Deployments and Services. See [Use a Service to Access an Application in a Cluster](/docs/tasks/access-application-cluster/service-access-application-cluster/) for an example.
|
- Use `kubectl run` and `kubectl expose` to quickly create single-container Deployments and Services. See [Use a Service to Access an Application in a Cluster](/docs/tasks/access-application-cluster/service-access-application-cluster/) for an example.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ reviewers:
|
|||||||
- egernst
|
- egernst
|
||||||
- tallclair
|
- tallclair
|
||||||
title: Pod Overhead
|
title: Pod Overhead
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 50
|
weight: 50
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.18" state="beta" >}}
|
{{< feature-state for_k8s_version="v1.18" state="beta" >}}
|
||||||
|
|
||||||
@@ -19,10 +19,10 @@ _Pod Overhead_ is a feature for accounting for the resources consumed by the Pod
|
|||||||
on top of the container requests & limits.
|
on top of the container requests & limits.
|
||||||
|
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
In Kubernetes, the Pod's overhead is set at
|
In Kubernetes, the Pod's overhead is set at
|
||||||
[admission](/docs/reference/access-authn-authz/extensible-admission-controllers/#what-are-admission-webhooks)
|
[admission](/docs/reference/access-authn-authz/extensible-admission-controllers/#what-are-admission-webhooks)
|
||||||
@@ -188,11 +188,12 @@ running with a defined Overhead. This functionality is not available in the 1.9
|
|||||||
kube-state-metrics, but is expected in a following release. Users will need to build kube-state-metrics
|
kube-state-metrics, but is expected in a following release. Users will need to build kube-state-metrics
|
||||||
from source in the meantime.
|
from source in the meantime.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* [RuntimeClass](/docs/concepts/containers/runtime-class/)
|
* [RuntimeClass](/docs/concepts/containers/runtime-class/)
|
||||||
* [PodOverhead Design](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/20190226-pod-overhead.md)
|
* [PodOverhead Design](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/20190226-pod-overhead.md)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ reviewers:
|
|||||||
- davidopp
|
- davidopp
|
||||||
- wojtek-t
|
- wojtek-t
|
||||||
title: Pod Priority and Preemption
|
title: Pod Priority and Preemption
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 70
|
weight: 70
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.14" state="stable" >}}
|
{{< feature-state for_k8s_version="v1.14" state="stable" >}}
|
||||||
|
|
||||||
@@ -16,9 +16,9 @@ importance of a Pod relative to other Pods. If a Pod cannot be scheduled, the
|
|||||||
scheduler tries to preempt (evict) lower priority Pods to make scheduling of the
|
scheduler tries to preempt (evict) lower priority Pods to make scheduling of the
|
||||||
pending Pod possible.
|
pending Pod possible.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
@@ -407,7 +407,8 @@ usage does not exceed their requests. If a Pod with lower priority is not
|
|||||||
exceeding its requests, it won't be evicted. Another Pod with higher priority
|
exceeding its requests, it won't be evicted. Another Pod with higher priority
|
||||||
that exceeds its requests may be evicted.
|
that exceeds its requests may be evicted.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
{{% capture whatsnext %}}
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* Read about using ResourceQuotas in connection with PriorityClasses: [limit Priority Class consumption by default](/docs/concepts/policy/resource-quotas/#limit-priority-class-consumption-by-default)
|
* Read about using ResourceQuotas in connection with PriorityClasses: [limit Priority Class consumption by default](/docs/concepts/policy/resource-quotas/#limit-priority-class-consumption-by-default)
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -4,19 +4,19 @@ reviewers:
|
|||||||
- k82cn
|
- k82cn
|
||||||
- ahg-g
|
- ahg-g
|
||||||
title: Resource Bin Packing for Extended Resources
|
title: Resource Bin Packing for Extended Resources
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 50
|
weight: 50
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.16" state="alpha" >}}
|
{{< feature-state for_k8s_version="v1.16" state="alpha" >}}
|
||||||
|
|
||||||
The kube-scheduler can be configured to enable bin packing of resources along with extended resources using `RequestedToCapacityRatioResourceAllocation` priority function. Priority functions can be used to fine-tune the kube-scheduler as per custom needs.
|
The kube-scheduler can be configured to enable bin packing of resources along with extended resources using `RequestedToCapacityRatioResourceAllocation` priority function. Priority functions can be used to fine-tune the kube-scheduler as per custom needs.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Enabling Bin Packing using RequestedToCapacityRatioResourceAllocation
|
## Enabling Bin Packing using RequestedToCapacityRatioResourceAllocation
|
||||||
|
|
||||||
@@ -194,4 +194,4 @@ NodeScore = (5 * 5) + (7 * 1) + (10 * 3) / (5 + 1 + 3)
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
- mikedanese
|
- mikedanese
|
||||||
title: Secrets
|
title: Secrets
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
feature:
|
feature:
|
||||||
title: Secret and configuration management
|
title: Secret and configuration management
|
||||||
description: >
|
description: >
|
||||||
@@ -10,16 +10,16 @@ feature:
|
|||||||
weight: 30
|
weight: 30
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Kubernetes Secrets let you store and manage sensitive information, such
|
Kubernetes Secrets let you store and manage sensitive information, such
|
||||||
as passwords, OAuth tokens, and ssh keys. Storing confidential information in a Secret
|
as passwords, OAuth tokens, and ssh keys. Storing confidential information in a Secret
|
||||||
is safer and more flexible than putting it verbatim in a
|
is safer and more flexible than putting it verbatim in a
|
||||||
{{< glossary_tooltip term_id="pod" >}} definition or in a {{< glossary_tooltip text="container image" term_id="image" >}}. See [Secrets design document](https://git.k8s.io/community/contributors/design-proposals/auth/secrets.md) for more information.
|
{{< glossary_tooltip term_id="pod" >}} definition or in a {{< glossary_tooltip text="container image" term_id="image" >}}. See [Secrets design document](https://git.k8s.io/community/contributors/design-proposals/auth/secrets.md) for more information.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Overview of Secrets
|
## Overview of Secrets
|
||||||
|
|
||||||
@@ -29,12 +29,13 @@ Pod specification or in an image. Users can create secrets and the system
|
|||||||
also creates some secrets.
|
also creates some secrets.
|
||||||
|
|
||||||
To use a secret, a Pod needs to reference the secret.
|
To use a secret, a Pod needs to reference the secret.
|
||||||
A secret can be used with a Pod in two ways:
|
A secret can be used with a Pod in three ways:
|
||||||
|
|
||||||
- As files in a
|
- As [files](#using-secrets-as-files-from-a-pod) in a
|
||||||
{{< glossary_tooltip text="volume" term_id="volume" >}} mounted on one or more of
|
{{< glossary_tooltip text="volume" term_id="volume" >}} mounted on one or more of
|
||||||
its containers.
|
its containers.
|
||||||
- By the kubelet when pulling images for the Pod.
|
- As [container environment variable](#using-secrets-as-environment-variables).
|
||||||
|
- By the [kubelet when pulling images](#using-imagepullsecrets) for the Pod.
|
||||||
|
|
||||||
### Built-in Secrets
|
### Built-in Secrets
|
||||||
|
|
||||||
@@ -725,7 +726,7 @@ data has the following advantages:
|
|||||||
- improves performance of your cluster by significantly reducing load on kube-apiserver, by
|
- improves performance of your cluster by significantly reducing load on kube-apiserver, by
|
||||||
closing watches for secrets marked as immutable.
|
closing watches for secrets marked as immutable.
|
||||||
|
|
||||||
To use this feature, enable the `ImmutableEmphemeralVolumes`
|
To use this feature, enable the `ImmutableEphemeralVolumes`
|
||||||
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/) and set
|
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/) and set
|
||||||
your Secret or ConfigMap `immutable` field to `true`. For example:
|
your Secret or ConfigMap `immutable` field to `true`. For example:
|
||||||
```yaml
|
```yaml
|
||||||
|
|||||||
@@ -3,18 +3,18 @@ reviewers:
|
|||||||
- mikedanese
|
- mikedanese
|
||||||
- thockin
|
- thockin
|
||||||
title: Container Environment
|
title: Container Environment
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 20
|
weight: 20
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
This page describes the resources available to Containers in the Container environment.
|
This page describes the resources available to Containers in the Container environment.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Container environment
|
## Container environment
|
||||||
|
|
||||||
@@ -53,12 +53,13 @@ FOO_SERVICE_PORT=<the port the service is running on>
|
|||||||
Services have dedicated IP addresses and are available to the Container via DNS,
|
Services have dedicated IP addresses and are available to the Container via DNS,
|
||||||
if [DNS addon](http://releases.k8s.io/{{< param "githubbranch" >}}/cluster/addons/dns/) is enabled.
|
if [DNS addon](http://releases.k8s.io/{{< param "githubbranch" >}}/cluster/addons/dns/) is enabled.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* Learn more about [Container lifecycle hooks](/docs/concepts/containers/container-lifecycle-hooks/).
|
* Learn more about [Container lifecycle hooks](/docs/concepts/containers/container-lifecycle-hooks/).
|
||||||
* Get hands-on experience
|
* Get hands-on experience
|
||||||
[attaching handlers to Container lifecycle events](/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/).
|
[attaching handlers to Container lifecycle events](/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -3,19 +3,19 @@ reviewers:
|
|||||||
- mikedanese
|
- mikedanese
|
||||||
- thockin
|
- thockin
|
||||||
title: Container Lifecycle Hooks
|
title: Container Lifecycle Hooks
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 30
|
weight: 30
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
This page describes how kubelet managed Containers can use the Container lifecycle hook framework
|
This page describes how kubelet managed Containers can use the Container lifecycle hook framework
|
||||||
to run code triggered by events during their management lifecycle.
|
to run code triggered by events during their management lifecycle.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
@@ -112,12 +112,13 @@ Events:
|
|||||||
1m 22s 2 {kubelet gke-test-cluster-default-pool-a07e5d30-siqd} spec.containers{main} Warning FailedPostStartHook
|
1m 22s 2 {kubelet gke-test-cluster-default-pool-a07e5d30-siqd} spec.containers{main} Warning FailedPostStartHook
|
||||||
```
|
```
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* Learn more about the [Container environment](/docs/concepts/containers/container-environment/).
|
* Learn more about the [Container environment](/docs/concepts/containers/container-environment/).
|
||||||
* Get hands-on experience
|
* Get hands-on experience
|
||||||
[attaching handlers to Container lifecycle events](/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/).
|
[attaching handlers to Container lifecycle events](/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -3,20 +3,20 @@ reviewers:
|
|||||||
- erictune
|
- erictune
|
||||||
- thockin
|
- thockin
|
||||||
title: Images
|
title: Images
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
You create your Docker image and push it to a registry before referring to it in a Kubernetes pod.
|
You create your Docker image and push it to a registry before referring to it in a Kubernetes pod.
|
||||||
|
|
||||||
The `image` property of a container supports the same syntax as the `docker` command does, including private registries and tags.
|
The `image` property of a container supports the same syntax as the `docker` command does, including private registries and tags.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Updating Images
|
## Updating Images
|
||||||
|
|
||||||
@@ -66,6 +66,7 @@ Credentials can be provided in several ways:
|
|||||||
- Using Oracle Cloud Infrastructure Registry (OCIR)
|
- Using Oracle Cloud Infrastructure Registry (OCIR)
|
||||||
- use IAM roles and policies to control access to OCIR repositories
|
- use IAM roles and policies to control access to OCIR repositories
|
||||||
- Using Azure Container Registry (ACR)
|
- Using Azure Container Registry (ACR)
|
||||||
|
- use IAM roles and policies to control access to ACR repositories
|
||||||
- Using IBM Cloud Container Registry
|
- Using IBM Cloud Container Registry
|
||||||
- use IAM roles and policies to grant access to IBM Cloud Container Registry
|
- use IAM roles and policies to grant access to IBM Cloud Container Registry
|
||||||
- Configuring Nodes to Authenticate to a Private Registry
|
- Configuring Nodes to Authenticate to a Private Registry
|
||||||
@@ -130,9 +131,13 @@ Troubleshooting:
|
|||||||
- `aws_credentials.go:116] Got ECR credentials from ECR API for <AWS account ID for ECR>.dkr.ecr.<AWS region>.amazonaws.com`
|
- `aws_credentials.go:116] Got ECR credentials from ECR API for <AWS account ID for ECR>.dkr.ecr.<AWS region>.amazonaws.com`
|
||||||
|
|
||||||
### Using Azure Container Registry (ACR)
|
### Using Azure Container Registry (ACR)
|
||||||
When using [Azure Container Registry](https://azure.microsoft.com/en-us/services/container-registry/)
|
Kubernetes has native support for the [Azure Container
|
||||||
you can authenticate using either an admin user or a service principal.
|
Registry (ACR)](https://azure.microsoft.com/en-us/services/container-registry/), when running on Azure Kubernetes Service (AKS).
|
||||||
In either case, authentication is done via standard Docker authentication. These instructions assume the
|
|
||||||
|
The AKS cluster service principal must have `AcrPull` permission in the ACR instance. See [Authenticate with Azure Container Registry from Azure Kubernetes Service](https://docs.microsoft.com/en-us/azure/aks/cluster-container-registry-integration) for configuration instructions. Then, simply use the full ACR image name (e.g. `my_registry.azurecr.io/image:tag`).
|
||||||
|
|
||||||
|
You may also authenticate using either an ACR admin user or a service principal.
|
||||||
|
In this case, authentication is done via standard Docker authentication. The following instructions assume the
|
||||||
[azure-cli](https://github.com/azure/azure-cli) command line tool.
|
[azure-cli](https://github.com/azure/azure-cli) command line tool.
|
||||||
|
|
||||||
You first need to create a registry and generate credentials, complete documentation for this can be found in
|
You first need to create a registry and generate credentials, complete documentation for this can be found in
|
||||||
@@ -370,4 +375,4 @@ common use cases and suggested solutions.
|
|||||||
If you need access to multiple registries, you can create one secret for each registry.
|
If you need access to multiple registries, you can create one secret for each registry.
|
||||||
Kubelet will merge any `imagePullSecrets` into a single virtual `.docker/config.json`
|
Kubelet will merge any `imagePullSecrets` into a single virtual `.docker/config.json`
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ reviewers:
|
|||||||
- erictune
|
- erictune
|
||||||
- thockin
|
- thockin
|
||||||
title: Containers overview
|
title: Containers overview
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 1
|
weight: 1
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Containers are a technology for packaging the (compiled) code for an
|
Containers are a technology for packaging the (compiled) code for an
|
||||||
application along with the dependencies it needs at run time. Each
|
application along with the dependencies it needs at run time. Each
|
||||||
@@ -18,10 +18,10 @@ run it.
|
|||||||
Containers decouple applications from underlying host infrastructure.
|
Containers decouple applications from underlying host infrastructure.
|
||||||
This makes deployment easier in different cloud or OS environments.
|
This makes deployment easier in different cloud or OS environments.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Container images
|
## Container images
|
||||||
A [container image](/docs/concepts/containers/images/) is a ready-to-run
|
A [container image](/docs/concepts/containers/images/) is a ready-to-run
|
||||||
@@ -38,8 +38,9 @@ the change, then recreate the container to start from the updated image.
|
|||||||
|
|
||||||
{{< glossary_definition term_id="container-runtime" length="all" >}}
|
{{< glossary_definition term_id="container-runtime" length="all" >}}
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
{{% capture whatsnext %}}
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* Read about [container images](/docs/concepts/containers/images/)
|
* Read about [container images](/docs/concepts/containers/images/)
|
||||||
* Read about [Pods](/docs/concepts/workloads/pods/)
|
* Read about [Pods](/docs/concepts/workloads/pods/)
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ reviewers:
|
|||||||
- tallclair
|
- tallclair
|
||||||
- dchen1107
|
- dchen1107
|
||||||
title: Runtime Class
|
title: Runtime Class
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 20
|
weight: 20
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.14" state="beta" >}}
|
{{< feature-state for_k8s_version="v1.14" state="beta" >}}
|
||||||
|
|
||||||
@@ -16,10 +16,10 @@ This page describes the RuntimeClass resource and runtime selection mechanism.
|
|||||||
RuntimeClass is a feature for selecting the container runtime configuration. The container runtime
|
RuntimeClass is a feature for selecting the container runtime configuration. The container runtime
|
||||||
configuration is used to run a Pod's containers.
|
configuration is used to run a Pod's containers.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Motivation
|
## Motivation
|
||||||
|
|
||||||
@@ -180,12 +180,13 @@ Pod overhead is defined in RuntimeClass through the `overhead` fields. Through t
|
|||||||
you can specify the overhead of running pods utilizing this RuntimeClass and ensure these overheads
|
you can specify the overhead of running pods utilizing this RuntimeClass and ensure these overheads
|
||||||
are accounted for in Kubernetes.
|
are accounted for in Kubernetes.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
{{% capture whatsnext %}}
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
- [RuntimeClass Design](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/runtime-class.md)
|
- [RuntimeClass Design](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/runtime-class.md)
|
||||||
- [RuntimeClass Scheduling Design](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/runtime-class-scheduling.md)
|
- [RuntimeClass Scheduling Design](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/runtime-class-scheduling.md)
|
||||||
- Read about the [Pod Overhead](/docs/concepts/configuration/pod-overhead/) concept
|
- Read about the [Pod Overhead](/docs/concepts/configuration/pod-overhead/) concept
|
||||||
- [PodOverhead Feature Design](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/20190226-pod-overhead.md)
|
- [PodOverhead Feature Design](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/20190226-pod-overhead.md)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
title: Example Concept Template
|
title: Example Concept Template
|
||||||
reviewers:
|
reviewers:
|
||||||
- chenopis
|
- chenopis
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
toc_hide: true
|
toc_hide: true
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
Be sure to also [create an entry in the table of contents](/docs/home/contribute/write-new-topic/#creating-an-entry-in-the-table-of-contents) for your new document.
|
Be sure to also [create an entry in the table of contents](/docs/home/contribute/write-new-topic/#creating-an-entry-in-the-table-of-contents) for your new document.
|
||||||
@@ -14,9 +14,9 @@ Be sure to also [create an entry in the table of contents](/docs/home/contribute
|
|||||||
|
|
||||||
This page explains ...
|
This page explains ...
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Understanding ...
|
## Understanding ...
|
||||||
|
|
||||||
@@ -26,15 +26,16 @@ Kubernetes provides ...
|
|||||||
|
|
||||||
To use ...
|
To use ...
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
**[Optional Section]**
|
**[Optional Section]**
|
||||||
|
|
||||||
* Learn more about [Writing a New Topic](/docs/home/contribute/write-new-topic/).
|
* Learn more about [Writing a New Topic](/docs/home/contribute/style/write-new-topic/).
|
||||||
* See [Using Page Templates - Concept template](/docs/home/contribute/page-templates/#concept_template) for how to use this template.
|
* See [Page Content Types - Concept](/docs/home/contribute/style/page-concept-types/#concept).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,20 +4,20 @@ reviewers:
|
|||||||
- lavalamp
|
- lavalamp
|
||||||
- cheftako
|
- cheftako
|
||||||
- chenopis
|
- chenopis
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 20
|
weight: 20
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
The aggregation layer allows Kubernetes to be extended with additional APIs, beyond what is offered by the core Kubernetes APIs.
|
The aggregation layer allows Kubernetes to be extended with additional APIs, beyond what is offered by the core Kubernetes APIs.
|
||||||
The additional APIs can either be ready-made solutions such as [service-catalog](/docs/concepts/extend-kubernetes/service-catalog/), or APIs that you develop yourself.
|
The additional APIs can either be ready-made solutions such as [service-catalog](/docs/concepts/extend-kubernetes/service-catalog/), or APIs that you develop yourself.
|
||||||
|
|
||||||
The aggregation layer is different from [Custom Resources](/docs/concepts/extend-kubernetes/api-extension/custom-resources/), which are a way to make the {{< glossary_tooltip term_id="kube-apiserver" text="kube-apiserver" >}} recognise new kinds of object.
|
The aggregation layer is different from [Custom Resources](/docs/concepts/extend-kubernetes/api-extension/custom-resources/), which are a way to make the {{< glossary_tooltip term_id="kube-apiserver" text="kube-apiserver" >}} recognise new kinds of object.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Aggregation layer
|
## Aggregation layer
|
||||||
|
|
||||||
@@ -34,13 +34,14 @@ If your extension API server cannot achieve that latency requirement, consider m
|
|||||||
`EnableAggregatedDiscoveryTimeout=false` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) on the kube-apiserver
|
`EnableAggregatedDiscoveryTimeout=false` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) on the kube-apiserver
|
||||||
to disable the timeout restriction. This deprecated feature gate will be removed in a future release.
|
to disable the timeout restriction. This deprecated feature gate will be removed in a future release.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
|
||||||
* To get the aggregator working in your environment, [configure the aggregation layer](/docs/tasks/access-kubernetes-api/configure-aggregation-layer/).
|
## {{% heading "whatsnext" %}}
|
||||||
* Then, [setup an extension api-server](/docs/tasks/access-kubernetes-api/setup-extension-api-server/) to work with the aggregation layer.
|
|
||||||
* Also, learn how to [extend the Kubernetes API using Custom Resource Definitions](/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/).
|
|
||||||
|
* To get the aggregator working in your environment, [configure the aggregation layer](/docs/tasks/extend-kubernetes/configure-aggregation-layer/).
|
||||||
|
* Then, [setup an extension api-server](/docs/tasks/extend-kubernetes/setup-extension-api-server/) to work with the aggregation layer.
|
||||||
|
* Also, learn how to [extend the Kubernetes API using Custom Resource Definitions](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/).
|
||||||
* Read the specification for [APIService](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#apiservice-v1-apiregistration-k8s-io)
|
* Read the specification for [APIService](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#apiservice-v1-apiregistration-k8s-io)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -3,19 +3,19 @@ title: Custom Resources
|
|||||||
reviewers:
|
reviewers:
|
||||||
- enisoc
|
- enisoc
|
||||||
- deads2k
|
- deads2k
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
*Custom resources* are extensions of the Kubernetes API. This page discusses when to add a custom
|
*Custom resources* are extensions of the Kubernetes API. This page discusses when to add a custom
|
||||||
resource to your Kubernetes cluster and when to use a standalone service. It describes the two
|
resource to your Kubernetes cluster and when to use a standalone service. It describes the two
|
||||||
methods for adding custom resources and how to choose between them.
|
methods for adding custom resources and how to choose between them.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
## Custom resources
|
## Custom resources
|
||||||
|
|
||||||
A *resource* is an endpoint in the [Kubernetes API](/docs/reference/using-api/api-overview/) that stores a collection of
|
A *resource* is an endpoint in the [Kubernetes API](/docs/reference/using-api/api-overview/) that stores a collection of
|
||||||
@@ -128,7 +128,7 @@ Regardless of how they are installed, the new resources are referred to as Custo
|
|||||||
|
|
||||||
## CustomResourceDefinitions
|
## CustomResourceDefinitions
|
||||||
|
|
||||||
The [CustomResourceDefinition](/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/)
|
The [CustomResourceDefinition](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/)
|
||||||
API resource allows you to define custom resources.
|
API resource allows you to define custom resources.
|
||||||
Defining a CRD object creates a new custom resource with a name and schema that you specify.
|
Defining a CRD object creates a new custom resource with a name and schema that you specify.
|
||||||
The Kubernetes API serves and handles the storage of your custom resource.
|
The Kubernetes API serves and handles the storage of your custom resource.
|
||||||
@@ -178,17 +178,17 @@ Aggregated APIs offer more advanced API features and customization of other feat
|
|||||||
|
|
||||||
| Feature | Description | CRDs | Aggregated API |
|
| Feature | Description | CRDs | Aggregated API |
|
||||||
| ------- | ----------- | ---- | -------------- |
|
| ------- | ----------- | ---- | -------------- |
|
||||||
| Validation | Help users prevent errors and allow you to evolve your API independently of your clients. These features are most useful when there are many clients who can't all update at the same time. | Yes. Most validation can be specified in the CRD using [OpenAPI v3.0 validation](/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/#validation). Any other validations supported by addition of a [Validating Webhook](/docs/reference/access-authn-authz/admission-controllers/#validatingadmissionwebhook-alpha-in-1-8-beta-in-1-9). | Yes, arbitrary validation checks |
|
| Validation | Help users prevent errors and allow you to evolve your API independently of your clients. These features are most useful when there are many clients who can't all update at the same time. | Yes. Most validation can be specified in the CRD using [OpenAPI v3.0 validation](/docs/tasks/extend-kubernetes/extend-api-custom-resource-definitions/#validation). Any other validations supported by addition of a [Validating Webhook](/docs/reference/access-authn-authz/admission-controllers/#validatingadmissionwebhook-alpha-in-1-8-beta-in-1-9). | Yes, arbitrary validation checks |
|
||||||
| Defaulting | See above | Yes, either via [OpenAPI v3.0 validation](/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/#defaulting) `default` keyword (GA in 1.17), or via a [Mutating Webhook](/docs/reference/access-authn-authz/admission-controllers/#mutatingadmissionwebhook) (though this will not be run when reading from etcd for old objects). | Yes |
|
| Defaulting | See above | Yes, either via [OpenAPI v3.0 validation](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#defaulting) `default` keyword (GA in 1.17), or via a [Mutating Webhook](/docs/reference/access-authn-authz/admission-controllers/#mutatingadmissionwebhook) (though this will not be run when reading from etcd for old objects). | Yes |
|
||||||
| Multi-versioning | Allows serving the same object through two API versions. Can help ease API changes like renaming fields. Less important if you control your client versions. | [Yes](/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definition-versioning) | Yes |
|
| Multi-versioning | Allows serving the same object through two API versions. Can help ease API changes like renaming fields. Less important if you control your client versions. | [Yes](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning) | Yes |
|
||||||
| Custom Storage | If you need storage with a different performance mode (for example, a time-series database instead of key-value store) or isolation for security (for example, encryption of sensitive information, etc.) | No | Yes |
|
| Custom Storage | If you need storage with a different performance mode (for example, a time-series database instead of key-value store) or isolation for security (for example, encryption of sensitive information, etc.) | No | Yes |
|
||||||
| Custom Business Logic | Perform arbitrary checks or actions when creating, reading, updating or deleting an object | Yes, using [Webhooks](/docs/reference/access-authn-authz/extensible-admission-controllers/#admission-webhooks). | Yes |
|
| Custom Business Logic | Perform arbitrary checks or actions when creating, reading, updating or deleting an object | Yes, using [Webhooks](/docs/reference/access-authn-authz/extensible-admission-controllers/#admission-webhooks). | Yes |
|
||||||
| Scale Subresource | Allows systems like HorizontalPodAutoscaler and PodDisruptionBudget interact with your new resource | [Yes](/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/#scale-subresource) | Yes |
|
| Scale Subresource | Allows systems like HorizontalPodAutoscaler and PodDisruptionBudget interact with your new resource | [Yes](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#scale-subresource) | Yes |
|
||||||
| Status Subresource | Allows fine-grained access control where user writes the spec section and the controller writes the status section. Allows incrementing object Generation on custom resource data mutation (requires separate spec and status sections in the resource) | [Yes](/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/#status-subresource) | Yes |
|
| Status Subresource | Allows fine-grained access control where user writes the spec section and the controller writes the status section. Allows incrementing object Generation on custom resource data mutation (requires separate spec and status sections in the resource) | [Yes](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#status-subresource) | Yes |
|
||||||
| Other Subresources | Add operations other than CRUD, such as "logs" or "exec". | No | Yes |
|
| Other Subresources | Add operations other than CRUD, such as "logs" or "exec". | No | Yes |
|
||||||
| strategic-merge-patch | The new endpoints support PATCH with `Content-Type: application/strategic-merge-patch+json`. Useful for updating objects that may be modified both locally, and by the server. For more information, see ["Update API Objects in Place Using kubectl patch"](/docs/tasks/run-application/update-api-object-kubectl-patch/) | No | Yes |
|
| strategic-merge-patch | The new endpoints support PATCH with `Content-Type: application/strategic-merge-patch+json`. Useful for updating objects that may be modified both locally, and by the server. For more information, see ["Update API Objects in Place Using kubectl patch"](/docs/tasks/manage-kubernetes-objects/update-api-object-kubectl-patch/) | No | Yes |
|
||||||
| Protocol Buffers | The new resource supports clients that want to use Protocol Buffers | No | Yes |
|
| Protocol Buffers | The new resource supports clients that want to use Protocol Buffers | No | Yes |
|
||||||
| OpenAPI Schema | Is there an OpenAPI (swagger) schema for the types that can be dynamically fetched from the server? Is the user protected from misspelling field names by ensuring only allowed fields are set? Are types enforced (in other words, don't put an `int` in a `string` field?) | Yes, based on the [OpenAPI v3.0 validation](/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/#validation) schema (GA in 1.16). | Yes |
|
| OpenAPI Schema | Is there an OpenAPI (swagger) schema for the types that can be dynamically fetched from the server? Is the user protected from misspelling field names by ensuring only allowed fields are set? Are types enforced (in other words, don't put an `int` in a `string` field?) | Yes, based on the [OpenAPI v3.0 validation](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation) schema (GA in 1.16). | Yes |
|
||||||
|
|
||||||
### Common Features
|
### Common Features
|
||||||
|
|
||||||
@@ -246,12 +246,13 @@ When you add a custom resource, you can access it using:
|
|||||||
- A REST client that you write.
|
- A REST client that you write.
|
||||||
- A client generated using [Kubernetes client generation tools](https://github.com/kubernetes/code-generator) (generating one is an advanced undertaking, but some projects may provide a client along with the CRD or AA).
|
- A client generated using [Kubernetes client generation tools](https://github.com/kubernetes/code-generator) (generating one is an advanced undertaking, but some projects may provide a client along with the CRD or AA).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* Learn how to [Extend the Kubernetes API with the aggregation layer](/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/).
|
* Learn how to [Extend the Kubernetes API with the aggregation layer](/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/).
|
||||||
|
|
||||||
* Learn how to [Extend the Kubernetes API with CustomResourceDefinition](/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/).
|
* Learn how to [Extend the Kubernetes API with CustomResourceDefinition](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/).
|
||||||
|
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
title: Device Plugins
|
title: Device Plugins
|
||||||
description: Use the Kubernetes device plugin framework to implement plugins for GPUs, NICs, FPGAs, InfiniBand, and similar resources that require vendor-specific setup.
|
description: Use the Kubernetes device plugin framework to implement plugins for GPUs, NICs, FPGAs, InfiniBand, and similar resources that require vendor-specific setup.
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 20
|
weight: 20
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
{{< feature-state for_k8s_version="v1.10" state="beta" >}}
|
{{< feature-state for_k8s_version="v1.10" state="beta" >}}
|
||||||
|
|
||||||
Kubernetes provides a [device plugin framework](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/resource-management/device-plugin.md)
|
Kubernetes provides a [device plugin framework](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/resource-management/device-plugin.md)
|
||||||
@@ -19,9 +19,9 @@ The targeted devices include GPUs, high-performance NICs, FPGAs, InfiniBand adap
|
|||||||
and other similar computing resources that may require vendor specific initialization
|
and other similar computing resources that may require vendor specific initialization
|
||||||
and setup.
|
and setup.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Device plugin registration
|
## Device plugin registration
|
||||||
|
|
||||||
@@ -225,12 +225,13 @@ Here are some examples of device plugin implementations:
|
|||||||
* The [SR-IOV Network device plugin](https://github.com/intel/sriov-network-device-plugin)
|
* The [SR-IOV Network device plugin](https://github.com/intel/sriov-network-device-plugin)
|
||||||
* The [Xilinx FPGA device plugins](https://github.com/Xilinx/FPGA_as_a_Service/tree/master/k8s-fpga-device-plugin/trunk) for Xilinx FPGA devices
|
* The [Xilinx FPGA device plugins](https://github.com/Xilinx/FPGA_as_a_Service/tree/master/k8s-fpga-device-plugin/trunk) for Xilinx FPGA devices
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
{{% capture whatsnext %}}
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* Learn about [scheduling GPU resources](/docs/tasks/manage-gpus/scheduling-gpus/) using device plugins
|
* Learn about [scheduling GPU resources](/docs/tasks/manage-gpus/scheduling-gpus/) using device plugins
|
||||||
* Learn about [advertising extended resources](/docs/tasks/administer-cluster/extended-resource-node/) on a node
|
* Learn about [advertising extended resources](/docs/tasks/administer-cluster/extended-resource-node/) on a node
|
||||||
* Read about using [hardware acceleration for TLS ingress](https://kubernetes.io/blog/2019/04/24/hardware-accelerated-ssl/tls-termination-in-ingress-controllers-using-kubernetes-device-plugins-and-runtimeclass/) with Kubernetes
|
* Read about using [hardware acceleration for TLS ingress](https://kubernetes.io/blog/2019/04/24/hardware-accelerated-ssl/tls-termination-in-ingress-controllers-using-kubernetes-device-plugins-and-runtimeclass/) with Kubernetes
|
||||||
* Learn about the [Topology Manager] (/docs/tasks/adminster-cluster/topology-manager/)
|
* Learn about the [Topology Manager] (/docs/tasks/adminster-cluster/topology-manager/)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ reviewers:
|
|||||||
- freehan
|
- freehan
|
||||||
- thockin
|
- thockin
|
||||||
title: Network Plugins
|
title: Network Plugins
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< feature-state state="alpha" >}}
|
{{< feature-state state="alpha" >}}
|
||||||
{{< caution >}}Alpha features can change rapidly. {{< /caution >}}
|
{{< caution >}}Alpha features can change rapidly. {{< /caution >}}
|
||||||
@@ -19,9 +19,9 @@ Network plugins in Kubernetes come in a few flavors:
|
|||||||
* CNI plugins: adhere to the appc/CNI specification, designed for interoperability.
|
* CNI plugins: adhere to the appc/CNI specification, designed for interoperability.
|
||||||
* Kubenet plugin: implements basic `cbr0` using the `bridge` and `host-local` CNI plugins
|
* Kubenet plugin: implements basic `cbr0` using the `bridge` and `host-local` CNI plugins
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -166,8 +166,9 @@ This option is provided to the network-plugin; currently **only kubenet supports
|
|||||||
* `--network-plugin=kubenet` specifies that we use the `kubenet` network plugin with CNI `bridge` and `host-local` plugins placed in `/opt/cni/bin` or `cni-bin-dir`.
|
* `--network-plugin=kubenet` specifies that we use the `kubenet` network plugin with CNI `bridge` and `host-local` plugins placed in `/opt/cni/bin` or `cni-bin-dir`.
|
||||||
* `--network-plugin-mtu=9001` specifies the MTU to use, currently only used by the `kubenet` network plugin.
|
* `--network-plugin-mtu=9001` specifies the MTU to use, currently only used by the `kubenet` network plugin.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
|
||||||
{{% /capture %}}
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ reviewers:
|
|||||||
- lavalamp
|
- lavalamp
|
||||||
- cheftako
|
- cheftako
|
||||||
- chenopis
|
- chenopis
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Kubernetes is highly configurable and extensible. As a result,
|
Kubernetes is highly configurable and extensible. As a result,
|
||||||
there is rarely a need to fork or submit patches to the Kubernetes
|
there is rarely a need to fork or submit patches to the Kubernetes
|
||||||
@@ -22,10 +22,10 @@ their work environment. Developers who are prospective {{< glossary_tooltip text
|
|||||||
useful as an introduction to what extension points and patterns
|
useful as an introduction to what extension points and patterns
|
||||||
exist, and their trade-offs and limitations.
|
exist, and their trade-offs and limitations.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
@@ -194,10 +194,11 @@ The scheduler also supports a
|
|||||||
that permits a webhook backend (scheduler extension) to filter and prioritize
|
that permits a webhook backend (scheduler extension) to filter and prioritize
|
||||||
the nodes chosen for a pod.
|
the nodes chosen for a pod.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* Learn more about [Custom Resources](/docs/concepts/api-extension/custom-resources/)
|
* Learn more about [Custom Resources](/docs/concepts/api-extension/custom-resources/)
|
||||||
* Learn about [Dynamic admission control](/docs/reference/access-authn-authz/extensible-admission-controllers/)
|
* Learn about [Dynamic admission control](/docs/reference/access-authn-authz/extensible-admission-controllers/)
|
||||||
@@ -207,4 +208,4 @@ the nodes chosen for a pod.
|
|||||||
* Learn about [kubectl plugins](/docs/tasks/extend-kubectl/kubectl-plugins/)
|
* Learn about [kubectl plugins](/docs/tasks/extend-kubectl/kubectl-plugins/)
|
||||||
* Learn about the [Operator pattern](/docs/concepts/extend-kubernetes/operator/)
|
* Learn about the [Operator pattern](/docs/concepts/extend-kubernetes/operator/)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
---
|
---
|
||||||
title: Operator pattern
|
title: Operator pattern
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 30
|
weight: 30
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Operators are software extensions to Kubernetes that make use of [custom
|
Operators are software extensions to Kubernetes that make use of [custom
|
||||||
resources](/docs/concepts/extend-kubernetes/api-extension/custom-resources/)
|
resources](/docs/concepts/extend-kubernetes/api-extension/custom-resources/)
|
||||||
to manage applications and their components. Operators follow
|
to manage applications and their components. Operators follow
|
||||||
Kubernetes principles, notably the [control loop](/docs/concepts/#kubernetes-control-plane).
|
Kubernetes principles, notably the [control loop](/docs/concepts/#kubernetes-control-plane).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Motivation
|
## Motivation
|
||||||
|
|
||||||
@@ -113,9 +113,10 @@ Operator.
|
|||||||
You also implement an Operator (that is, a Controller) using any language / runtime
|
You also implement an Operator (that is, a Controller) using any language / runtime
|
||||||
that can act as a [client for the Kubernetes API](/docs/reference/using-api/client-libraries/).
|
that can act as a [client for the Kubernetes API](/docs/reference/using-api/client-libraries/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* Learn more about [Custom Resources](/docs/concepts/extend-kubernetes/api-extension/custom-resources/)
|
* Learn more about [Custom Resources](/docs/concepts/extend-kubernetes/api-extension/custom-resources/)
|
||||||
* Find ready-made operators on [OperatorHub.io](https://operatorhub.io/) to suit your use case
|
* Find ready-made operators on [OperatorHub.io](https://operatorhub.io/) to suit your use case
|
||||||
@@ -129,4 +130,3 @@ that can act as a [client for the Kubernetes API](/docs/reference/using-api/clie
|
|||||||
* Read [CoreOS' original article](https://coreos.com/blog/introducing-operators.html) that introduced the Operator pattern
|
* Read [CoreOS' original article](https://coreos.com/blog/introducing-operators.html) that introduced the Operator pattern
|
||||||
* Read an [article](https://cloud.google.com/blog/products/containers-kubernetes/best-practices-for-building-kubernetes-operators-and-stateful-apps) from Google Cloud about best practices for building Operators
|
* Read an [article](https://cloud.google.com/blog/products/containers-kubernetes/best-practices-for-building-kubernetes-operators-and-stateful-apps) from Google Cloud about best practices for building Operators
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
+8
-7
@@ -1,18 +1,18 @@
|
|||||||
---
|
---
|
||||||
title: Poseidon-Firmament Scheduler
|
title: Poseidon-Firmament Scheduler
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 80
|
weight: 80
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.6" state="alpha" >}}
|
{{< feature-state for_k8s_version="v1.6" state="alpha" >}}
|
||||||
|
|
||||||
The Poseidon-Firmament scheduler is an alternate scheduler that can be deployed alongside the default Kubernetes scheduler.
|
The Poseidon-Firmament scheduler is an alternate scheduler that can be deployed alongside the default Kubernetes scheduler.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
@@ -102,10 +102,11 @@ Pod-by-pod schedulers, such as the Kubernetes default scheduler, process Pods in
|
|||||||
|
|
||||||
These downsides of pod-by-pod schedulers are addressed by batching or bulk scheduling in Poseidon-Firmament scheduler. Processing several pods in a batch allows the scheduler to jointly consider their placement, and thus to find the best trade-off for the whole batch instead of one pod. At the same time it amortizes work across pods resulting in much higher throughput.
|
These downsides of pod-by-pod schedulers are addressed by batching or bulk scheduling in Poseidon-Firmament scheduler. Processing several pods in a batch allows the scheduler to jointly consider their placement, and thus to find the best trade-off for the whole batch instead of one pod. At the same time it amortizes work across pods resulting in much higher throughput.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
{{% capture whatsnext %}}
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* See [Poseidon-Firmament](https://github.com/kubernetes-sigs/poseidon#readme) on GitHub for more information.
|
* See [Poseidon-Firmament](https://github.com/kubernetes-sigs/poseidon#readme) on GitHub for more information.
|
||||||
* See the [design document](https://github.com/kubernetes-sigs/poseidon/blob/master/docs/design/README.md) for Poseidon.
|
* See the [design document](https://github.com/kubernetes-sigs/poseidon/blob/master/docs/design/README.md) for Poseidon.
|
||||||
* Read [Firmament: Fast, Centralized Cluster Scheduling at Scale](https://www.usenix.org/system/files/conference/osdi16/osdi16-gog.pdf), the academic paper on the Firmament scheduling design.
|
* Read [Firmament: Fast, Centralized Cluster Scheduling at Scale](https://www.usenix.org/system/files/conference/osdi16/osdi16-gog.pdf), the academic paper on the Firmament scheduling design.
|
||||||
* If you'd like to contribute to Poseidon-Firmament, refer to the [developer setup instructions](https://github.com/kubernetes-sigs/poseidon/blob/master/docs/devel/README.md).
|
* If you'd like to contribute to Poseidon-Firmament, refer to the [developer setup instructions](https://github.com/kubernetes-sigs/poseidon/blob/master/docs/devel/README.md).
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
title: Service Catalog
|
title: Service Catalog
|
||||||
reviewers:
|
reviewers:
|
||||||
- chenopis
|
- chenopis
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 40
|
weight: 40
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
{{< glossary_definition term_id="service-catalog" length="all" prepend="Service Catalog is" >}}
|
{{< glossary_definition term_id="service-catalog" length="all" prepend="Service Catalog is" >}}
|
||||||
|
|
||||||
A service broker, as defined by the [Open service broker API spec](https://github.com/openservicebrokerapi/servicebroker/blob/v2.13/spec.md), is an endpoint for a set of managed services offered and maintained by a third-party, which could be a cloud provider such as AWS, GCP, or Azure.
|
A service broker, as defined by the [Open service broker API spec](https://github.com/openservicebrokerapi/servicebroker/blob/v2.13/spec.md), is an endpoint for a set of managed services offered and maintained by a third-party, which could be a cloud provider such as AWS, GCP, or Azure.
|
||||||
@@ -14,10 +14,10 @@ Some examples of managed services are Microsoft Azure Cloud Queue, Amazon Simple
|
|||||||
|
|
||||||
Using Service Catalog, a {{< glossary_tooltip text="cluster operator" term_id="cluster-operator" >}} can browse the list of managed services offered by a service broker, provision an instance of a managed service, and bind with it to make it available to an application in the Kubernetes cluster.
|
Using Service Catalog, a {{< glossary_tooltip text="cluster operator" term_id="cluster-operator" >}} can browse the list of managed services offered by a service broker, provision an instance of a managed service, and bind with it to make it available to an application in the Kubernetes cluster.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
## Example use case
|
## Example use case
|
||||||
|
|
||||||
An {{< glossary_tooltip text="application developer" term_id="application-developer" >}} wants to use message queuing as part of their application running in a Kubernetes cluster.
|
An {{< glossary_tooltip text="application developer" term_id="application-developer" >}} wants to use message queuing as part of their application running in a Kubernetes cluster.
|
||||||
@@ -222,16 +222,17 @@ The following example describes how to map secret values into application enviro
|
|||||||
key: topic
|
key: topic
|
||||||
```
|
```
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* If you are familiar with {{< glossary_tooltip text="Helm Charts" term_id="helm-chart" >}}, [install Service Catalog using Helm](/docs/tasks/service-catalog/install-service-catalog-using-helm/) into your Kubernetes cluster. Alternatively, you can [install Service Catalog using the SC tool](/docs/tasks/service-catalog/install-service-catalog-using-sc/).
|
* If you are familiar with {{< glossary_tooltip text="Helm Charts" term_id="helm-chart" >}}, [install Service Catalog using Helm](/docs/tasks/service-catalog/install-service-catalog-using-helm/) into your Kubernetes cluster. Alternatively, you can [install Service Catalog using the SC tool](/docs/tasks/service-catalog/install-service-catalog-using-sc/).
|
||||||
* View [sample service brokers](https://github.com/openservicebrokerapi/servicebroker/blob/master/gettingStarted.md#sample-service-brokers).
|
* View [sample service brokers](https://github.com/openservicebrokerapi/servicebroker/blob/master/gettingStarted.md#sample-service-brokers).
|
||||||
* Explore the [kubernetes-incubator/service-catalog](https://github.com/kubernetes-incubator/service-catalog) project.
|
* Explore the [kubernetes-incubator/service-catalog](https://github.com/kubernetes-incubator/service-catalog) project.
|
||||||
* View [svc-cat.io](https://svc-cat.io/docs/).
|
* View [svc-cat.io](https://svc-cat.io/docs/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
- lavalamp
|
- lavalamp
|
||||||
title: Kubernetes Components
|
title: Kubernetes Components
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 20
|
weight: 20
|
||||||
card:
|
card:
|
||||||
name: concepts
|
name: concepts
|
||||||
weight: 20
|
weight: 20
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
When you deploy Kubernetes, you get a cluster.
|
When you deploy Kubernetes, you get a cluster.
|
||||||
{{< glossary_definition term_id="cluster" length="all" prepend="A Kubernetes cluster consists of">}}
|
{{< glossary_definition term_id="cluster" length="all" prepend="A Kubernetes cluster consists of">}}
|
||||||
|
|
||||||
@@ -20,9 +20,9 @@ Here's the diagram of a Kubernetes cluster with all the components tied together
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
## Control Plane Components
|
## Control Plane Components
|
||||||
|
|
||||||
The control plane's components make global decisions about the cluster (for example, scheduling), as well as detecting and responding to cluster events (for example, starting up a new {{< glossary_tooltip text="pod" term_id="pod">}} when a deployment's `replicas` field is unsatisfied).
|
The control plane's components make global decisions about the cluster (for example, scheduling), as well as detecting and responding to cluster events (for example, starting up a new {{< glossary_tooltip text="pod" term_id="pod">}} when a deployment's `replicas` field is unsatisfied).
|
||||||
@@ -122,10 +122,11 @@ about containers in a central database, and provides a UI for browsing that data
|
|||||||
A [cluster-level logging](/docs/concepts/cluster-administration/logging/) mechanism is responsible for
|
A [cluster-level logging](/docs/concepts/cluster-administration/logging/) mechanism is responsible for
|
||||||
saving container logs to a central log store with search/browsing interface.
|
saving container logs to a central log store with search/browsing interface.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
{{% capture whatsnext %}}
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* Learn about [Nodes](/docs/concepts/architecture/nodes/)
|
* Learn about [Nodes](/docs/concepts/architecture/nodes/)
|
||||||
* Learn about [Controllers](/docs/concepts/architecture/controller/)
|
* Learn about [Controllers](/docs/concepts/architecture/controller/)
|
||||||
* Learn about [kube-scheduler](/docs/concepts/scheduling-eviction/kube-scheduler/)
|
* Learn about [kube-scheduler](/docs/concepts/scheduling-eviction/kube-scheduler/)
|
||||||
* Read etcd's official [documentation](https://etcd.io/docs/)
|
* Read etcd's official [documentation](https://etcd.io/docs/)
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
- chenopis
|
- chenopis
|
||||||
title: The Kubernetes API
|
title: The Kubernetes API
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 30
|
weight: 30
|
||||||
card:
|
card:
|
||||||
name: concepts
|
name: concepts
|
||||||
weight: 30
|
weight: 30
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
The core of Kubernetes' {{< glossary_tooltip text="control plane" term_id="control-plane" >}}
|
The core of Kubernetes' {{< glossary_tooltip text="control plane" term_id="control-plane" >}}
|
||||||
is the {{< glossary_tooltip text="API server" term_id="kube-apiserver" >}}. The API server
|
is the {{< glossary_tooltip text="API server" term_id="kube-apiserver" >}}. The API server
|
||||||
@@ -21,9 +21,10 @@ The Kubernetes API lets you query and manipulate the state of objects in the Kub
|
|||||||
|
|
||||||
API endpoints, resource types and samples are described in the [API Reference](/docs/reference/kubernetes-api/).
|
API endpoints, resource types and samples are described in the [API Reference](/docs/reference/kubernetes-api/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## API changes
|
## API changes
|
||||||
|
|
||||||
@@ -135,10 +136,10 @@ There are several API groups in a cluster:
|
|||||||
|
|
||||||
There are two paths to extending the API with [custom resources](/docs/concepts/api-extension/custom-resources/):
|
There are two paths to extending the API with [custom resources](/docs/concepts/api-extension/custom-resources/):
|
||||||
|
|
||||||
1. [CustomResourceDefinition](/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/)
|
1. [CustomResourceDefinition](/docs/tasks/extend-kubernetes/custom-resource-definitions/)
|
||||||
lets you declaratively define how the API server should provide your chosen resource API.
|
lets you declaratively define how the API server should provide your chosen resource API.
|
||||||
1. You can also [implement your own extension API server](/docs/tasks/access-kubernetes-api/setup-extension-api-server/)
|
1. You can also [implement your own extension API server](/docs/tasks/extend-kubernetes/setup-extension-api-server/)
|
||||||
and use the [aggregator](/docs/tasks/access-kubernetes-api/configure-aggregation-layer/)
|
and use the [aggregator](/docs/tasks/extend-kubernetes/configure-aggregation-layer/)
|
||||||
to make it seamless for clients.
|
to make it seamless for clients.
|
||||||
|
|
||||||
## Enabling or disabling API groups
|
## Enabling or disabling API groups
|
||||||
@@ -166,8 +167,9 @@ For example: to enable deployments and daemonsets, set
|
|||||||
Kubernetes stores its serialized state in terms of the API resources by writing them into
|
Kubernetes stores its serialized state in terms of the API resources by writing them into
|
||||||
{{< glossary_tooltip term_id="etcd" >}}.
|
{{< glossary_tooltip term_id="etcd" >}}.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
{{% capture whatsnext %}}
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
[Controlling API Access](/docs/reference/access-authn-authz/controlling-access/) describes
|
[Controlling API Access](/docs/reference/access-authn-authz/controlling-access/) describes
|
||||||
how the cluster manages authentication and authorization for API access.
|
how the cluster manages authentication and authorization for API access.
|
||||||
|
|
||||||
@@ -176,5 +178,3 @@ Overall API conventions are described in the
|
|||||||
document.
|
document.
|
||||||
|
|
||||||
API endpoints, resource types and samples are described in the [API Reference](/docs/reference/kubernetes-api/).
|
API endpoints, resource types and samples are described in the [API Reference](/docs/reference/kubernetes-api/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -5,18 +5,18 @@ reviewers:
|
|||||||
title: What is Kubernetes?
|
title: What is Kubernetes?
|
||||||
description: >
|
description: >
|
||||||
Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.
|
Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
card:
|
card:
|
||||||
name: concepts
|
name: concepts
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
This page is an overview of Kubernetes.
|
This page is an overview of Kubernetes.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.
|
Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.
|
||||||
|
|
||||||
The name Kubernetes originates from Greek, meaning helmsman or pilot. Google open-sourced the Kubernetes project in 2014. Kubernetes combines [over 15 years of Google's experience](/blog/2015/04/borg-predecessor-to-kubernetes/) running production workloads at scale with best-of-breed ideas and practices from the community.
|
The name Kubernetes originates from Greek, meaning helmsman or pilot. Google open-sourced the Kubernetes project in 2014. Kubernetes combines [over 15 years of Google's experience](/blog/2015/04/borg-predecessor-to-kubernetes/) running production workloads at scale with best-of-breed ideas and practices from the community.
|
||||||
@@ -86,9 +86,10 @@ Kubernetes:
|
|||||||
* Does not provide nor adopt any comprehensive machine configuration, maintenance, management, or self-healing systems.
|
* Does not provide nor adopt any comprehensive machine configuration, maintenance, management, or self-healing systems.
|
||||||
* Additionally, Kubernetes is not a mere orchestration system. In fact, it eliminates the need for orchestration. The technical definition of orchestration is execution of a defined workflow: first do A, then B, then C. In contrast, Kubernetes comprises a set of independent, composable control processes that continuously drive the current state towards the provided desired state. It shouldn’t matter how you get from A to C. Centralized control is also not required. This results in a system that is easier to use and more powerful, robust, resilient, and extensible.
|
* Additionally, Kubernetes is not a mere orchestration system. In fact, it eliminates the need for orchestration. The technical definition of orchestration is execution of a defined workflow: first do A, then B, then C. In contrast, Kubernetes comprises a set of independent, composable control processes that continuously drive the current state towards the provided desired state. It shouldn’t matter how you get from A to C. Centralized control is also not required. This results in a system that is easier to use and more powerful, robust, resilient, and extensible.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* Take a look at the [Kubernetes Components](/docs/concepts/overview/components/)
|
* Take a look at the [Kubernetes Components](/docs/concepts/overview/components/)
|
||||||
* Ready to [Get Started](/docs/setup/)?
|
* Ready to [Get Started](/docs/setup/)?
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
---
|
---
|
||||||
title: Annotations
|
title: Annotations
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 50
|
weight: 50
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
You can use Kubernetes annotations to attach arbitrary non-identifying metadata
|
You can use Kubernetes annotations to attach arbitrary non-identifying metadata
|
||||||
to objects. Clients such as tools and libraries can retrieve this metadata.
|
to objects. Clients such as tools and libraries can retrieve this metadata.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
## Attaching metadata to objects
|
## Attaching metadata to objects
|
||||||
|
|
||||||
You can use either labels or annotations to attach metadata to Kubernetes
|
You can use either labels or annotations to attach metadata to Kubernetes
|
||||||
@@ -88,10 +88,11 @@ spec:
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
Learn more about [Labels and Selectors](/docs/concepts/overview/working-with-objects/labels/).
|
Learn more about [Labels and Selectors](/docs/concepts/overview/working-with-objects/labels/).
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
---
|
---
|
||||||
title: Recommended Labels
|
title: Recommended Labels
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
You can visualize and manage Kubernetes objects with more tools than kubectl and
|
You can visualize and manage Kubernetes objects with more tools than kubectl and
|
||||||
the dashboard. A common set of labels allows tools to work interoperably, describing
|
the dashboard. A common set of labels allows tools to work interoperably, describing
|
||||||
objects in a common manner that all tools can understand.
|
objects in a common manner that all tools can understand.
|
||||||
|
|
||||||
In addition to supporting tooling, the recommended labels describe applications
|
In addition to supporting tooling, the recommended labels describe applications
|
||||||
in a way that can be queried.
|
in a way that can be queried.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
The metadata is organized around the concept of an _application_. Kubernetes is not
|
The metadata is organized around the concept of an _application_. Kubernetes is not
|
||||||
a platform as a service (PaaS) and doesn't have or enforce a formal notion of an application.
|
a platform as a service (PaaS) and doesn't have or enforce a formal notion of an application.
|
||||||
Instead, applications are informal and described with metadata. The definition of
|
Instead, applications are informal and described with metadata. The definition of
|
||||||
@@ -170,4 +170,4 @@ metadata:
|
|||||||
|
|
||||||
With the MySQL `StatefulSet` and `Service` you'll notice information about both MySQL and Wordpress, the broader application, are included.
|
With the MySQL `StatefulSet` and `Service` you'll notice information about both MySQL and Wordpress, the broader application, are included.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -16,12 +16,7 @@ kubectl get pods --field-selector status.phase=Running
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
Field selectors are essentially resource *filters*. By default, no selectors/filters are applied, meaning that all resources of the specified type are selected. This makes the following `kubectl` queries equivalent:
|
Field selectors are essentially resource *filters*. By default, no selectors/filters are applied, meaning that all resources of the specified type are selected. This makes the `kubectl` queries `kubectl get pods` and `kubectl get pods --field-selector ""` equivalent.
|
||||||
|
|
||||||
```shell
|
|
||||||
kubectl get pods
|
|
||||||
kubectl get pods --field-selector ""
|
|
||||||
```
|
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
## Supported fields
|
## Supported fields
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
---
|
---
|
||||||
title: Understanding Kubernetes Objects
|
title: Understanding Kubernetes Objects
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
card:
|
card:
|
||||||
name: concepts
|
name: concepts
|
||||||
weight: 40
|
weight: 40
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
This page explains how Kubernetes objects are represented in the Kubernetes API, and how you can express them in `.yaml` format.
|
This page explains how Kubernetes objects are represented in the Kubernetes API, and how you can express them in `.yaml` format.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
## Understanding Kubernetes objects {#kubernetes-objects}
|
## Understanding Kubernetes objects {#kubernetes-objects}
|
||||||
|
|
||||||
*Kubernetes objects* are persistent entities in the Kubernetes system. Kubernetes uses these entities to represent the state of your cluster. Specifically, they can describe:
|
*Kubernetes objects* are persistent entities in the Kubernetes system. Kubernetes uses these entities to represent the state of your cluster. Specifically, they can describe:
|
||||||
@@ -87,12 +87,13 @@ For example, the `spec` format for a Pod can be found in
|
|||||||
and the `spec` format for a Deployment can be found in
|
and the `spec` format for a Deployment can be found in
|
||||||
[DeploymentSpec v1 apps](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#deploymentspec-v1-apps).
|
[DeploymentSpec v1 apps](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#deploymentspec-v1-apps).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* [Kubernetes API overview](/docs/reference/using-api/api-overview/) explains some more API concepts
|
* [Kubernetes API overview](/docs/reference/using-api/api-overview/) explains some more API concepts
|
||||||
* Learn about the most important basic Kubernetes objects, such as [Pod](/docs/concepts/workloads/pods/pod-overview/).
|
* Learn about the most important basic Kubernetes objects, such as [Pod](/docs/concepts/workloads/pods/pod-overview/).
|
||||||
* Learn about [controllers](/docs/concepts/architecture/controller/) in Kubernetes
|
* Learn about [controllers](/docs/concepts/architecture/controller/) in Kubernetes
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
- mikedanese
|
- mikedanese
|
||||||
title: Labels and Selectors
|
title: Labels and Selectors
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 40
|
weight: 40
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
_Labels_ are key/value pairs that are attached to objects, such as pods.
|
_Labels_ are key/value pairs that are attached to objects, such as pods.
|
||||||
Labels are intended to be used to specify identifying attributes of objects that are meaningful and relevant to users, but do not directly imply semantics to the core system.
|
Labels are intended to be used to specify identifying attributes of objects that are meaningful and relevant to users, but do not directly imply semantics to the core system.
|
||||||
@@ -24,10 +24,10 @@ Each object can have a set of key/value labels defined. Each Key must be unique
|
|||||||
|
|
||||||
Labels allow for efficient queries and watches and are ideal for use in UIs and CLIs. Non-identifying information should be recorded using [annotations](/docs/concepts/overview/working-with-objects/annotations/).
|
Labels allow for efficient queries and watches and are ideal for use in UIs and CLIs. Non-identifying information should be recorded using [annotations](/docs/concepts/overview/working-with-objects/annotations/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Motivation
|
## Motivation
|
||||||
|
|
||||||
@@ -228,4 +228,4 @@ selector:
|
|||||||
One use case for selecting over labels is to constrain the set of nodes onto which a pod can schedule.
|
One use case for selecting over labels is to constrain the set of nodes onto which a pod can schedule.
|
||||||
See the documentation on [node selection](/docs/concepts/scheduling-eviction/assign-pod-node/) for more information.
|
See the documentation on [node selection](/docs/concepts/scheduling-eviction/assign-pod-node/) for more information.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ reviewers:
|
|||||||
- mikedanese
|
- mikedanese
|
||||||
- thockin
|
- thockin
|
||||||
title: Object Names and IDs
|
title: Object Names and IDs
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 20
|
weight: 20
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Each object in your cluster has a [_Name_](#names) that is unique for that type of resource.
|
Each object in your cluster has a [_Name_](#names) that is unique for that type of resource.
|
||||||
Every Kubernetes object also has a [_UID_](#uids) that is unique across your whole cluster.
|
Every Kubernetes object also has a [_UID_](#uids) that is unique across your whole cluster.
|
||||||
@@ -16,9 +16,9 @@ For example, you can only have one Pod named `myapp-1234` within the same [names
|
|||||||
|
|
||||||
For non-unique user-provided attributes, Kubernetes provides [labels](/docs/concepts/overview/working-with-objects/labels/) and [annotations](/docs/concepts/overview/working-with-objects/annotations/).
|
For non-unique user-provided attributes, Kubernetes provides [labels](/docs/concepts/overview/working-with-objects/labels/) and [annotations](/docs/concepts/overview/working-with-objects/annotations/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Names
|
## Names
|
||||||
|
|
||||||
@@ -81,8 +81,9 @@ Some resource types have additional restrictions on their names.
|
|||||||
Kubernetes UIDs are universally unique identifiers (also known as UUIDs).
|
Kubernetes UIDs are universally unique identifiers (also known as UUIDs).
|
||||||
UUIDs are standardized as ISO/IEC 9834-8 and as ITU-T X.667.
|
UUIDs are standardized as ISO/IEC 9834-8 and as ITU-T X.667.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
{{% capture whatsnext %}}
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* Read about [labels](/docs/concepts/overview/working-with-objects/labels/) in Kubernetes.
|
* Read about [labels](/docs/concepts/overview/working-with-objects/labels/) in Kubernetes.
|
||||||
* See the [Identifiers and Names in Kubernetes](https://git.k8s.io/community/contributors/design-proposals/architecture/identifiers.md) design document.
|
* See the [Identifiers and Names in Kubernetes](https://git.k8s.io/community/contributors/design-proposals/architecture/identifiers.md) design document.
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -4,19 +4,19 @@ reviewers:
|
|||||||
- mikedanese
|
- mikedanese
|
||||||
- thockin
|
- thockin
|
||||||
title: Namespaces
|
title: Namespaces
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 30
|
weight: 30
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Kubernetes supports multiple virtual clusters backed by the same physical cluster.
|
Kubernetes supports multiple virtual clusters backed by the same physical cluster.
|
||||||
These virtual clusters are called namespaces.
|
These virtual clusters are called namespaces.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## When to Use Multiple Namespaces
|
## When to Use Multiple Namespaces
|
||||||
|
|
||||||
@@ -112,11 +112,12 @@ kubectl api-resources --namespaced=true
|
|||||||
kubectl api-resources --namespaced=false
|
kubectl api-resources --namespaced=false
|
||||||
```
|
```
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* Learn more about [creating a new namespace](/docs/tasks/administer-cluster/namespaces/#creating-a-new-namespace).
|
* Learn more about [creating a new namespace](/docs/tasks/administer-cluster/namespaces/#creating-a-new-namespace).
|
||||||
* Learn more about [deleting a namespace](/docs/tasks/administer-cluster/namespaces/#deleting-a-namespace).
|
* Learn more about [deleting a namespace](/docs/tasks/administer-cluster/namespaces/#deleting-a-namespace).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
---
|
---
|
||||||
title: Kubernetes Object Management
|
title: Kubernetes Object Management
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 15
|
weight: 15
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
The `kubectl` command-line tool supports several different ways to create and manage
|
The `kubectl` command-line tool supports several different ways to create and manage
|
||||||
Kubernetes objects. This document provides an overview of the different
|
Kubernetes objects. This document provides an overview of the different
|
||||||
approaches. Read the [Kubectl book](https://kubectl.docs.kubernetes.io) for
|
approaches. Read the [Kubectl book](https://kubectl.docs.kubernetes.io) for
|
||||||
details of managing objects by Kubectl.
|
details of managing objects by Kubectl.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Management techniques
|
## Management techniques
|
||||||
|
|
||||||
@@ -173,9 +173,10 @@ Disadvantages compared to imperative object configuration:
|
|||||||
- Declarative object configuration is harder to debug and understand results when they are unexpected.
|
- Declarative object configuration is harder to debug and understand results when they are unexpected.
|
||||||
- Partial updates using diffs create complex merge and patch operations.
|
- Partial updates using diffs create complex merge and patch operations.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
- [Managing Kubernetes Objects Using Imperative Commands](/docs/tasks/manage-kubernetes-objects/imperative-command/)
|
- [Managing Kubernetes Objects Using Imperative Commands](/docs/tasks/manage-kubernetes-objects/imperative-command/)
|
||||||
- [Managing Kubernetes Objects Using Object Configuration (Imperative)](/docs/tasks/manage-kubernetes-objects/imperative-config/)
|
- [Managing Kubernetes Objects Using Object Configuration (Imperative)](/docs/tasks/manage-kubernetes-objects/imperative-config/)
|
||||||
@@ -185,4 +186,4 @@ Disadvantages compared to imperative object configuration:
|
|||||||
- [Kubectl Book](https://kubectl.docs.kubernetes.io)
|
- [Kubectl Book](https://kubectl.docs.kubernetes.io)
|
||||||
- [Kubernetes API Reference](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/)
|
- [Kubernetes API Reference](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,20 +2,20 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
- nelvadas
|
- nelvadas
|
||||||
title: Limit Ranges
|
title: Limit Ranges
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
By default, containers run with unbounded [compute resources](/docs/user-guide/compute-resources) on a Kubernetes cluster.
|
By default, containers run with unbounded [compute resources](/docs/user-guide/compute-resources) on a Kubernetes cluster.
|
||||||
With resource quotas, cluster administrators can restrict resource consumption and creation on a {{< glossary_tooltip text="namespace" term_id="namespace" >}} basis.
|
With resource quotas, cluster administrators can restrict resource consumption and creation on a {{< glossary_tooltip text="namespace" term_id="namespace" >}} basis.
|
||||||
Within a namespace, a Pod or Container can consume as much CPU and memory as defined by the namespace's resource quota. There is a concern that one Pod or Container could monopolize all available resources. A LimitRange is a policy to constrain resource allocations (to Pods or Containers) in a namespace.
|
Within a namespace, a Pod or Container can consume as much CPU and memory as defined by the namespace's resource quota. There is a concern that one Pod or Container could monopolize all available resources. A LimitRange is a policy to constrain resource allocations (to Pods or Containers) in a namespace.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
A _LimitRange_ provides constraints that can:
|
A _LimitRange_ provides constraints that can:
|
||||||
|
|
||||||
@@ -26,9 +26,7 @@ A _LimitRange_ provides constraints that can:
|
|||||||
|
|
||||||
## Enabling LimitRange
|
## Enabling LimitRange
|
||||||
|
|
||||||
LimitRange support is enabled by default for many Kubernetes distributions. It is
|
LimitRange support has been enabled by default since Kubernetes 1.10.
|
||||||
enabled when the apiserver `--enable-admission-plugins=` flag has `LimitRanger` admission controller as
|
|
||||||
one of its arguments.
|
|
||||||
|
|
||||||
A LimitRange is enforced in a particular namespace when there is a
|
A LimitRange is enforced in a particular namespace when there is a
|
||||||
LimitRange object in that namespace.
|
LimitRange object in that namespace.
|
||||||
@@ -56,9 +54,10 @@ there may be contention for resources. In this case, the Containers or Pods will
|
|||||||
|
|
||||||
Neither contention nor changes to a LimitRange will affect already created resources.
|
Neither contention nor changes to a LimitRange will affect already created resources.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
Refer to the [LimitRanger design document](https://git.k8s.io/community/contributors/design-proposals/resource-management/admission_control_limit_range.md) for more information.
|
Refer to the [LimitRanger design document](https://git.k8s.io/community/contributors/design-proposals/resource-management/admission_control_limit_range.md) for more information.
|
||||||
|
|
||||||
@@ -72,4 +71,4 @@ For examples on using limits, see:
|
|||||||
- a [detailed example on configuring quota per namespace](/docs/tasks/administer-cluster/quota-memory-cpu-namespace/).
|
- a [detailed example on configuring quota per namespace](/docs/tasks/administer-cluster/quota-memory-cpu-namespace/).
|
||||||
|
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -3,21 +3,21 @@ reviewers:
|
|||||||
- pweil-
|
- pweil-
|
||||||
- tallclair
|
- tallclair
|
||||||
title: Pod Security Policies
|
title: Pod Security Policies
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 20
|
weight: 20
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< feature-state state="beta" >}}
|
{{< feature-state state="beta" >}}
|
||||||
|
|
||||||
Pod Security Policies enable fine-grained authorization of pod creation and
|
Pod Security Policies enable fine-grained authorization of pod creation and
|
||||||
updates.
|
updates.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## What is a Pod Security Policy?
|
## What is a Pod Security Policy?
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ administrator to control the following:
|
|||||||
| Usage of host networking and ports | [`hostNetwork`, `hostPorts`](#host-namespaces) |
|
| Usage of host networking and ports | [`hostNetwork`, `hostPorts`](#host-namespaces) |
|
||||||
| Usage of volume types | [`volumes`](#volumes-and-file-systems) |
|
| Usage of volume types | [`volumes`](#volumes-and-file-systems) |
|
||||||
| Usage of the host filesystem | [`allowedHostPaths`](#volumes-and-file-systems) |
|
| Usage of the host filesystem | [`allowedHostPaths`](#volumes-and-file-systems) |
|
||||||
| White list of FlexVolume drivers | [`allowedFlexVolumes`](#flexvolume-drivers) |
|
| Allow specific FlexVolume drivers | [`allowedFlexVolumes`](#flexvolume-drivers) |
|
||||||
| Allocating an FSGroup that owns the pod's volumes | [`fsGroup`](#volumes-and-file-systems) |
|
| Allocating an FSGroup that owns the pod's volumes | [`fsGroup`](#volumes-and-file-systems) |
|
||||||
| Requiring the use of a read only root file system | [`readOnlyRootFilesystem`](#volumes-and-file-systems) |
|
| Requiring the use of a read only root file system | [`readOnlyRootFilesystem`](#volumes-and-file-systems) |
|
||||||
| The user and group IDs of the container | [`runAsUser`, `runAsGroup`, `supplementalGroups`](#users-and-groups) |
|
| The user and group IDs of the container | [`runAsUser`, `runAsGroup`, `supplementalGroups`](#users-and-groups) |
|
||||||
@@ -401,13 +401,13 @@ namespace. Doing so gives the pod access to the loopback device, services
|
|||||||
listening on localhost, and could be used to snoop on network activity of other
|
listening on localhost, and could be used to snoop on network activity of other
|
||||||
pods on the same node.
|
pods on the same node.
|
||||||
|
|
||||||
**HostPorts** - Provides a whitelist of ranges of allowable ports in the host
|
**HostPorts** - Provides a list of ranges of allowable ports in the host
|
||||||
network namespace. Defined as a list of `HostPortRange`, with `min`(inclusive)
|
network namespace. Defined as a list of `HostPortRange`, with `min`(inclusive)
|
||||||
and `max`(inclusive). Defaults to no allowed host ports.
|
and `max`(inclusive). Defaults to no allowed host ports.
|
||||||
|
|
||||||
### Volumes and file systems
|
### Volumes and file systems
|
||||||
|
|
||||||
**Volumes** - Provides a whitelist of allowed volume types. The allowable values
|
**Volumes** - Provides a list of allowed volume types. The allowable values
|
||||||
correspond to the volume sources that are defined when creating a volume. For
|
correspond to the volume sources that are defined when creating a volume. For
|
||||||
the complete list of volume types, see [Types of
|
the complete list of volume types, see [Types of
|
||||||
Volumes](/docs/concepts/storage/volumes/#types-of-volumes). Additionally, `*`
|
Volumes](/docs/concepts/storage/volumes/#types-of-volumes). Additionally, `*`
|
||||||
@@ -438,7 +438,7 @@ minimum value of the first range as the default. Validates against all ranges.
|
|||||||
all ranges if `FSGroups` is set.
|
all ranges if `FSGroups` is set.
|
||||||
- *RunAsAny* - No default provided. Allows any `fsGroup` ID to be specified.
|
- *RunAsAny* - No default provided. Allows any `fsGroup` ID to be specified.
|
||||||
|
|
||||||
**AllowedHostPaths** - This specifies a whitelist of host paths that are allowed
|
**AllowedHostPaths** - This specifies a list of host paths that are allowed
|
||||||
to be used by hostPath volumes. An empty list means there is no restriction on
|
to be used by hostPath volumes. An empty list means there is no restriction on
|
||||||
host paths used. This is defined as a list of objects with a single `pathPrefix`
|
host paths used. This is defined as a list of objects with a single `pathPrefix`
|
||||||
field, which allows hostPath volumes to mount a path that begins with an
|
field, which allows hostPath volumes to mount a path that begins with an
|
||||||
@@ -469,7 +469,7 @@ root filesystem (i.e. no writable layer).
|
|||||||
|
|
||||||
### FlexVolume drivers
|
### FlexVolume drivers
|
||||||
|
|
||||||
This specifies a whitelist of FlexVolume drivers that are allowed to be used
|
This specifies a list of FlexVolume drivers that are allowed to be used
|
||||||
by flexvolume. An empty list or nil means there is no restriction on the drivers.
|
by flexvolume. An empty list or nil means there is no restriction on the drivers.
|
||||||
Please make sure [`volumes`](#volumes-and-file-systems) field contains the
|
Please make sure [`volumes`](#volumes-and-file-systems) field contains the
|
||||||
`flexVolume` volume type; no FlexVolume driver is allowed otherwise.
|
`flexVolume` volume type; no FlexVolume driver is allowed otherwise.
|
||||||
@@ -555,7 +555,7 @@ the PodSecurityPolicy. For more details on Linux capabilities, see
|
|||||||
The following fields take a list of capabilities, specified as the capability
|
The following fields take a list of capabilities, specified as the capability
|
||||||
name in ALL_CAPS without the `CAP_` prefix.
|
name in ALL_CAPS without the `CAP_` prefix.
|
||||||
|
|
||||||
**AllowedCapabilities** - Provides a whitelist of capabilities that may be added
|
**AllowedCapabilities** - Provides a list of capabilities that are allowed to be added
|
||||||
to a container. The default set of capabilities are implicitly allowed. The
|
to a container. The default set of capabilities are implicitly allowed. The
|
||||||
empty set means that no additional capabilities may be added beyond the default
|
empty set means that no additional capabilities may be added beyond the default
|
||||||
set. `*` can be used to allow all capabilities.
|
set. `*` can be used to allow all capabilities.
|
||||||
@@ -579,7 +579,7 @@ specified.
|
|||||||
|
|
||||||
### AllowedProcMountTypes
|
### AllowedProcMountTypes
|
||||||
|
|
||||||
`allowedProcMountTypes` is a whitelist of allowed ProcMountTypes.
|
`allowedProcMountTypes` is a list of allowed ProcMountTypes.
|
||||||
Empty or nil indicates that only the `DefaultProcMountType` may be used.
|
Empty or nil indicates that only the `DefaultProcMountType` may be used.
|
||||||
|
|
||||||
`DefaultProcMount` uses the container runtime defaults for readonly and masked
|
`DefaultProcMount` uses the container runtime defaults for readonly and masked
|
||||||
@@ -631,12 +631,13 @@ By default, all safe sysctls are allowed.
|
|||||||
Refer to the [Sysctl documentation](
|
Refer to the [Sysctl documentation](
|
||||||
/docs/concepts/cluster-administration/sysctl-cluster/#podsecuritypolicy).
|
/docs/concepts/cluster-administration/sysctl-cluster/#podsecuritypolicy).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
See [Pod Security Standards](/docs/concepts/security/pod-security-standards/) for policy recommendations.
|
See [Pod Security Standards](/docs/concepts/security/pod-security-standards/) for policy recommendations.
|
||||||
|
|
||||||
Refer to [Pod Security Policy Reference](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podsecuritypolicy-v1beta1-policy) for the api details.
|
Refer to [Pod Security Policy Reference](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podsecuritypolicy-v1beta1-policy) for the api details.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,21 +2,21 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
- derekwaynecarr
|
- derekwaynecarr
|
||||||
title: Resource Quotas
|
title: Resource Quotas
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
When several users or teams share a cluster with a fixed number of nodes,
|
When several users or teams share a cluster with a fixed number of nodes,
|
||||||
there is a concern that one team could use more than its fair share of resources.
|
there is a concern that one team could use more than its fair share of resources.
|
||||||
|
|
||||||
Resource quotas are a tool for administrators to address this concern.
|
Resource quotas are a tool for administrators to address this concern.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
A resource quota, defined by a `ResourceQuota` object, provides constraints that limit
|
A resource quota, defined by a `ResourceQuota` object, provides constraints that limit
|
||||||
aggregate resource consumption per namespace. It can limit the quantity of objects that can
|
aggregate resource consumption per namespace. It can limit the quantity of objects that can
|
||||||
@@ -596,10 +596,11 @@ See [LimitedResources](https://github.com/kubernetes/kubernetes/pull/36765) and
|
|||||||
|
|
||||||
See a [detailed example for how to use resource quota](/docs/tasks/administer-cluster/quota-api-object/).
|
See a [detailed example for how to use resource quota](/docs/tasks/administer-cluster/quota-api-object/).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
See [ResourceQuota design doc](https://git.k8s.io/community/contributors/design-proposals/resource-management/admission_control_resource_quota.md) for more information.
|
See [ResourceQuota design doc](https://git.k8s.io/community/contributors/design-proposals/resource-management/admission_control_resource_quota.md) for more information.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ reviewers:
|
|||||||
- kevin-wangzefeng
|
- kevin-wangzefeng
|
||||||
- bsalamat
|
- bsalamat
|
||||||
title: Assigning Pods to Nodes
|
title: Assigning Pods to Nodes
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 50
|
weight: 50
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
You can constrain a {{< glossary_tooltip text="Pod" term_id="pod" >}} to only be able to run on particular
|
You can constrain a {{< glossary_tooltip text="Pod" term_id="pod" >}} to only be able to run on particular
|
||||||
{{< glossary_tooltip text="Node(s)" term_id="node" >}}, or to prefer to run on particular nodes.
|
{{< glossary_tooltip text="Node(s)" term_id="node" >}}, or to prefer to run on particular nodes.
|
||||||
@@ -21,9 +21,9 @@ but there are some circumstances where you may want more control on a node where
|
|||||||
that a pod ends up on a machine with an SSD attached to it, or to co-locate pods from two different
|
that a pod ends up on a machine with an SSD attached to it, or to co-locate pods from two different
|
||||||
services that communicate a lot into the same availability zone.
|
services that communicate a lot into the same availability zone.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## nodeSelector
|
## nodeSelector
|
||||||
|
|
||||||
@@ -213,10 +213,8 @@ as at least one already-running pod that has a label with key "security" and val
|
|||||||
on node N if node N has a label with key `failure-domain.beta.kubernetes.io/zone` and some value V
|
on node N if node N has a label with key `failure-domain.beta.kubernetes.io/zone` and some value V
|
||||||
such that there is at least one node in the cluster with key `failure-domain.beta.kubernetes.io/zone` and
|
such that there is at least one node in the cluster with key `failure-domain.beta.kubernetes.io/zone` and
|
||||||
value V that is running a pod that has a label with key "security" and value "S1".) The pod anti-affinity
|
value V that is running a pod that has a label with key "security" and value "S1".) The pod anti-affinity
|
||||||
rule says that the pod prefers not to be scheduled onto a node if that node is already running a pod with label
|
rule says that the pod cannot be scheduled onto a node if that node is in the same zone as a pod with
|
||||||
having key "security" and value "S2". (If the `topologyKey` were `failure-domain.beta.kubernetes.io/zone` then
|
label having key "security" and value "S2". See the
|
||||||
it would mean that the pod cannot be scheduled onto a node if that node is in the same zone as a pod with
|
|
||||||
label having key "security" and value "S2".) See the
|
|
||||||
[design doc](https://git.k8s.io/community/contributors/design-proposals/scheduling/podaffinity.md)
|
[design doc](https://git.k8s.io/community/contributors/design-proposals/scheduling/podaffinity.md)
|
||||||
for many more examples of pod affinity and anti-affinity, both the `requiredDuringSchedulingIgnoredDuringExecution`
|
for many more examples of pod affinity and anti-affinity, both the `requiredDuringSchedulingIgnoredDuringExecution`
|
||||||
flavor and the `preferredDuringSchedulingIgnoredDuringExecution` flavor.
|
flavor and the `preferredDuringSchedulingIgnoredDuringExecution` flavor.
|
||||||
@@ -388,9 +386,10 @@ spec:
|
|||||||
|
|
||||||
The above pod will run on the node kube-01.
|
The above pod will run on the node kube-01.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
[Taints](/docs/concepts/scheduling-eviction/taint-and-toleration/) allow a Node to *repel* a set of Pods.
|
[Taints](/docs/concepts/scheduling-eviction/taint-and-toleration/) allow a Node to *repel* a set of Pods.
|
||||||
|
|
||||||
@@ -402,4 +401,4 @@ Once a Pod is assigned to a Node, the kubelet runs the Pod and allocates node-lo
|
|||||||
The [topology manager](/docs/tasks/administer-cluster/topology-manager/) can take part in node-level
|
The [topology manager](/docs/tasks/administer-cluster/topology-manager/) can take part in node-level
|
||||||
resource allocation decisions.
|
resource allocation decisions.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
---
|
---
|
||||||
title: Kubernetes Scheduler
|
title: Kubernetes Scheduler
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
In Kubernetes, _scheduling_ refers to making sure that {{< glossary_tooltip text="Pods" term_id="pod" >}}
|
In Kubernetes, _scheduling_ refers to making sure that {{< glossary_tooltip text="Pods" term_id="pod" >}}
|
||||||
are matched to {{< glossary_tooltip text="Nodes" term_id="node" >}} so that
|
are matched to {{< glossary_tooltip text="Nodes" term_id="node" >}} so that
|
||||||
{{< glossary_tooltip term_id="kubelet" >}} can run them.
|
{{< glossary_tooltip term_id="kubelet" >}} can run them.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Scheduling overview {#scheduling}
|
## Scheduling overview {#scheduling}
|
||||||
|
|
||||||
@@ -86,12 +86,13 @@ of the scheduler:
|
|||||||
`QueueSort`, `Filter`, `Score`, `Bind`, `Reserve`, `Permit`, and others. You
|
`QueueSort`, `Filter`, `Score`, `Bind`, `Reserve`, `Permit`, and others. You
|
||||||
can also configure the kube-scheduler to run different profiles.
|
can also configure the kube-scheduler to run different profiles.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
{{% capture whatsnext %}}
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* Read about [scheduler performance tuning](/docs/concepts/scheduling-eviction/scheduler-perf-tuning/)
|
* Read about [scheduler performance tuning](/docs/concepts/scheduling-eviction/scheduler-perf-tuning/)
|
||||||
* Read about [Pod topology spread constraints](/docs/concepts/workloads/pods/pod-topology-spread-constraints/)
|
* Read about [Pod topology spread constraints](/docs/concepts/workloads/pods/pod-topology-spread-constraints/)
|
||||||
* Read the [reference documentation](/docs/reference/command-line-tools-reference/kube-scheduler/) for kube-scheduler
|
* Read the [reference documentation](/docs/reference/command-line-tools-reference/kube-scheduler/) for kube-scheduler
|
||||||
* Learn about [configuring multiple schedulers](/docs/tasks/administer-cluster/configure-multiple-schedulers/)
|
* Learn about [configuring multiple schedulers](/docs/tasks/administer-cluster/configure-multiple-schedulers/)
|
||||||
* Learn about [topology management policies](/docs/tasks/administer-cluster/topology-manager/)
|
* Learn about [topology management policies](/docs/tasks/administer-cluster/topology-manager/)
|
||||||
* Learn about [Pod Overhead](/docs/concepts/configuration/pod-overhead/)
|
* Learn about [Pod Overhead](/docs/concepts/configuration/pod-overhead/)
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
- bsalamat
|
- bsalamat
|
||||||
title: Scheduler Performance Tuning
|
title: Scheduler Performance Tuning
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 70
|
weight: 70
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.14" state="beta" >}}
|
{{< feature-state for_k8s_version="v1.14" state="beta" >}}
|
||||||
|
|
||||||
@@ -24,9 +24,9 @@ in a process called _Binding_.
|
|||||||
This page explains performance tuning optimizations that are relevant for
|
This page explains performance tuning optimizations that are relevant for
|
||||||
large Kubernetes clusters.
|
large Kubernetes clusters.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
In large clusters, you can tune the scheduler's behaviour balancing
|
In large clusters, you can tune the scheduler's behaviour balancing
|
||||||
scheduling outcomes between latency (new Pods are placed quickly) and
|
scheduling outcomes between latency (new Pods are placed quickly) and
|
||||||
@@ -164,4 +164,4 @@ Node 1, Node 5, Node 2, Node 6, Node 3, Node 4
|
|||||||
|
|
||||||
After going over all the Nodes, it goes back to Node 1.
|
After going over all the Nodes, it goes back to Node 1.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
- ahg-g
|
- ahg-g
|
||||||
title: Scheduling Framework
|
title: Scheduling Framework
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 60
|
weight: 60
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.15" state="alpha" >}}
|
{{< feature-state for_k8s_version="v1.15" state="alpha" >}}
|
||||||
|
|
||||||
@@ -20,9 +20,9 @@ framework.
|
|||||||
|
|
||||||
[kep]: https://github.com/kubernetes/enhancements/blob/master/keps/sig-scheduling/20180409-scheduling-framework.md
|
[kep]: https://github.com/kubernetes/enhancements/blob/master/keps/sig-scheduling/20180409-scheduling-framework.md
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
# Framework workflow
|
# Framework workflow
|
||||||
|
|
||||||
@@ -239,4 +239,3 @@ If you are using Kubernetes v1.18 or later, you can configure a set of plugins a
|
|||||||
a scheduler profile and then define multiple profiles to fit various kinds of workload.
|
a scheduler profile and then define multiple profiles to fit various kinds of workload.
|
||||||
Learn more at [multiple profiles](/docs/reference/scheduling/profiles/#multiple-profiles).
|
Learn more at [multiple profiles](/docs/reference/scheduling/profiles/#multiple-profiles).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
@@ -4,12 +4,12 @@ reviewers:
|
|||||||
- kevin-wangzefeng
|
- kevin-wangzefeng
|
||||||
- bsalamat
|
- bsalamat
|
||||||
title: Taints and Tolerations
|
title: Taints and Tolerations
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 40
|
weight: 40
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
[_Node affinity_](/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity),
|
[_Node affinity_](/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity),
|
||||||
is a property of {{< glossary_tooltip text="Pods" term_id="pod" >}} that *attracts* them to
|
is a property of {{< glossary_tooltip text="Pods" term_id="pod" >}} that *attracts* them to
|
||||||
a set of {{< glossary_tooltip text="nodes" term_id="node" >}} (either as a preference or a
|
a set of {{< glossary_tooltip text="nodes" term_id="node" >}} (either as a preference or a
|
||||||
@@ -22,9 +22,9 @@ Taints and tolerations work together to ensure that pods are not scheduled
|
|||||||
onto inappropriate nodes. One or more taints are applied to a node; this
|
onto inappropriate nodes. One or more taints are applied to a node; this
|
||||||
marks that the node should not accept any pods that do not tolerate the taints.
|
marks that the node should not accept any pods that do not tolerate the taints.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Concepts
|
## Concepts
|
||||||
|
|
||||||
@@ -282,9 +282,10 @@ tolerations to all daemons, to prevent DaemonSets from breaking.
|
|||||||
Adding these tolerations ensures backward compatibility. You can also add
|
Adding these tolerations ensures backward compatibility. You can also add
|
||||||
arbitrary tolerations to DaemonSets.
|
arbitrary tolerations to DaemonSets.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
{{% capture whatsnext %}}
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* Read about [out of resource handling](/docs/tasks/administer-cluster/out-of-resource/) and how you can configure it
|
* Read about [out of resource handling](/docs/tasks/administer-cluster/out-of-resource/) and how you can configure it
|
||||||
* Read about [pod priority](/docs/concepts/configuration/pod-priority-preemption/)
|
* Read about [pod priority](/docs/concepts/configuration/pod-priority-preemption/)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
- zparnold
|
- zparnold
|
||||||
title: Overview of Cloud Native Security
|
title: Overview of Cloud Native Security
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 1
|
weight: 1
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< toc >}}
|
{{< toc >}}
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
Kubernetes Security (and security in general) is an immense topic that has many
|
Kubernetes Security (and security in general) is an immense topic that has many
|
||||||
highly interrelated parts. In today's era where open source software is
|
highly interrelated parts. In today's era where open source software is
|
||||||
integrated into many of the systems that help web applications run,
|
integrated into many of the systems that help web applications run,
|
||||||
@@ -17,9 +17,9 @@ think about security holistically. This guide will define a mental model
|
|||||||
for some general concepts surrounding Cloud Native Security. The mental model is completely arbitrary
|
for some general concepts surrounding Cloud Native Security. The mental model is completely arbitrary
|
||||||
and you should only use it if it helps you think about where to secure your software
|
and you should only use it if it helps you think about where to secure your software
|
||||||
stack.
|
stack.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## The 4C's of Cloud Native Security
|
## The 4C's of Cloud Native Security
|
||||||
Let's start with a diagram that may help you understand how you can think about security in layers.
|
Let's start with a diagram that may help you understand how you can think about security in layers.
|
||||||
@@ -153,12 +153,13 @@ Most of the above mentioned suggestions can actually be automated in your code
|
|||||||
delivery pipeline as part of a series of checks in security. To learn about a
|
delivery pipeline as part of a series of checks in security. To learn about a
|
||||||
more "Continuous Hacking" approach to software delivery, [this article](https://thenewstack.io/beyond-ci-cd-how-continuous-hacking-of-docker-containers-and-pipeline-driven-security-keeps-ygrene-secure/) provides more detail.
|
more "Continuous Hacking" approach to software delivery, [this article](https://thenewstack.io/beyond-ci-cd-how-continuous-hacking-of-docker-containers-and-pipeline-driven-security-keeps-ygrene-secure/) provides more detail.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
{{% capture whatsnext %}}
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* Read about [network policies for Pods](/docs/concepts/services-networking/network-policies/)
|
* Read about [network policies for Pods](/docs/concepts/services-networking/network-policies/)
|
||||||
* Read about [securing your cluster](/docs/tasks/administer-cluster/securing-a-cluster/)
|
* Read about [securing your cluster](/docs/tasks/administer-cluster/securing-a-cluster/)
|
||||||
* Read about [API access control](/docs/reference/access-authn-authz/controlling-access/)
|
* Read about [API access control](/docs/reference/access-authn-authz/controlling-access/)
|
||||||
* Read about [data encryption in transit](/docs/tasks/tls/managing-tls-in-a-cluster/) for the control plane
|
* Read about [data encryption in transit](/docs/tasks/tls/managing-tls-in-a-cluster/) for the control plane
|
||||||
* Read about [data encryption at rest](/docs/tasks/administer-cluster/encrypt-data/)
|
* Read about [data encryption at rest](/docs/tasks/administer-cluster/encrypt-data/)
|
||||||
* Read about [Secrets in Kubernetes](/docs/concepts/configuration/secret/)
|
* Read about [Secrets in Kubernetes](/docs/concepts/configuration/secret/)
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
- tallclair
|
- tallclair
|
||||||
title: Pod Security Standards
|
title: Pod Security Standards
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
Security settings for Pods are typically applied by using [security
|
Security settings for Pods are typically applied by using [security
|
||||||
contexts](/docs/tasks/configure-pod-container/security-context/). Security Contexts allow for the
|
contexts](/docs/tasks/configure-pod-container/security-context/). Security Contexts allow for the
|
||||||
@@ -21,9 +21,9 @@ However, numerous means of policy enforcement have arisen that augment or replac
|
|||||||
PodSecurityPolicy. The intent of this page is to detail recommended Pod security profiles, decoupled
|
PodSecurityPolicy. The intent of this page is to detail recommended Pod security profiles, decoupled
|
||||||
from any specific instantiation.
|
from any specific instantiation.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Policy Types
|
## Policy Types
|
||||||
|
|
||||||
@@ -43,9 +43,9 @@ should range from highly restricted to highly flexible:
|
|||||||
The Privileged policy is purposely-open, and entirely unrestricted. This type of policy is typically
|
The Privileged policy is purposely-open, and entirely unrestricted. This type of policy is typically
|
||||||
aimed at system- and infrastructure-level workloads managed by privileged, trusted users.
|
aimed at system- and infrastructure-level workloads managed by privileged, trusted users.
|
||||||
|
|
||||||
The privileged policy is defined by an absence of restrictions. For blacklist-oriented enforcement
|
The privileged policy is defined by an absence of restrictions. For allow-by-default enforcement
|
||||||
mechanisms (such as gatekeeper), the privileged profile may be an absence of applied constraints
|
mechanisms (such as gatekeeper), the privileged profile may be an absence of applied constraints
|
||||||
rather than an instantiated policy. In contrast, for a whitelist oriented mechanism (such as Pod
|
rather than an instantiated policy. In contrast, for a deny-by-default mechanism (such as Pod
|
||||||
Security Policy) the privileged policy should enable all controls (disable all restrictions).
|
Security Policy) the privileged policy should enable all controls (disable all restrictions).
|
||||||
|
|
||||||
### Baseline/Default
|
### Baseline/Default
|
||||||
@@ -90,7 +90,7 @@ enforced/disallowed:
|
|||||||
<br><b>Restricted Fields:</b><br>
|
<br><b>Restricted Fields:</b><br>
|
||||||
spec.containers[*].securityContext.capabilities.add<br>
|
spec.containers[*].securityContext.capabilities.add<br>
|
||||||
spec.initContainers[*].securityContext.capabilities.add<br>
|
spec.initContainers[*].securityContext.capabilities.add<br>
|
||||||
<br><b>Allowed Values:</b> empty (optionally whitelisted defaults)<br>
|
<br><b>Allowed Values:</b> empty (or restricted to a known list)<br>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -105,20 +105,20 @@ enforced/disallowed:
|
|||||||
<tr>
|
<tr>
|
||||||
<td>Host Ports</td>
|
<td>Host Ports</td>
|
||||||
<td>
|
<td>
|
||||||
HostPorts should be disallowed, or at minimum restricted to a whitelist.<br>
|
HostPorts should be disallowed, or at minimum restricted to a known list.<br>
|
||||||
<br><b>Restricted Fields:</b><br>
|
<br><b>Restricted Fields:</b><br>
|
||||||
spec.containers[*].ports[*].hostPort<br>
|
spec.containers[*].ports[*].hostPort<br>
|
||||||
spec.initContainers[*].ports[*].hostPort<br>
|
spec.initContainers[*].ports[*].hostPort<br>
|
||||||
<br><b>Allowed Values:</b> 0, undefined, (whitelisted)<br>
|
<br><b>Allowed Values:</b> 0, undefined (or restricted to a known list)<br>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>AppArmor <em>(optional)</em></td>
|
<td>AppArmor <em>(optional)</em></td>
|
||||||
<td>
|
<td>
|
||||||
On supported hosts, the `runtime/default` AppArmor profile is applied by default. The default policy should prevent overriding or disabling the policy, or restrict overrides to a whitelisted set of profiles.<br>
|
On supported hosts, the 'runtime/default' AppArmor profile is applied by default. The default policy should prevent overriding or disabling the policy, or restrict overrides to an allowed set of profiles.<br>
|
||||||
<br><b>Restricted Fields:</b><br>
|
<br><b>Restricted Fields:</b><br>
|
||||||
metadata.annotations['container.apparmor.security.beta.kubernetes.io/*']<br>
|
metadata.annotations['container.apparmor.security.beta.kubernetes.io/*']<br>
|
||||||
<br><b>Allowed Values:</b> runtime/default, undefined<br>
|
<br><b>Allowed Values:</b> 'runtime/default', undefined<br>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -132,6 +132,31 @@ enforced/disallowed:
|
|||||||
<br><b>Allowed Values:</b> undefined/nil<br>
|
<br><b>Allowed Values:</b> undefined/nil<br>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>/proc Mount Type</td>
|
||||||
|
<td>
|
||||||
|
The default /proc masks are set up to reduce attack surface, and should be required.<br>
|
||||||
|
<br><b>Restricted Fields:</b><br>
|
||||||
|
spec.containers[*].securityContext.procMount<br>
|
||||||
|
spec.initContainers[*].securityContext.procMount<br>
|
||||||
|
<br><b>Allowed Values:</b> undefined/nil, 'Default'<br>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Sysctls</td>
|
||||||
|
<td>
|
||||||
|
Sysctls can disable security mechanisms or affect all containers on a host, and should be disallowed except for an allowed "safe" subset.
|
||||||
|
A sysctl is considered safe if it is namespaced in the container or the Pod, and it is isolated from other Pods or processes on the same Node.<br>
|
||||||
|
<br><b>Restricted Fields:</b><br>
|
||||||
|
spec.securityContext.sysctls<br>
|
||||||
|
<br><b>Allowed Values:</b><br>
|
||||||
|
kernel.shm_rmid_forced<br>
|
||||||
|
net.ipv4.ip_local_port_range<br>
|
||||||
|
net.ipv4.tcp_syncookies<br>
|
||||||
|
net.ipv4.ping_group_range<br>
|
||||||
|
undefined/empty<br>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
@@ -224,12 +249,12 @@ well as lower-trust users.The following listed controls should be enforced/disal
|
|||||||
<tr>
|
<tr>
|
||||||
<td>Seccomp</td>
|
<td>Seccomp</td>
|
||||||
<td>
|
<td>
|
||||||
The runtime/default seccomp profile must be required, or allow additional whitelisted values.<br>
|
The 'runtime/default' seccomp profile must be required, or allow specific additional profiles.<br>
|
||||||
<br><b>Restricted Fields:</b><br>
|
<br><b>Restricted Fields:</b><br>
|
||||||
metadata.annotations['seccomp.security.alpha.kubernetes.io/pod']<br>
|
metadata.annotations['seccomp.security.alpha.kubernetes.io/pod']<br>
|
||||||
metadata.annotations['container.seccomp.security.alpha.kubernetes.io/*']<br>
|
metadata.annotations['container.seccomp.security.alpha.kubernetes.io/*']<br>
|
||||||
<br><b>Allowed Values:</b><br>
|
<br><b>Allowed Values:</b><br>
|
||||||
runtime/default<br>
|
'runtime/default'<br>
|
||||||
undefined (container annotation)<br>
|
undefined (container annotation)<br>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -297,4 +322,4 @@ kernel. This allows for workloads requiring heightened permissions to still be i
|
|||||||
Additionally, the protection of sandboxed workloads is highly dependent on the method of
|
Additionally, the protection of sandboxed workloads is highly dependent on the method of
|
||||||
sandboxing. As such, no single ‘recommended’ policy is recommended for all sandboxed workloads.
|
sandboxing. As such, no single ‘recommended’ policy is recommended for all sandboxed workloads.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
+5
-5
@@ -3,19 +3,19 @@ reviewers:
|
|||||||
- rickypai
|
- rickypai
|
||||||
- thockin
|
- thockin
|
||||||
title: Adding entries to Pod /etc/hosts with HostAliases
|
title: Adding entries to Pod /etc/hosts with HostAliases
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 60
|
weight: 60
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< toc >}}
|
{{< toc >}}
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
Adding entries to a Pod's /etc/hosts file provides Pod-level override of hostname resolution when DNS and other options are not applicable. In 1.7, users can add these custom entries with the HostAliases field in PodSpec.
|
Adding entries to a Pod's /etc/hosts file provides Pod-level override of hostname resolution when DNS and other options are not applicable. In 1.7, users can add these custom entries with the HostAliases field in PodSpec.
|
||||||
|
|
||||||
Modification not using HostAliases is not suggested because the file is managed by Kubelet and can be overwritten on during Pod creation/restart.
|
Modification not using HostAliases is not suggested because the file is managed by Kubelet and can be overwritten on during Pod creation/restart.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Default Hosts File Content
|
## Default Hosts File Content
|
||||||
|
|
||||||
@@ -125,5 +125,5 @@ overwritten whenever the `hosts` file is remounted by Kubelet in the event of
|
|||||||
a container restart or a Pod reschedule. Thus, it is not suggested to modify
|
a container restart or a Pod reschedule. Thus, it is not suggested to modify
|
||||||
the contents of the file.
|
the contents of the file.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ reviewers:
|
|||||||
- lavalamp
|
- lavalamp
|
||||||
- thockin
|
- thockin
|
||||||
title: Connecting Applications with Services
|
title: Connecting Applications with Services
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 30
|
weight: 30
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
## The Kubernetes model for connecting containers
|
## The Kubernetes model for connecting containers
|
||||||
|
|
||||||
@@ -21,9 +21,9 @@ Coordinating port allocations across multiple developers or teams that provide c
|
|||||||
|
|
||||||
This guide uses a simple nginx server to demonstrate proof of concept.
|
This guide uses a simple nginx server to demonstrate proof of concept.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Exposing pods to the cluster
|
## Exposing pods to the cluster
|
||||||
|
|
||||||
@@ -395,7 +395,7 @@ kubectl get svc my-nginx
|
|||||||
```
|
```
|
||||||
```
|
```
|
||||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||||
my-nginx ClusterIP 10.0.162.149 162.222.184.144 80/TCP,81/TCP,82/TCP 21s
|
my-nginx LoadBalancer 10.0.162.149 xx.xxx.xxx.xxx 8080:30163/TCP 21s
|
||||||
```
|
```
|
||||||
```
|
```
|
||||||
curl https://<EXTERNAL-IP> -k
|
curl https://<EXTERNAL-IP> -k
|
||||||
@@ -418,12 +418,13 @@ LoadBalancer Ingress: a320587ffd19711e5a37606cf4a74574-1142138393.us-east-1.el
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* Learn more about [Using a Service to Access an Application in a Cluster](/docs/tasks/access-application-cluster/service-access-application-cluster/)
|
* Learn more about [Using a Service to Access an Application in a Cluster](/docs/tasks/access-application-cluster/service-access-application-cluster/)
|
||||||
* Learn more about [Connecting a Front End to a Back End Using a Service](/docs/tasks/access-application-cluster/connecting-frontend-backend/)
|
* Learn more about [Connecting a Front End to a Back End Using a Service](/docs/tasks/access-application-cluster/connecting-frontend-backend/)
|
||||||
* Learn more about [Creating an External Load Balancer](/docs/tasks/access-application-cluster/create-external-load-balancer/)
|
* Learn more about [Creating an External Load Balancer](/docs/tasks/access-application-cluster/create-external-load-balancer/)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -3,14 +3,14 @@ reviewers:
|
|||||||
- davidopp
|
- davidopp
|
||||||
- thockin
|
- thockin
|
||||||
title: DNS for Services and Pods
|
title: DNS for Services and Pods
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 20
|
weight: 20
|
||||||
---
|
---
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
This page provides an overview of DNS support by Kubernetes.
|
This page provides an overview of DNS support by Kubernetes.
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
@@ -66,6 +66,13 @@ of the form `auto-generated-name.my-svc.my-namespace.svc.cluster-domain.example`
|
|||||||
|
|
||||||
## Pods
|
## Pods
|
||||||
|
|
||||||
|
### A/AAAA records
|
||||||
|
|
||||||
|
Any pods created by a Deployment or DaemonSet have the following
|
||||||
|
DNS resolution available:
|
||||||
|
|
||||||
|
`pod-ip-address.deployment-name.my-namespace.svc.cluster-domain.example.`
|
||||||
|
|
||||||
### Pod's hostname and subdomain fields
|
### Pod's hostname and subdomain fields
|
||||||
|
|
||||||
Currently when a pod is created, its hostname is the Pod's `metadata.name` value.
|
Currently when a pod is created, its hostname is the Pod's `metadata.name` value.
|
||||||
@@ -262,11 +269,11 @@ The availability of Pod DNS Config and DNS Policy "`None`" is shown as below.
|
|||||||
| 1.10 | Beta (on by default)|
|
| 1.10 | Beta (on by default)|
|
||||||
| 1.9 | Alpha |
|
| 1.9 | Alpha |
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
For guidance on administering DNS configurations, check
|
For guidance on administering DNS configurations, check
|
||||||
[Configure DNS Service](/docs/tasks/administer-cluster/dns-custom-nameservers/)
|
[Configure DNS Service](/docs/tasks/administer-cluster/dns-custom-nameservers/)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
@@ -9,11 +9,11 @@ feature:
|
|||||||
description: >
|
description: >
|
||||||
Allocation of IPv4 and IPv6 addresses to Pods and Services
|
Allocation of IPv4 and IPv6 addresses to Pods and Services
|
||||||
|
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 70
|
weight: 70
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.16" state="alpha" >}}
|
{{< feature-state for_k8s_version="v1.16" state="alpha" >}}
|
||||||
|
|
||||||
@@ -21,9 +21,9 @@ weight: 70
|
|||||||
|
|
||||||
If you enable IPv4/IPv6 dual-stack networking for your Kubernetes cluster, the cluster will support the simultaneous assignment of both IPv4 and IPv6 addresses.
|
If you enable IPv4/IPv6 dual-stack networking for your Kubernetes cluster, the cluster will support the simultaneous assignment of both IPv4 and IPv6 addresses.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Supported Features
|
## Supported Features
|
||||||
|
|
||||||
@@ -103,10 +103,11 @@ The use of publicly routable and non-publicly routable IPv6 address blocks is ac
|
|||||||
|
|
||||||
* Kubenet forces IPv4,IPv6 positional reporting of IPs (--cluster-cidr)
|
* Kubenet forces IPv4,IPv6 positional reporting of IPs (--cluster-cidr)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* [Validate IPv4/IPv6 dual-stack](/docs/tasks/network/validate-dual-stack) networking
|
* [Validate IPv4/IPv6 dual-stack](/docs/tasks/network/validate-dual-stack) networking
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
- freehan
|
- freehan
|
||||||
title: EndpointSlices
|
title: EndpointSlices
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 15
|
weight: 15
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.17" state="beta" >}}
|
{{< feature-state for_k8s_version="v1.17" state="beta" >}}
|
||||||
|
|
||||||
@@ -15,9 +15,9 @@ _EndpointSlices_ provide a simple way to track network endpoints within a
|
|||||||
Kubernetes cluster. They offer a more scalable and extensible alternative to
|
Kubernetes cluster. They offer a more scalable and extensible alternative to
|
||||||
Endpoints.
|
Endpoints.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Motivation
|
## Motivation
|
||||||
|
|
||||||
@@ -175,11 +175,12 @@ necessary soon anyway. Rolling updates of Deployments also provide a natural
|
|||||||
repacking of EndpointSlices with all pods and their corresponding endpoints
|
repacking of EndpointSlices with all pods and their corresponding endpoints
|
||||||
getting replaced.
|
getting replaced.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* [Enabling EndpointSlices](/docs/tasks/administer-cluster/enabling-endpointslices)
|
* [Enabling EndpointSlices](/docs/tasks/administer-cluster/enabling-endpointslices)
|
||||||
* Read [Connecting Applications with Services](/docs/concepts/services-networking/connect-applications-service/)
|
* Read [Connecting Applications with Services](/docs/concepts/services-networking/connect-applications-service/)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
title: Ingress Controllers
|
title: Ingress Controllers
|
||||||
reviewers:
|
reviewers:
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 40
|
weight: 40
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
In order for the Ingress resource to work, the cluster must have an ingress controller running.
|
In order for the Ingress resource to work, the cluster must have an ingress controller running.
|
||||||
|
|
||||||
@@ -16,9 +16,9 @@ that best fits your cluster.
|
|||||||
Kubernetes as a project currently supports and maintains [GCE](https://git.k8s.io/ingress-gce/README.md) and
|
Kubernetes as a project currently supports and maintains [GCE](https://git.k8s.io/ingress-gce/README.md) and
|
||||||
[nginx](https://git.k8s.io/ingress-nginx/README.md) controllers.
|
[nginx](https://git.k8s.io/ingress-nginx/README.md) controllers.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Additional controllers
|
## Additional controllers
|
||||||
|
|
||||||
@@ -64,11 +64,12 @@ controllers operate slightly differently.
|
|||||||
Make sure you review your ingress controller's documentation to understand the caveats of choosing it.
|
Make sure you review your ingress controller's documentation to understand the caveats of choosing it.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* Learn more about [Ingress](/docs/concepts/services-networking/ingress/).
|
* Learn more about [Ingress](/docs/concepts/services-networking/ingress/).
|
||||||
* [Set up Ingress on Minikube with the NGINX Controller](/docs/tasks/access-application-cluster/ingress-minikube).
|
* [Set up Ingress on Minikube with the NGINX Controller](/docs/tasks/access-application-cluster/ingress-minikube).
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -2,16 +2,16 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
- bprashanth
|
- bprashanth
|
||||||
title: Ingress
|
title: Ingress
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 40
|
weight: 40
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
{{< feature-state for_k8s_version="v1.1" state="beta" >}}
|
{{< feature-state for_k8s_version="v1.1" state="beta" >}}
|
||||||
{{< glossary_definition term_id="ingress" length="all" >}}
|
{{< glossary_definition term_id="ingress" length="all" >}}
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Terminology
|
## Terminology
|
||||||
|
|
||||||
@@ -542,10 +542,11 @@ You can expose a Service in multiple ways that don't directly involve the Ingres
|
|||||||
* Use [Service.Type=LoadBalancer](/docs/concepts/services-networking/service/#loadbalancer)
|
* Use [Service.Type=LoadBalancer](/docs/concepts/services-networking/service/#loadbalancer)
|
||||||
* Use [Service.Type=NodePort](/docs/concepts/services-networking/service/#nodeport)
|
* Use [Service.Type=NodePort](/docs/concepts/services-networking/service/#nodeport)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* Learn about the [Ingress API](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#ingress-v1beta1-networking-k8s-io)
|
* Learn about the [Ingress API](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#ingress-v1beta1-networking-k8s-io)
|
||||||
* Learn about [Ingress Controllers](/docs/concepts/services-networking/ingress-controllers/)
|
* Learn about [Ingress Controllers](/docs/concepts/services-networking/ingress-controllers/)
|
||||||
* [Set up Ingress on Minikube with the NGINX Controller](/docs/tasks/access-application-cluster/ingress-minikube)
|
* [Set up Ingress on Minikube with the NGINX Controller](/docs/tasks/access-application-cluster/ingress-minikube)
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -4,20 +4,20 @@ reviewers:
|
|||||||
- caseydavenport
|
- caseydavenport
|
||||||
- danwinship
|
- danwinship
|
||||||
title: Network Policies
|
title: Network Policies
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 50
|
weight: 50
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< toc >}}
|
{{< toc >}}
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
A network policy is a specification of how groups of {{< glossary_tooltip text="pods" term_id="pod">}} are allowed to communicate with each other and other network endpoints.
|
A network policy is a specification of how groups of {{< glossary_tooltip text="pods" term_id="pod">}} are allowed to communicate with each other and other network endpoints.
|
||||||
|
|
||||||
NetworkPolicy resources use {{< glossary_tooltip text="labels" term_id="label">}} to select pods and define rules which specify what traffic is allowed to the selected pods.
|
NetworkPolicy resources use {{< glossary_tooltip text="labels" term_id="label">}} to select pods and define rules which specify what traffic is allowed to the selected pods.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
Network policies are implemented by the [network plugin](/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/). To use network policies, you must be using a networking solution which supports NetworkPolicy. Creating a NetworkPolicy resource without a controller that implements it will have no effect.
|
Network policies are implemented by the [network plugin](/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/). To use network policies, you must be using a networking solution which supports NetworkPolicy. Creating a NetworkPolicy resource without a controller that implements it will have no effect.
|
||||||
@@ -89,9 +89,9 @@ __podSelector__: Each NetworkPolicy includes a `podSelector` which selects the g
|
|||||||
|
|
||||||
__policyTypes__: Each NetworkPolicy includes a `policyTypes` list which may include either `Ingress`, `Egress`, or both. The `policyTypes` field indicates whether or not the given policy applies to ingress traffic to selected pod, egress traffic from selected pods, or both. If no `policyTypes` are specified on a NetworkPolicy then by default `Ingress` will always be set and `Egress` will be set if the NetworkPolicy has any egress rules.
|
__policyTypes__: Each NetworkPolicy includes a `policyTypes` list which may include either `Ingress`, `Egress`, or both. The `policyTypes` field indicates whether or not the given policy applies to ingress traffic to selected pod, egress traffic from selected pods, or both. If no `policyTypes` are specified on a NetworkPolicy then by default `Ingress` will always be set and `Egress` will be set if the NetworkPolicy has any egress rules.
|
||||||
|
|
||||||
__ingress__: Each NetworkPolicy may include a list of whitelist `ingress` rules. Each rule allows traffic which matches both the `from` and `ports` sections. The example policy contains a single rule, which matches traffic on a single port, from one of three sources, the first specified via an `ipBlock`, the second via a `namespaceSelector` and the third via a `podSelector`.
|
__ingress__: Each NetworkPolicy may include a list of allowed `ingress` rules. Each rule allows traffic which matches both the `from` and `ports` sections. The example policy contains a single rule, which matches traffic on a single port, from one of three sources, the first specified via an `ipBlock`, the second via a `namespaceSelector` and the third via a `podSelector`.
|
||||||
|
|
||||||
__egress__: Each NetworkPolicy may include a list of whitelist `egress` rules. Each rule allows traffic which matches both the `to` and `ports` sections. The example policy contains a single rule, which matches traffic on a single port to any destination in `10.0.0.0/24`.
|
__egress__: Each NetworkPolicy may include a list of allowed `egress` rules. Each rule allows traffic which matches both the `to` and `ports` sections. The example policy contains a single rule, which matches traffic on a single port to any destination in `10.0.0.0/24`.
|
||||||
|
|
||||||
So, the example NetworkPolicy:
|
So, the example NetworkPolicy:
|
||||||
|
|
||||||
@@ -215,12 +215,13 @@ You must be using a {{< glossary_tooltip text="CNI" term_id="cni" >}} plugin tha
|
|||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
- See the [Declare Network Policy](/docs/tasks/administer-cluster/declare-network-policy/)
|
- See the [Declare Network Policy](/docs/tasks/administer-cluster/declare-network-policy/)
|
||||||
walkthrough for further examples.
|
walkthrough for further examples.
|
||||||
- See more [recipes](https://github.com/ahmetb/kubernetes-network-policy-recipes) for common scenarios enabled by the NetworkPolicy resource.
|
- See more [recipes](https://github.com/ahmetb/kubernetes-network-policy-recipes) for common scenarios enabled by the NetworkPolicy resource.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
@@ -8,12 +8,12 @@ feature:
|
|||||||
description: >
|
description: >
|
||||||
Routing of service traffic based upon cluster topology.
|
Routing of service traffic based upon cluster topology.
|
||||||
|
|
||||||
content_template: templates/concept
|
content_type: concept
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
{{% capture overview %}}
|
<!-- overview -->
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.17" state="alpha" >}}
|
{{< feature-state for_k8s_version="v1.17" state="alpha" >}}
|
||||||
|
|
||||||
@@ -22,9 +22,9 @@ topology of the cluster. For example, a service can specify that traffic be
|
|||||||
preferentially routed to endpoints that are on the same Node as the client, or
|
preferentially routed to endpoints that are on the same Node as the client, or
|
||||||
in the same availability zone.
|
in the same availability zone.
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture body %}}
|
|
||||||
|
<!-- body -->
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
@@ -192,11 +192,12 @@ spec:
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
|
||||||
* Read about [enabling Service Topology](/docs/tasks/administer-cluster/enabling-service-topology)
|
* Read about [enabling Service Topology](/docs/tasks/administer-cluster/enabling-service-topology)
|
||||||
* Read [Connecting Applications with Services](/docs/concepts/services-networking/connect-applications-service/)
|
* Read [Connecting Applications with Services](/docs/concepts/services-networking/connect-applications-service/)
|
||||||
|
|
||||||
{{% /capture %}}
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user