etcd使用什么操作系统
What operating system etcd uses
我登录了 Kubernetes etcd pod
kubectl exec -it -n kube-system etcd-master -- /bin/sh
我不知道 OS 是什么。
ls 不起作用
sh-5.0# ls
sh: ls: command not found
猫不工作
sh-5.0# cat /etc/os-release
sh: cat: command not found
apt,无法识别 yum
sh-5.0# apt
sh: apt: command not found
sh-5.0# yum
sh: yum: command not found
我只能通过模式扩展来 cd 和列出文件
sh-5.0# cd /etc
sh-5.0# echo *
debian_version default dpkg group host.conf hostname hosts issue issue.net kubernetes network nsswitch.conf os-release passwd profile.d protocols resolv.conf rpc services skel ssl update-motd.d
sh-5.0# echo `<os-release`
PRETTY_NAME="Distroless" NAME="Debian GNU/Linux" ID="debian" VERSION_ID="9" VERSION="Debian GNU/Linux 9 (stretch)" HOME_URL="https://github.com/GoogleContainerTools/distroless" SUPPORT_URL="https://github.com/GoogleContainerTools/distroless/blob/master/README.md" BUG_REPORT_URL="https://github.com/GoogleContainerTools/distroless/issues/new"
这是什么操作系统?这里如何安装bash?
/etc/os-release
声明图像基于 Distroless
。 SUPPORT_URL 给出的解释是:
"Distroless" images contain only your application and its runtime dependencies.
They do not contain package managers, shells or any other programs you would expect to find in a standard Linux distribution.
这是使用容器的最佳做法之一,只保留绝对必要的内容。你可能会遇到很多这样的图片,有些甚至没有 sh
。此外,根文件系统是只读的and/or容器可能没有足够的权限来安装东西。
考虑到所有这些,您可能无法将 bash
或任何其他物品带入室内。根据您的实际目标,您可以:
- 尝试使用
kubectl cp
将文件从容器中复制出来(图像中需要 tar
);
- 进入容器的宿主机节点,定位宿主机上的容器文件。您也可以在主机上使用
docker cp
将 bash
二进制文件推送到 运行 容器中。
根据 PRETTY_NAME
判断,它是 Distroless (https://github.com/GoogleContainerTools/distroless)。在他们的自述文件中,您可以阅读
Who uses Distroless?
- Kubernetes, since v1.15
- ...
这可能是你的情况。
我登录了 Kubernetes etcd pod
kubectl exec -it -n kube-system etcd-master -- /bin/sh
我不知道 OS 是什么。
ls 不起作用
sh-5.0# ls
sh: ls: command not found
猫不工作
sh-5.0# cat /etc/os-release
sh: cat: command not found
apt,无法识别 yum
sh-5.0# apt
sh: apt: command not found
sh-5.0# yum
sh: yum: command not found
我只能通过模式扩展来 cd 和列出文件
sh-5.0# cd /etc
sh-5.0# echo *
debian_version default dpkg group host.conf hostname hosts issue issue.net kubernetes network nsswitch.conf os-release passwd profile.d protocols resolv.conf rpc services skel ssl update-motd.d
sh-5.0# echo `<os-release`
PRETTY_NAME="Distroless" NAME="Debian GNU/Linux" ID="debian" VERSION_ID="9" VERSION="Debian GNU/Linux 9 (stretch)" HOME_URL="https://github.com/GoogleContainerTools/distroless" SUPPORT_URL="https://github.com/GoogleContainerTools/distroless/blob/master/README.md" BUG_REPORT_URL="https://github.com/GoogleContainerTools/distroless/issues/new"
这是什么操作系统?这里如何安装bash?
/etc/os-release
声明图像基于 Distroless
。 SUPPORT_URL 给出的解释是:
"Distroless" images contain only your application and its runtime dependencies. They do not contain package managers, shells or any other programs you would expect to find in a standard Linux distribution.
这是使用容器的最佳做法之一,只保留绝对必要的内容。你可能会遇到很多这样的图片,有些甚至没有 sh
。此外,根文件系统是只读的and/or容器可能没有足够的权限来安装东西。
考虑到所有这些,您可能无法将 bash
或任何其他物品带入室内。根据您的实际目标,您可以:
- 尝试使用
kubectl cp
将文件从容器中复制出来(图像中需要tar
); - 进入容器的宿主机节点,定位宿主机上的容器文件。您也可以在主机上使用
docker cp
将bash
二进制文件推送到 运行 容器中。
根据 PRETTY_NAME
判断,它是 Distroless (https://github.com/GoogleContainerTools/distroless)。在他们的自述文件中,您可以阅读
Who uses Distroless?
- Kubernetes, since v1.15
- ...
这可能是你的情况。