SSH in GKE Kubernetes-Cluster?

SSH in GKE Kubernetes-Cluster?

Ich habe einen GKE Kubernetes-Cluster, den ich debuggen möchte.

Ist es möglich, einen Container innerhalb des Clusters zu starten, indem ich z. B. ein ubuntuImage verwende und mich mit vollständigen Berechtigungen per SSH darauf einlogge, sodass ich darin Software installieren aptund verschiedene Debugging-Befehle ausführen kann?

Antwort1

Zunächst einmal ist es möglich, einen podeinzelnen Container bereitzustellen, der aus ubuntueinem Namespace oder sogar einem Knoten als Ziel besteht.

Anstatt SSH für die Verbindung zu verwenden (was durch eine umfangreiche Kombination aus Verwendung von LoadBalanceroder Bereitstellung von möglich ist NodePort), ist es einfacher, das kubectlTool zu verwenden.

Wenn Sie es verwenden, Cloud Shellist es bereits installiert, oder wenn Sie einen lokalen Laptop verwenden, müssen Sie es mit dem gcloudTool installieren.

Ich würde vorschlagen, mit der folgenden Syntax direkt eine Verbindung zum Container herzustellen:

# Run bash on Ubuntu container
kubectl exec -it ubuntu -- bash

# General syntax
kubectl -n {namespace} exec -it {pod-name} -- {command}

Der erste Befehl geht davon aus, dass der Containername lautet ubuntuund sich im aktuellen Namespace befindet. Der zweite Befehl gibt das allgemeine Format an.

Beispiel ubuntueiner Pod-Definition:

apiVersion: v1
kind: Pod
metadata:
  name: ubuntu
  labels:
    app: ubuntu
spec:
  containers:
  - image: ubuntu
    command:
      - "sleep"
      - "604800"
    imagePullPolicy: IfNotPresent
    name: ubuntu
  restartPolicy: Always

Sie können ein hinzufügen namespaceoder sicherstellen, dass Sie den richtigen Kontext haben, bevor Sie ihn anwenden. So etwas wie:

kubectl apply -f path/to/yaml/file

verwandte Informationen