
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 ubuntu
Image verwende und mich mit vollständigen Berechtigungen per SSH darauf einlogge, sodass ich darin Software installieren apt
und verschiedene Debugging-Befehle ausführen kann?
Antwort1
Zunächst einmal ist es möglich, einen pod
einzelnen Container bereitzustellen, der aus ubuntu
einem Namespace oder sogar einem Knoten als Ziel besteht.
Anstatt SSH für die Verbindung zu verwenden (was durch eine umfangreiche Kombination aus Verwendung von LoadBalancer
oder Bereitstellung von möglich ist NodePort
), ist es einfacher, das kubectl
Tool zu verwenden.
Wenn Sie es verwenden, Cloud Shell
ist es bereits installiert, oder wenn Sie einen lokalen Laptop verwenden, müssen Sie es mit dem gcloud
Tool 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 ubuntu
und sich im aktuellen Namespace befindet. Der zweite Befehl gibt das allgemeine Format an.
Beispiel ubuntu
einer 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 namespace
oder sicherstellen, dass Sie den richtigen Kontext haben, bevor Sie ihn anwenden. So etwas wie:
kubectl apply -f path/to/yaml/file