Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
kubernetes [2025/11/26 18:41] jango [PV] |
kubernetes [2025/11/27 01:05] (aktuell) jango [Lokale Registry] |
||
|---|---|---|---|
| Zeile 394: | Zeile 394: | ||
| sudo systemctl enable --now containerd | sudo systemctl enable --now containerd | ||
| </ | </ | ||
| + | =====Node entfernen===== | ||
| + | |||
| + | <code bash> | ||
| + | # Node als "nicht verfügbar" | ||
| + | kubectl cordon ubuntu3 | ||
| + | |||
| + | # Drain markiert den Node als "nicht verfügbar" | ||
| + | kubectl drain ubuntu3 --ignore-daemonsets --delete-emptydir-data | ||
| + | |||
| + | # Re-Activate | ||
| + | kubectl uncordon ubuntu3 | ||
| + | </ | ||
| + | |||
| =====Labels===== | =====Labels===== | ||
| Zeile 644: | Zeile 657: | ||
| Bei einem Daemonset sorgt Kubernetes dafür das ein Pod per (möglichem Node) Node läuft. | Bei einem Daemonset sorgt Kubernetes dafür das ein Pod per (möglichem Node) Node läuft. | ||
| + | |||
| + | <code yaml> | ||
| + | apiVersion: apps/v1 | ||
| + | kind: DaemonSet | ||
| + | metadata: | ||
| + | name: ds-demo | ||
| + | namespace: default | ||
| + | spec: | ||
| + | selector: | ||
| + | matchLabels: | ||
| + | app: ds-demo | ||
| + | template: | ||
| + | metadata: | ||
| + | labels: | ||
| + | app: ds-demo | ||
| + | spec: | ||
| + | containers: | ||
| + | - name: pause-and-log | ||
| + | image: busybox: | ||
| + | command: [" | ||
| + | </ | ||
| + | |||
| + | ----------- | ||
| Container bauen | Container bauen | ||
| Zeile 766: | Zeile 802: | ||
| ====Persistent Volumes==== | ====Persistent Volumes==== | ||
| - | ===PV=== | + | ===NFS=== |
| - | ==NFS== | ||
| <code yaml> | <code yaml> | ||
| apiVersion: v1 | apiVersion: v1 | ||
| Zeile 790: | Zeile 825: | ||
| </ | </ | ||
| - | ==SMB== | + | Das Volume bindet man nicht direkt in Deployments ein. Dazu legt man einen PVC (Persistent volume claim) an. |
| + | |||
| + | <code yaml> | ||
| + | apiVersion: v1 | ||
| + | kind: PersistentVolumeClaim | ||
| + | metadata: | ||
| + | name: demo-pvc | ||
| + | spec: | ||
| + | accessModes: | ||
| + | - ReadWriteOnce | ||
| + | resources: | ||
| + | requests: | ||
| + | storage: 5Gi | ||
| + | storageClassName: | ||
| + | </ | ||
| + | |||
| + | PVC in einem Deployment nutzen. | ||
| + | <code yaml> | ||
| + | apiVersion: apps/v1 | ||
| + | kind: Deployment | ||
| + | metadata: | ||
| + | name: demo | ||
| + | spec: | ||
| + | replicas: 1 | ||
| + | selector: | ||
| + | matchLabels: | ||
| + | app: demo | ||
| + | template: | ||
| + | metadata: | ||
| + | labels: | ||
| + | app: demo | ||
| + | spec: | ||
| + | containers: | ||
| + | - name: nginx | ||
| + | image: nginx: | ||
| + | volumeMounts: | ||
| + | - name: data | ||
| + | mountPath: / | ||
| + | volumes: | ||
| + | - name: data | ||
| + | persistentVolumeClaim: | ||
| + | claimName: demo-pvc | ||
| + | </ | ||
| + | |||
| + | ===SMB=== | ||
| + | |||
| + | [[https:// | ||
| Secret | Secret | ||
| Zeile 853: | Zeile 934: | ||
| volumeName: pv-smb-demo | volumeName: pv-smb-demo | ||
| </ | </ | ||
| - | ===PVC=== | ||
| - | Das Volume bindet man nicht direkt in Deployments ein. Dazu legt man einen PVC (Persistent volume claim) an. | ||
| - | <code yaml> | ||
| - | apiVersion: v1 | ||
| - | kind: PersistentVolumeClaim | ||
| - | metadata: | ||
| - | name: demo-pvc | ||
| - | spec: | ||
| - | accessModes: | ||
| - | - ReadWriteOnce | ||
| - | resources: | ||
| - | requests: | ||
| - | storage: 5Gi | ||
| - | storageClassName: | ||
| - | </ | ||
| - | ===Usage=== | ||
| - | PVC in einem Deployment nutzen. | ||
| - | |||
| - | <code yaml> | ||
| - | apiVersion: apps/v1 | ||
| - | kind: Deployment | ||
| - | metadata: | ||
| - | name: demo | ||
| - | spec: | ||
| - | replicas: 1 | ||
| - | selector: | ||
| - | matchLabels: | ||
| - | app: demo | ||
| - | template: | ||
| - | metadata: | ||
| - | labels: | ||
| - | app: demo | ||
| - | spec: | ||
| - | containers: | ||
| - | - name: nginx | ||
| - | image: nginx: | ||
| - | volumeMounts: | ||
| - | - name: data | ||
| - | mountPath: / | ||
| - | volumes: | ||
| - | - name: data | ||
| - | persistentVolumeClaim: | ||
| - | claimName: demo-pvc | ||
| - | </ | ||
| ====StatefulSet==== | ====StatefulSet==== | ||
| Zeile 1001: | Zeile 1038: | ||
| Für eine kleine Testumgebung ist hostPath oft am einfachsten. Beispiel: Daten liegen dauerhaft auf dem Node unter / | Für eine kleine Testumgebung ist hostPath oft am einfachsten. Beispiel: Daten liegen dauerhaft auf dem Node unter / | ||
| + | |||
| + | <box red> | ||
| Registry (hostPath) | Registry (hostPath) | ||