Skip to content

Commit e277d03

Browse files
authored
Merge pull request #26192 from flo-oss/pod_overview_german
Add content/de/docs/concepts/workloads/pods/_index.md
2 parents d5c73ab + 363545e commit e277d03

File tree

1 file changed

+369
-0
lines changed
  • content/de/docs/concepts/workloads/pods

1 file changed

+369
-0
lines changed
Lines changed: 369 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,369 @@
1+
---
2+
title: Pods
3+
content_type: concept
4+
weight: 10
5+
no_list: true
6+
card:
7+
name: concepts
8+
weight: 60
9+
---
10+
11+
<!-- overview -->
12+
13+
_Pods_ sind die kleinsten einsetzbaren Einheiten, die in Kubernetes
14+
erstellt und verwaltet werden können.
15+
16+
Ein _Pod_ (übersetzt Gruppe/Schote, wie z. B. eine Gruppe von Walen oder eine
17+
Erbsenschote) ist eine Gruppe von einem oder mehreren
18+
{{< glossary_tooltip text="Containern" term_id="container" >}} mit gemeinsam
19+
genutzten Speicher- und Netzwerkressourcen und einer Spezifikation für die
20+
Ausführung der Container. Die Ressourcen eines Pods befinden sich immer auf dem
21+
gleichen (virtuellen) Server, werden gemeinsam geplant und in einem
22+
gemeinsamen Kontext ausgeführt. Ein Pod modelliert einen anwendungsspezifischen
23+
"logischen Server": Er enthält eine oder mehrere containerisierte Anwendungen,
24+
die relativ stark voneinander abhängen.
25+
In Nicht-Cloud-Kontexten sind Anwendungen, die auf
26+
demselben physischen oder virtuellen Server ausgeführt werden, vergleichbar zu
27+
Cloud-Anwendungen, die auf demselben logischen Server ausgeführt werden.
28+
29+
Ein Pod kann neben Anwendungs-Containern auch sogenannte
30+
[Initialisierungs-Container](/docs/concepts/workloads/pods/init-containers/)
31+
enthalten, die beim Starten des Pods ausgeführt werden.
32+
Es können auch
33+
kurzlebige/[ephemere Container](/docs/concepts/workloads/pods/ephemeral-containers/)
34+
zum Debuggen gestartet werden, wenn dies der Cluster anbietet.
35+
36+
<!-- body -->
37+
38+
## Was ist ein Pod?
39+
40+
{{< note >}}
41+
Obwohl Kubernetes abgesehen von [Docker](https://www.docker.com/) auch andere
42+
{{<glossary_tooltip text="Container-Laufzeitumgebungen"
43+
term_id="container-runtime">}} unterstützt, ist Docker am bekanntesten und
44+
es ist hilfreich, Pods mit der Terminologie von Docker zu beschreiben.
45+
{{< /note >}}
46+
47+
Der gemeinsame Kontext eines Pods besteht aus einer Reihe von Linux-Namespaces,
48+
Cgroups und möglicherweise anderen Aspekten der Isolation, also die gleichen
49+
Dinge, die einen Dockercontainer isolieren. Innerhalb des Kontexts eines Pods
50+
können die einzelnen Anwendungen weitere Unterisolierungen haben.
51+
52+
Im Sinne von Docker-Konzepten ähnelt ein Pod einer Gruppe von Docker-Containern,
53+
die gemeinsame Namespaces und Dateisystem-Volumes nutzen.
54+
55+
## Pods verwenden
56+
57+
Normalerweise müssen keine Pods erzeugt werden, auch keine Singleton-Pods.
58+
Stattdessen werden sie mit Workload-Ressourcen wie {{<glossary_tooltip
59+
text="Deployment" term_id="deployment">}} oder {{<glossary_tooltip
60+
text="Job" term_id="job">}} erzeugt. Für Pods, die von einem Systemzustand
61+
abhängen, ist die Nutzung von {{<glossary_tooltip text="StatefulSet"
62+
term_id="statefulset">}}-Ressourcen zu erwägen.
63+
64+
Pods in einem Kubernetes-Cluster werden hauptsächlich auf zwei Arten verwendet:
65+
66+
* **Pods, die einen einzelnen Container ausführen**. Das
67+
"Ein-Container-per-Pod"-Modell ist der häufigste Kubernetes-Anwendungsfall. In
68+
diesem Fall kannst du dir einen einen Pod als einen Behälter vorstellen, der einen
69+
einzelnen Container enthält; Kubernetes verwaltet die Pods anstatt die
70+
Container direkt zu verwalten.
71+
* **Pods, in denen mehrere Container ausgeführt werden, die zusammenarbeiten
72+
müssen**. Wenn eine Softwareanwendung aus co-lokaliserten Containern besteht,
73+
die sich gemeinsame Ressourcen teilen und stark voneinander abhängen, kann ein
74+
Pod die Container verkapseln.
75+
Diese Container bilden eine einzelne zusammenhängende
76+
Serviceeinheit, z. B. ein Container, der Daten in einem gemeinsam genutzten
77+
Volume öffentlich verfügbar macht, während ein separater _Sidecar_-Container
78+
die Daten aktualisiert. Der Pod fasst die Container, die Speicherressourcen
79+
und eine kurzlebiges Netzwerk-Identität als eine Einheit zusammen.
80+
81+
{{< note >}}
82+
Das Gruppieren mehrerer gemeinsam lokalisierter und gemeinsam verwalteter
83+
Container in einem einzigen Pod ist ein relativ fortgeschrittener
84+
Anwendungsfall. Du solltest diese Architektur nur in bestimmten Fällen
85+
verwenden, wenn deine Container stark voneinander abhängen.
86+
{{< /note >}}
87+
88+
Jeder Pod sollte eine einzelne Instanz einer gegebenen Anwendung ausführen. Wenn
89+
du deine Anwendung horizontal skalieren willst (um mehr Instanzen auszuführen
90+
und dadurch mehr Gesamtressourcen bereitstellen), solltest du mehrere Pods
91+
verwenden, einen für jede Instanz.
92+
In Kubernetes wird dies typischerweise als Replikation bezeichnet.
93+
Replizierte Pods werden normalerweise als eine Gruppe durch eine
94+
Workload-Ressource und deren
95+
{{<glossary_tooltip text="Controller" term_id="controller">}} erstellt
96+
und verwaltet.
97+
98+
Der Abschnitt [Pods und Controller](#pods-und-controller) beschreibt, wie
99+
Kubernetes Workload-Ressourcen und deren Controller verwendet, um Anwendungen
100+
zu skalieren und zu heilen.
101+
102+
### Wie Pods mehrere Container verwalten
103+
104+
Pods unterstützen mehrere kooperierende Prozesse (als Container), die eine
105+
zusammenhängende Serviceeinheit bilden. Kubernetes plant und stellt automatisch
106+
sicher, dass sich die Container in einem Pod auf demselben physischen oder
107+
virtuellen Server im Cluster befinden. Die Container können Ressourcen und
108+
Abhängigkeiten gemeinsam nutzen, miteinander kommunizieren und
109+
ferner koordinieren wann und wie sie beendet werden.
110+
111+
Zum Beispiel könntest du einen Container haben, der als Webserver für Dateien in
112+
einem gemeinsamen Volume arbeitet. Und ein separater "Sidecar" -Container
113+
aktualisiert die Daten von einer externen Datenquelle, siehe folgenden
114+
Abbildung:
115+
116+
{{< figure src="/images/docs/pod.svg" alt="Pod-Beispieldiagramm" width="50%" >}}
117+
118+
Einige Pods haben sowohl {{<glossary_tooltip text="Initialisierungs-Container"
119+
term_id="init-container">}} als auch {{<glossary_tooltip
120+
text="Anwendungs-Container" term_id="app-container">}}.
121+
Initialisierungs-Container werden gestartet und beendet bevor die
122+
Anwendungs-Container gestartet werden.
123+
124+
Pods stellen standardmäßig zwei Arten von gemeinsam Ressourcen für die
125+
enthaltenen Container bereit:
126+
[Netzwerk](#pod-netzwerk) und [Speicher](#datenspeicherung-in-pods).
127+
128+
129+
## Mit Pods arbeiten
130+
131+
Du wirst selten einzelne Pods direkt in Kubernetes erstellen, selbst
132+
Singleton-Pods. Das liegt daran, dass Pods als relativ kurzlebige
133+
Einweg-Einheiten konzipiert sind. Wann Ein Pod erstellt wird (entweder direkt
134+
von Ihnen oder indirekt von einem
135+
{{<glossary_tooltip text="Controller" term_id="controller">}}), wird die
136+
Ausführung auf einem {{<glossary_tooltip term_id="node">}} in Ihrem Cluster
137+
geplant. Der Pod bleibt auf diesem (virtuellen) Server, bis entweder der Pod die
138+
Ausführung beendet hat, das Pod-Objekt gelöscht wird, der Pod aufgrund
139+
mangelnder Ressourcen *evakuiert* wird oder oder der Node ausfällt.
140+
141+
{{< note >}}
142+
Das Neustarten eines Containers in einem Pod sollte nicht mit dem Neustarten
143+
eines Pods verwechselt werden. Ein Pod ist kein Prozess, sondern eine Umgebung
144+
zur Ausführung von Containern. Ein Pod bleibt bestehen bis er gelöscht wird.
145+
{{< /note >}}
146+
147+
Stelle beim Erstellen des Manifests für ein Pod-Objekt sicher, dass der
148+
angegebene Name ein gültiger
149+
[DNS-Subdomain-Name](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names)
150+
ist.
151+
152+
### Pods und Controller
153+
154+
Mit Workload-Ressourcen kannst du mehrere Pods erstellen und verwalten. Ein
155+
Controller für die Ressource kümmert sich um Replikation, Roll-Out sowie
156+
automatische Wiederherstellung im Fall von versagenden Pods. Wenn beispielsweise ein Node
157+
ausfällt, bemerkt ein Controller, dass die Pods auf dem Node nicht mehr laufen
158+
und plant die Ausführung eines Ersatzpods auf einem funktionierenden Node.
159+
Hier sind einige Beispiele für Workload-Ressourcen, die einen oder mehrere Pods
160+
verwalten:
161+
162+
* {{< glossary_tooltip text="Deployment" term_id="deployment" >}}
163+
* {{< glossary_tooltip text="StatefulSet" term_id="statefulset" >}}
164+
* {{< glossary_tooltip text="DaemonSet" term_id="daemonset" >}}
165+
166+
### Pod Vorlagen
167+
168+
Controller für
169+
{{<glossary_tooltip text="Workload" term_id="workload">}}-Ressourcen
170+
erstellen Pods von einer _Pod Vorlage_ und verwalten diese Pods für dich.
171+
172+
Pod Vorlagen sind Spezifikationen zum Erstellen von Pods und sind in
173+
Workload-Ressourcen enthalten wie z. B.
174+
[Deployments](/docs/concepts/workloads/controllers/deployment/),
175+
[Jobs](/docs/concepts/workloads/controllers/job/), and
176+
[DaemonSets](/docs/concepts/workloads/controllers/daemonset/).
177+
178+
Jeder Controller für eine Workload-Ressource verwendet die Pod Vorlage innerhalb
179+
des Workload-Objektes, um Pods zu erzeugen. Die Pod Vorlage ist Teil des
180+
gewünschten Zustands der Workload-Ressource, mit der du deine Anwendung
181+
ausgeführt hast.
182+
183+
Das folgende Beispiel ist ein Manifest für einen einfachen Job mit einer
184+
`Vorlage`, die einen Container startet. Der Container in diesem Pod druckt
185+
eine Nachricht und pausiert dann.
186+
187+
```yaml
188+
apiVersion: batch/v1
189+
kind: Job
190+
metadata:
191+
name: hello
192+
spec:
193+
template:
194+
# Dies is the Pod Vorlage
195+
spec:
196+
containers:
197+
- name: hello
198+
image: busybox
199+
command: ['sh', '-c', 'echo "Hello, Kubernetes!" && sleep 3600']
200+
restartPolicy: OnFailure
201+
# Die Pod Vorlage endet hier
202+
```
203+
Das Ändern der Pod Vorlage oder der Wechsel zu einer neuen Pod Vorlage hat keine
204+
direkten Auswirkungen auf bereits existierende Pods. Wenn du die Pod Vorlage für
205+
eine Workload-Ressource änderst, dann muss diese Ressource die Ersatz-Pods
206+
erstellen, welche die aktualisierte Vorlage verwenden.
207+
208+
Beispielsweise stellt der StatefulSet-Controller sicher, dass für jedes
209+
StatefulSet-Objekt die ausgeführten Pods mit der aktueller Pod Vorlage
210+
übereinstimmen. Wenn du das StatefulSet bearbeitest und die Vorlage änderst,
211+
beginnt das StatefulSet mit der Erstellung neuer Pods basierend auf der
212+
aktualisierten Vorlage. Schließlich werden alle alten Pods durch neue Pods
213+
ersetzt, und das Update ist abgeschlossen.
214+
215+
Jede Workload-Ressource implementiert eigenen Regeln für die Umsetzung von
216+
Änderungen der Pod Vorlage. Wenn du mehr über StatefulSet erfahren möchtest,
217+
dann lese die Seite
218+
[Update-Strategien](/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets)
219+
im Tutorial StatefulSet Basics.
220+
221+
222+
Auf Nodes beobachtet oder verwaltet das
223+
{{< glossary_tooltip term_id="kubelet" text="Kubelet" >}}
224+
nicht direkt die Details zu Pod Vorlagen und Updates. Diese Details sind
225+
abstrahiert. Die Abstraktion und Trennung von Aufgaben vereinfacht die
226+
Systemsemantik und ermöglicht so das Verhalten des Clusters zu ändern ohne
227+
vorhandenen Code zu ändern.
228+
229+
## Pod Update und Austausch
230+
231+
Wie im vorherigen Abschnitt erwähnt, erstellt der Controller neue Pods basierend
232+
auf der aktualisierten Vorlage, wenn die Pod Vorlage für eine Workload-Ressource
233+
geändert wird anstatt die vorhandenen Pods zu aktualisieren oder zu patchen.
234+
235+
Kubernetes hindert dich nicht daran, Pods direkt zu verwalten. Es ist möglich,
236+
einige Felder eines laufenden Pods zu aktualisieren. Allerdings haben
237+
Pod-Aktualisierungsvorgänge wie zum Beispiel
238+
[`patch`](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#patch-pod-v1-core),
239+
und
240+
[`replace`](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#replace-pod-v1-core)
241+
einige Einschränkungen:
242+
243+
- Die meisten Metadaten zu einem Pod können nicht verändert werden. Zum Beispiel kannst
244+
du nicht die Felder `namespace`, `name`, `uid`, oder `creationTimestamp`
245+
ändern. Das `generation`-Feld muss eindeutig sein. Es werden nur Aktualisierungen
246+
akzeptiert, die den Wert des Feldes inkrementieren.
247+
- Wenn das Feld `metadata.deletionTimestamp` gesetzt ist, kann kein neuer
248+
Eintrag zur Liste `metadata.finalizers` hinzugefügt werden.
249+
- Pod-Updates dürfen keine Felder ändern, die Ausnahmen sind
250+
`spec.containers[*].image`,
251+
`spec.initContainers[*].image`,` spec.activeDeadlineSeconds` oder
252+
`spec.tolerations`. Für `spec.tolerations` kannnst du nur neue Einträge
253+
hinzufügen.
254+
- Für `spec.activeDeadlineSeconds` sind nur zwei Änderungen erlaubt:
255+
256+
1. ungesetztes Feld in eine positive Zahl
257+
1. positive Zahl in eine kleinere positive Zahl, die nicht negativ ist
258+
259+
## Gemeinsame Nutzung von Ressourcen und Kommunikation
260+
261+
Pods ermöglichen den Datenaustausch und die Kommunikation zwischen den
262+
Containern, die im Pod enthalten sind.
263+
264+
### Datenspeicherung in Pods
265+
266+
Ein Pod kann eine Reihe von gemeinsam genutzten Speicher-
267+
{{<glossary_tooltip text="Volumes" term_id="volume">}} spezifizieren. Alle
268+
Container im Pod können auf die gemeinsamen Volumes zugreifen und dadurch Daten
269+
austauschen. Volumes ermöglichen auch, dass Daten ohne Verlust gespeichert
270+
werden, falls einer der Container neu gestartet werden muss.
271+
Im Kapitel [Datenspeicherung](/docs/concepts/storage/) findest du weitere
272+
Informationen, wie Kubernetes gemeinsam genutzten Speicher implementiert und
273+
Pods zur Verfügung stellt.
274+
275+
### Pod-Netzwerk
276+
277+
Jedem Pod wird für jede Adressenfamilie eine eindeutige IP-Adresse zugewiesen.
278+
Jeder Container in einem Pod nutzt den gemeinsamen Netzwerk-Namespace,
279+
einschließlich der IP-Adresse und der Ports. In einem Pod (und **nur** dann)
280+
können die Container, die zum Pod gehören, über `localhost` miteinander
281+
kommunizieren. Wenn Container in einem Pod mit Entitäten *außerhalb des Pods*
282+
kommunizieren, müssen sie koordinieren, wie die gemeinsam genutzten
283+
Netzwerkressourcen (z. B. Ports) verwenden werden. Innerhalb eines Pods teilen
284+
sich Container eine IP-Adresse und eine Reihe von Ports und können sich
285+
gegenseitig über `localhost` finden. Die Container in einem Pod können auch die
286+
üblichen Kommunikationsverfahren zwischen Prozessen nutzen, wie z. B.
287+
SystemV-Semaphoren oder "POSIX Shared Memory". Container in verschiedenen Pods
288+
haben unterschiedliche IP-Adressen und können nicht per IPC ohne
289+
[spezielle Konfiguration](/docs/concepts/policy/pod-security-policy/)
290+
kommunizieren. Container, die mit einem Container in einem anderen Pod
291+
interagieren möchten, müssen IP Netzwerke verwenden.
292+
293+
Für die Container innerhalb eines Pods stimmt der "hostname" mit dem
294+
konfigurierten `Namen` des Pods überein. Mehr dazu im Kapitel
295+
[Netzwerke](/docs/concepts/cluster-administration/networking/).
296+
297+
## Privilegierter Modus für Container
298+
299+
Jeder Container in einem Pod kann den privilegierten Modus aktivieren, indem
300+
das Flag `privileged` im
301+
[Sicherheitskontext](/docs/tasks/configure-pod-container/security-context/)
302+
der Container-Spezifikation verwendet wird.
303+
Dies ist nützlich für Container, die Verwaltungsfunktionen des Betriebssystems
304+
verwenden möchten, z. B. das Manipulieren des Netzwerk-Stacks oder den Zugriff
305+
auf Hardware. Prozesse innerhalb eines privilegierten Containers erhalten fast
306+
die gleichen Rechte wie sie Prozessen außerhalb eines Containers zur Verfügung
307+
stehen.
308+
309+
{{< note >}}
310+
Ihre
311+
{{<glossary_tooltip text="Container-Umgebung" term_id="container-runtime">}}
312+
muss das Konzept eines privilegierten Containers unterstützen, damit diese
313+
Einstellung relevant ist.
314+
{{< /note >}}
315+
316+
317+
## Statische Pods
318+
319+
_Statische Pods_ werden direkt vom Kubelet-Daemon auf einem bestimmten Node
320+
verwaltet ohne dass sie vom
321+
{{<glossary_tooltip text="API Server" term_id="kube-apiserver">}} überwacht
322+
werden.
323+
324+
Die meisten Pods werden von der Kontrollebene verwaltet (z. B.
325+
{{< glossary_tooltip text="Deployment" term_id="deployment" >}}). Aber für
326+
statische Pods überwacht das Kubelet jeden statischen Pod direkt (und startet
327+
ihn neu, wenn er ausfällt).
328+
329+
Statische Pods sind immer an ein {{<glossary_tooltip term_id="kubelet">}} auf
330+
einem bestimmten Node gebunden. Der Hauptanwendungsfall für statische Pods
331+
besteht darin, eine selbst gehostete Steuerebene auszuführen. Mit anderen
332+
Worten: Das Kubelet dient zur Überwachung der einzelnen
333+
[Komponenten der Kontrollebene](/docs/concepts/overview/components/#control-plane-components).
334+
335+
Das Kubelet versucht automatisch auf dem Kubernetes API-Server für jeden
336+
statischen Pod einen spiegelbildlichen Pod
337+
(im Englischen: {{<glossary_tooltip text="mirror pod" term_id="mirror-pod">}})
338+
zu erstellen.
339+
Das bedeutet, dass die auf einem Node ausgeführten Pods auf dem API-Server
340+
sichtbar sind jedoch von dort nicht gesteuert werden können.
341+
342+
## {{% heading "whatsnext" %}}
343+
344+
* Verstehe den
345+
[Lebenszyklus eines Pods](/docs/concepts/workloads/pods/pod-lifecycle/).
346+
* Erfahre mehr über [RuntimeClass](/docs/concepts/containers/runtime-class/)
347+
und wie du damit verschiedene Pods mit unterschiedlichen
348+
Container-Laufzeitumgebungen konfigurieren kannst.
349+
* Mehr zum Thema
350+
[Restriktionen für die Verteilung von Pods](/docs/concepts/workloads/pods/pod-topology-spread-constraints/).
351+
* Lese
352+
[Pod-Disruption-Budget](/docs/concepts/workloads/pods/disruptions/)
353+
und wie du es verwenden kannst, um die Verfügbarkeit von Anwendungen bei
354+
Störungen zu verwalten. Die
355+
[Pod](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#pod-v1-core)
356+
-Objektdefinition beschreibt das Objekt im Detail.
357+
* [The Distributed System Toolkit: Patterns for Composite Containers](https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns)
358+
erläutert allgemeine Layouts für Pods mit mehr als einem Container.
359+
360+
Um den Hintergrund zu verstehen, warum Kubernetes eine gemeinsame Pod-API in
361+
andere Ressourcen, wie z. B.
362+
{{< glossary_tooltip text="StatefulSets" term_id="statefulset" >}}
363+
oder {{< glossary_tooltip text="Deployments" term_id="deployment" >}} einbindet,
364+
kannst du Artikel zu früheren Technologien lesen, unter anderem:
365+
* [Aurora](https://aurora.apache.org/documentation/latest/reference/configuration/#job-schema)
366+
* [Borg](https://research.google.com/pubs/pub43438.html)
367+
* [Marathon](https://mesosphere.github.io/marathon/docs/rest-api.html)
368+
* [Omega](https://research.google/pubs/pub41684/)
369+
* [Tupperware](https://engineering.fb.com/data-center-engineering/tupperware/).

0 commit comments

Comments
 (0)