astefanutti / kubebox Goto Github PK
View Code? Open in Web Editor NEW⎈❏ Terminal and Web console for Kubernetes
Home Page: http://astefanutti.github.io/kubebox
License: MIT License
⎈❏ Terminal and Web console for Kubernetes
Home Page: http://astefanutti.github.io/kubebox
License: MIT License
It tries to connect to server via it's internal IPs which is not available on remote clusters
I'm using 4.0 on MacOS and am unable to view resource usage. I'm met with "Resources usage metrics unavailable". There is nothing in the debug to let me know what might be going on. I am able to view resources on one of my clusters, but not any of the other ones.
Generally Kubebox should simply work the way kubectl works. I've copied binary to kubernetes master node and ran it from there and it's asking me for credentials while kubectl works fluently.
I believe even running kubectl
under the hood won't hurt.
Hello
Great tool. The only thing I miss is to be able to switch contexts in a way similar to how namespaces are selected. In README.md it is mentioned that there is interactive switching of contexts but I haven't found out how to do this.
It's just that I'm tired of constantly entering "kubectl config use-context" when I have to switch between clusters. I planned to write myself a script written in "dialog" to present a list of contexts and select one of them but then I found out your tool. It's great but I still miss this function in it.
If possible please add it.
Kind regards
Tom
how do i change my display backhground to be black ..it currently is white ..thnk you
If I run kubebox in kubernetes as a service, when web-ssh into a pod, it gives an error:
/bin/sh: 1: Syntax error: Missing '))'
command terminated with non-zero exit code: Error executing in Docker Container: 2
Disconnected
Type Ctrl-C to close
I'm not pretty sure if it's caused by this commit:
b795966
When running kubebox in a container and displaying on iTerm on apple, it is not possible to scroll back in the terminal window (R-key).
iTerm doesn't pass mouse events to curses, so mouse actions scroll the local iTerm history buffer, not the terminal session. Therefore, any output longer than the height of the screen becomes inaccessible.
Pressing enter on a pending pod will exit kubebox with the following stacktrace:
TypeError: Cannot read property 'slice' of undefined
at updateStatsFromCAdvisor (/kubebox/client.js:3679:151)
at ListTable.Dashboard.pods_table.on (/kubebox/client.js:3617:21)
at ListTable.EventEmitter._emit (/kubebox/client.js:6029:20)
at ListTable.EventEmitter.emit (/kubebox/client.js:6052:12)
at ListTable.List.enterSelected (/kubebox/client.js:19641:8)
at ListTable.<anonymous> (/kubebox/client.js:19174:14)
at ListTable.EventEmitter._emit (/kubebox/client.js:6029:20)
at ListTable.EventEmitter.emit (/kubebox/client.js:6052:12)
at Program.<anonymous> (/kubebox/client.js:22728:15)
at Program.emit (events.js:160:13)
pod default/kubebox terminated (Error)
Here is what I get using kubectl get pods
NAME READY STATUS RESTARTS AGE
my-app-debug-5fb97f97fc-pjfdg 1/1 Running 2 2d
my-app-debug-7bd446cb84-zjzvl 1/1 Terminating 0 3d
However kubebox sees it as Running
:
my-app-debug-5fb97f97fc-pjfdg Running 2d 15h
my-app-debug-7bd446cb84-zjzvl Running 3d 4h
Hello!
Please add a filter to the namespace modal selection window.
Currently awfully inconvenient to choose the necessary namespace when there are more than 100...
I would be very grateful!
I was thinking of having a quick search filter in the namespaces modal. Would that work for you?
Originally posted by @astefanutti in #15 (comment)
Thanks for an incredibly useful utility. Kubebox is now part of my daily development toolkit.
One of the most useful commands is kubectl describe pod
. This command answers questions such as:
All these questions are answered with one kubectl describe pod
, and are critical to investigating the state of a kubernetes environment.
In my opinion, adding a Pod
or Info
tab to the Resources
pane would be the appropriate place to display this information. This is because kubectl describe pod
output is metadata about the pod, just as Memory
, CPU
, and Network
activity are metadata about the pod.
Currently this is the only task I need to step outside of Kubebox for. If Kubebox supported this natively all my kubernetes interactions would be supported from within the app.
Thanks!
Hello, thank you very much for this very useful tool!
When I try opening a remote shell into any of my pods I get a 403 error back. I am wondering if you know why that might be?
The error I see in kubebox
is:
Error: Failed to get resource /api/v1/namespaces/<xxx>/pods/<xxx>/exec?stdout=1&stdin=1&stderr=1&tty=1&container=main&command=%2Fbin%2Fsh&command=-c&comma │
│nd=TERM%3Dxterm+%24%28+%28type+getent+%3E+%2Fdev%2Fnull+2%3E%261+%26%26+getent+passwd+root+%7C+cut+-d%3A+-f7+2%3E%2Fdev%2Fnull%29+%7C%7C+echo+%2Fbin%2Fsh%29, status code: 403
On the other hand I am able to open a shell into the main
container using kubectl exec -it <xx> /bin/sh
.
Thanks!
Hello, how would you recommend building a standalone kubebox
binary out of source code? Assuming for example linux-x86.
Thanks!
Having multiple containers running inside a pod, I need a selection mechanism to choose the pod for logs and executing into it.
Making the default service account have cluster-admin role is a tremendous security vulnerability, it's probably a better idea to change the service account used on the deployment, and put the manifest to create the service account / cluster role / cluster role binding on the same file.
Add some fields to pods_table, as result, it looks like kubectl get pod -owide.
'NAME', 'STATUS', 'READY', 'RESTARTS', 'AGE', 'IP', 'NODE'.
It would be interesting to be able to deploy Kubebox on Mac OS via HomeBrew.
Currently you need to use enter to select an item from the pods list.
I feel like it would be intuitive if space was also an option.
Any thoughts?
I just come to see this tool today and I have to say that, Damn, this is awesome. My thousand thanks and great for all of your efforts to building this.
And it would be great if it also have delete pod features like in vim ( dd )? Just my opinion.
Again many thanks guys. I love this.!!!
I updated to the last kubebox 0.6.0 version.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic
After I start the kubebox it crashes nearly in 10 seconds with the error:
Segmentation fault (core dumped)
It makes the soft unusable.
The strace log:
sudo strace -p 11043
strace: Process 11043 attached
strace: [ Process PID=11043 runs in x32 mode. ]
strace: [ Process PID=11043 runs in 64 bit mode. ]
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\207\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8) = 0
futex(0x7f9e56cb9a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\217\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 72, NULL, 8) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\213\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\231\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 77, NULL, 8) = 0
futex(0x7f9e574bca04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\271\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\270\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\274\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\264\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\246\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 78, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\247\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\207\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\217\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\213\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\231\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8) = 0
futex(0x7f9e564b6a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e57cbfa04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e56cb9a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e574bca04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e564b6a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e57cbfa04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
getpid() = 11043
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\271\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8) = 0
futex(0x7f9e56cb9a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\270\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\274\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 77, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\264\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8) = 0
futex(0x7f9e574bca04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\246\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 72, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\247\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\207\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\217\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\213\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\231\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\271\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\270\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\274\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 77, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\264\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\246\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\247\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 78, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\207\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\217\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\213\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\231\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\271\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\270\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\274\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\264\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 77, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\246\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8) = 0
futex(0x7f9e564b6a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e57cbfa04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e56cb9a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e574bca04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e564b6a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e57cbfa04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
getpid() = 11043
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\247\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8) = 0
mmap(NULL, 290816, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9e57d94000
futex(0x7f9e56cb9a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\207\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 69, NULL, 8) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\217\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\213\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\231\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\271\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\270\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\274\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8) = 0
futex(0x7f9e574bca04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\264\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\246\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\247\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\207\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 77, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\217\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 77, NULL, 8) = 0
futex(0x7f9e564b6a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\213\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\231\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\271\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8) = 0
futex(0x7f9e57cbfa04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\270\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8) = 0
futex(0x7f9e56cb9a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\274\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8) = 0
futex(0x7f9e574bca04, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\264\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 72, NULL, 8) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
futex(0x7f9e564b6a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\246\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 70, NULL, 8) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\247\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\207\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\217\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 77, NULL, 8) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\213\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 66, NULL, 8) = 0
write(8, "\1\0\0\0\0\0\0\0", 8) = 8
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} ---
+++ killed by SIGSEGV (core dumped) +++
I am trying to use kubebox with AWS EKS. I updated to 0.6.0 which supports the exec auth. I have been unsuccessful in connecting due to the following error:
spawn aws-iam-authenticator ENOENT
Pasting in a token doesn't seem to work either.
Any ideas? What am I missing?
when I run kubebox in a kubernetes cluster without certificate,a error was raised:
[eval]:367
if (this.user.certificatePath) {
^
TypeError: Cannot read property 'certificatePath' of undefined
at Context.getMasterApi ([eval]:367:19)
at new Kubebox ([eval]:1218:55)
at Object.1../lib/config/context ([eval]:31:1)
at s ([eval]:1:254)
at e ([eval]:1:425)
at [eval]:1:443
at Script.runInThisContext (vm.js:65:33)
at Object.runInThisContext (vm.js:199:38)
at Object.<anonymous> ([eval]-wrapper:6:22)
at Module._compile (module.js:660:30)
cluster ip, load balancer, endpoint ?
I want specific users to access specific namespaces. How should I set them up?
When I try to run kubebox (on the Mac), I get the following error:
ReferenceError: os is not defined
at new OpenIdConnect (/kubebox/client.js:186:7)
at Client.set master_api [as master_api] (/kubebox/client.js:438:30)
at new Kubebox (/kubebox/client.js:1705:27)
at Object.1../lib/config/context (/kubebox/client.js:42:1)
at o (/kubebox/client.js:1:327)
at r (/kubebox/client.js:1:493)
at Object.<anonymous> (/kubebox/client.js:1:522)
at Module._compile (module.js:660:30)
at Object.Module._extensions..js (module.js:671:10)
at Module.load (module.js:573:32)
The same happens when I use the docker image.
Add ability to select logs for copy selected text.
can I jump a namespaces quickly?
Issue with running kubebox on CentOS 7 64 bits - `GLIBCXX_3.4.20' not found (required by kubebox)
$ kubebox
kubebox: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by kubebox)
$ ll /lib64/libstdc++.so.6
lrwxrwxrwx. 1 root root 19 Aug 22 17:30 /lib64/libstdc++.so.6 -> libstdc++.so.6.0.19
$ strings /lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH
$ cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
It will be cool if there is some help dialog with commands and hotkeys by pressing F1 (for example).
Kubebox always wants me to enter login information, whereas it just should use the defined one.
To login into our IBM cloud environment, we need to export the KUBECONFIG environment variable pointing to a configuration which includes the following:
apiVersion: v1
clusters:
- cluster:
certificate-authority: ...pem
The .pem file is in the same folder as the kubeconfig file. I'm guessing somehow it's not read and thus I cannot pass the login screen.
Should this work out of the box? kubectl works without any problems.
This might be related to: #7
I have not been able to login using kubebox when my terminal session is logged into AWS using the aws authenticator.
1, When I select one pod from the poslist table, the logs windows show the real log content and change the title from "Logs" to "Logs [docker-name]".
2, But in the whole web page, I don't kown which namespace I have selected.
3, So I want to say, when I select some namespace from the namespace selecting windows.
the podlist table display all pods under the namespace, in the mean time,
I want the podlist table title change from "Pods" to "Pods [selected namespace]".
4, I have studied some code from the project , and found some code like this:
resources.setLabel(Resources {grey-fg}[${container_selected}]{/grey-fg} {red-fg}TERMINATING{/red-fg}
);
pod_log.setLabel(Logs {grey-fg}[${container_selected}]{/grey-fg} {red-fg}TERMINATING{/red-fg}
);
5, So where should I place some code like
pods_table.setLabel(Pods {grey-fg}[${current_namespace}]{/grey-fg}
);
5, So where should I place some code like
pods_table.setLabel(Pods {grey-fg}[${current_namespace}]{/grey-fg}
);
kubebox obviously is a great k8s tool for our small team.
But when I setup an environment to running kubebox,
I found in the logs terminal Chinese words all changed to ?????????.
The shell windows is OK.
would you please when you are free, task a demo test and debug where is the problem.
the demo test files list:
FROM docker.io/alpine:3.7
COPY test.log /
COPY run.sh /
ENV LANG="C.UTF-8"
ENTRYPOINT ["/run.sh"]
#!/bin/sh
tail -f -n90 /test.log
在Docker容器bash中输入中文
在Docker容器bash中输入中文
docker alpine版本服务中显示中文
docker alpine版本服务中显示中文
docker alpine版本服务中显示中文
解决docker容器不支持中文的问题
In browser, log terminal showing:
??Docker????bash?????????? │
│ │
│??Docker????bash?????????? │
│ │
│docker alpine?????????????????? │
│ │
│docker alpine?????????????????? │
│ │
│docker alpine?????????????????? │
│ │
│????docker???????????????????? │
In API direct request show normal result - https://kubebox.xxxx.com/master/api/v1/namespaces/namespace-dev/pods/alpine-cn-5c8584bd96-6klvl/log?follow=true&tailLines=10000×tamps=true&container=alpine-cn&sinceTime=2019-04-18T08%3A21%3A19.334100106Z
:
2019-04-18T08:21:19.333943583Z 在Docker容器bash中输入中文
2019-04-18T08:21:19.333950662Z
2019-04-18T08:21:19.333954261Z 在Docker容器bash中输入中文
2019-04-18T08:21:19.333958322Z
2019-04-18T08:21:19.333961629Z docker alpine版本服务中显示中文
2019-04-18T08:21:19.333965169Z
2019-04-18T08:21:19.333968374Z docker alpine版本服务中显示中文
2019-04-18T08:21:19.333971711Z
2019-04-18T08:21:19.333974847Z docker alpine版本服务中显示中文
2019-04-18T08:21:19.333978286Z
2019-04-18T08:21:19.333981377Z 解决docker容器不支持中文的问题
Hi, i got this error when i try to have metrics.
The error returned from the API server with last version of kubernetes:
Error: Failed to get resource /api/v1/nodes/<node-name>:4194/proxy/api/v1.2/docker/<dockerid>, status code: 503
Everything else works.
Do you know why ?
Currently kubebox does not support the cmd-args
/ cmd-path
fields used with auth-provider in order to generate a token. This is the scheme used in GKE.
It would be great to support this scheme as well.
It fails to run, see error output below:
λ kubebox-windows-v0.5.0.exe
C:\Apps\Bin\bundle.js:22988
if (!this.program.isAlt) return;
^
TypeError: Cannot read property 'isAlt' of undefined
at Screen.leave (C:\Apps\Bin\bundle.js:22988:21)
at Screen.destroy (C:\Apps\Bin\bundle.js:23090:8)
at C:\Apps\Bin\bundle.js:22895:14
at Array.forEach (<anonymous>)
at process.on.Screen._exceptionHandler (C:\Apps\Bin\bundle.js:22894:30)
at emitOne (events.js:116:13)
at process.emit (events.js:211:7)
at process._fatalException (bootstrap_node.js:391:26)
λ systeminfo
OS Name: Microsoft Windows 10 Enterprise
OS Version: 10.0.17763 N/A Build 17763
System Type: x64-based PC
I cannot log-in into a cluster if my cluster ca is in the form of certificate-authority-data
(from .kube/config ...)
- cluster:
certificate-authority-data: asdfasdfasdfasdfasfdasdfasdfasdf
Does kubebox need metrics server running ? , will it work with kube-state-metrics
PR #54 added support for exec auth, but it doesn't seem to support environment correctly.
KubeConfig from aws is of form:
user:
exec:
env:
- name: AWS_PROFILE
value: saml
But child_process.exec is expecting env to be of form {AWS_PROFILE: saml}.
Can probably submit a PR this week if I get the time to sit down.
DO kubernetes config uses an ExecCredential
.
Any advice on how i could contribute here?
users:
- name: do-sfo2-async-do-admin
user:
exec:
apiVersion: client.authentication.k8s.io/v1beta1
args:
- kubernetes
- cluster
- kubeconfig
- exec-credential
- --version=v1beta1
- --context=default
- {SOME GUID}
command: doctl
env: null
basically the result of the exec here is TLS client auth certs.
$ doctl kubernetes cluster kubeconfig exec-credential --version=v1beta1 --context=default {THE GUID FROM ABOVE}
{
"kind": "ExecCredential",
"apiVersion": "client.authentication.k8s.io/v1beta1",
"spec": {},
"status": {
"expirationTimestamp": "2019-07-28T17:43:57Z",
"clientCertificateData": "-----BEGIN CERTIFICATE-----\n*****\n-----END CERTIFICATE-----\n",
"clientKeyData": "-----BEGIN RSA PRIVATE KEY-----\n*****\n-----END RSA PRIVATE KEY-----\n"
}
}
I can query my k8s cluster using my certiticates and key :
k cluster-info
Kubernetes master is running at https://......
Grafana is running at http://......
Heapster is running at https://.....
KubeDNS is running at https://..../proxy
Kubemonitor is running at http://.....
But kubebox complains and asks me for a username/password/token.
Any workaround ?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.