feat(plugins): add pvc debug container plugin (#3528)

mine
Fabian 2025-08-30 01:27:36 +02:00 committed by GitHub
parent e99c735430
commit eed0cb87ae
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 40 additions and 1 deletions

View File

@ -5,7 +5,7 @@ K9s plugins extend the tool to provide additional functionality via actions to f
Following is an example of some plugin files in this directory. Other files are not listed in this table.
| Plugin-Name | Description | Available on Views | Shortcut | Kubectl plugin, external dependencies |
|--------------------------------|-------------------------------------------------------------------------------------------|-------------------------------------|-----------|---------------------------------------------------------------------------------------|
| ------------------------------ | ----------------------------------------------------------------------------------------- | ----------------------------------- | --------- | ------------------------------------------------------------------------------------- |
| ai-incident-investigation.yaml | Run AI investigation on application issues to find the root cause in seconds | all | Shift-h/o | [HolmesGPT](https://github.com/robusta-dev/holmesgpt) |
| argocd.yaml | Perform argocd operation quickly | applications | Shift-r | [ArgoCD](https://argo-cd.readthedocs.io/en/stable/getting_started/) |
| debug-container.yaml | Add [ephemeral debug container](1)<br>([nicolaka/netshoot](2)) | containers | Shift-d | |
@ -21,6 +21,7 @@ Following is an example of some plugin files in this directory. Other files are
| log-jq.yaml | View resource logs using jq | pods | Ctrl-j | kubectl-plugins/kubectl-jq |
| log-bunyan.yaml | View pods, service, deployment logs using bunyan | pods, service, deployment | Ctrl-l | [Bunyan](https://www.npmjs.com/package/bunyan) |
| log-full.yaml | get full logs from pod/container | pods/containers | Ctrl-l | |
| pvc-debug-container.yaml | Add ephemeral debug container with pvc mounted | pods | s | kubectl |
| resource-recommendations.yaml | View recommendations for CPU/Memory requests based on historical data | deployments/daemonsets/statefulsets | Shift-k | [Robusta KRR](https://github.com/robusta-dev/krr) |
| szero.yaml | Temporarily scale down/up all deployments, statefulsets, and daemonsets | namespaces | Shift-d/u | [szero](https://github.com/jadolg/szero) |
| trace-dns.yaml | Trace DNS resolution using Inspektor Gadget (4) | containers/pods/nodes | Shift-d | |

View File

@ -0,0 +1,38 @@
plugins:
pvc-shell:
shortCut: s
description: "Spawn an Ubuntu shell pod with this PVC mounted"
scopes:
- pvc
command: sh
background: false
args:
- -c
- |
echo "Starting a shell pod with PVC $NAME mounted at /mnt/data"
cat <<EOF | kubectl --kubeconfig $KUBECONFIG apply -f > /dev/null 2>&1 -
apiVersion: v1
kind: Pod
metadata:
name: pvc-shell
namespace: $NAMESPACE
spec:
restartPolicy: Never
containers:
- name: shell
image: ubuntu:latest
command: ["bash"]
stdin: true
tty: true
volumeMounts:
- name: vol
mountPath: /mnt/data
volumes:
- name: vol
persistentVolumeClaim:
claimName: $NAME
EOF
echo "Waiting for pod to be ready..."
kubectl --kubeconfig $KUBECONFIG -n $NAMESPACE wait --for=condition=Ready pod/pvc-shell > /dev/null 2>&1
kubectl --kubeconfig $KUBECONFIG -n $NAMESPACE exec -it pvc-shell -- bash
kubectl --kubeconfig $KUBECONFIG -n $NAMESPACE delete pod pvc-shell --grace-period=0 --force=true > /dev/null 2>&1