Skip to content

This is a simple and easy way for you to execute commands inside a k8s pod, watch logs through the websocket proxy and even download current or previous logs with a specific container name.

Notifications You must be signed in to change notification settings

neverCase/k8s-exec-pod

Repository files navigation

k8s-exec-pod

This is a simple and easy way for you to execute commands inside a k8s pod, watch logs through the websocket proxy and even download current or previous logs with specific container name.

Notice

  • A terminal is not just an input field.
  • It's a complex system that provides advanced formatting and interactivity with the user, over a plain character stream.
  • Here is a classic case: if you transmit the command clear to the ssh pty, then the response you received would be "clear: command not found"
  • So we should listen and compare each character instead of inputting a full command with the \n (e.g. "pwd\n")

build server

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o exec-bin example/main.go
...
./exec-bin  -kubeconfig=$HOME/.kube/config --proxyservice=0.0.0.0:9090
  • if you run the exec binary file inside a k8s pod, just use the command below:
./exec-bin --proxyservice=0.0.0.0:9090

run websocket_client for testing

log mode

go run websocket_client.go --addr=host:port --mode=log -alsologtostderr=true -v=4

ssh mode

go run websocket_client.go --addr=host:port --mode=ssh -alsologtostderr=true -v=4

About

This is a simple and easy way for you to execute commands inside a k8s pod, watch logs through the websocket proxy and even download current or previous logs with a specific container name.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published