Zum Inhalt

Kubernetes

Labels und Selektoren

Objekte nach Label gruppieren

kubectl get pods --selector app=APP1

Befehlsbeispiele

Pod erstellen

kubectl run nginx --image=nginx

Deployment erstellen

kubectl create deployment --image=nginx nginx

YAML generieren

Pod erstellen

kubectl run nginx --image=nginx --dry-run=client -o yaml
erzeugt folgende Ausgabe
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always

Deployment erstellen

kubectl create deployment nginx --image=nginx --replicas=4 --dry-run=client -o yaml
erzeugt folgende Ausgabe:
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 4
  selector:
    matchLabels:
      app: nginx
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}

Service erstellen

kubectl expose pod alpine -n falco  --port=6379 --name redis-service --dry-run=client -o yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    run: alpine
  name: redis-service
  namespace: falco
spec:
  ports:
  - port: 6379
    protocol: TCP
    targetPort: 6379
  selector:
    run: alpine
status:
  loadBalancer: {}

Imperativer und Deklarativer Stil

In Kubernetes können sowohl deklarative als auch imperative Methoden verwendet werden.

Imperative Beispiele

kubectl run --image=nginx nginx
kubectl create deployment --image=nginx nginx
kubectl expose deployment nginx --port 80
kubectl edit deployment nginx
kubectl scale deployment nginx --replicas=5
kubectl set image deployment nginx nginx=nginx:1.18
kubectl create -f nginx.yaml
kubectl replace -f nginx.yaml
kubectl delete -f nginx.yaml

Deklarative Beispiele

Man verwaltet direkt Dateien und nur Dateien. Änderungen an der Umgebung werden ausschließlich durch das Anwenden von Dateien vorgenommen, nicht durch eines der obigen imperativen Beispiele.

kubectl apply -f nginx.yaml

apiVersion: v1
kind: Pod

metadata:
  name: nginx-pod
  labels:
    app: nginx
    type: frontend
spec:
  containers:
  - name: nginx-1
    image: nginx:1.18