有没有kubectl版本的`docker-run-net=container:thingie--pid=containe



使用Docker,如果我想检查一个没有自己外壳的正在运行的容器,我可以运行这样的东西:

docker run --net=container:thingie --pid=container:thingie -it --rm busybox sh

这在一个单独的映像中运行一个shell,但与我要检查的容器具有相同的pid/网络空间。还有用于连接到目标容器文件系统的选项。

我可以在kubernetes中使用kubectl并指向现有的pod/容器吗?

当然,首先使用kubectl get pod | grep YOUR_DEPLOYMENT_NAME来获取pod的uid。然后,使用kubectl exec -it POD_UID bash/sh/whatever登录pod。请注意,您的容器可能不接受bash,因此您可能需要将其更改为sh.

然而,正如你的评论所表明的那样,一张图片可能没有外壳(我从来没有听说过,但我们仍然可以解决它(。为此,您可以在pod中添加另一个容器,该容器将共享文件系统、网络等。这将允许您调试主容器。使用kubectl exec -it $YOUR_POD_UID -c $CONTAINER_NAME alpine sh进入调试容器。这是一个yaml,以备不时之需。

apiVersion: apps/v1
kind: Deployment
metadata:
namespace: default
name: alpine
labels:
app: alpine
spec:
replicas: 1
selector:
matchLabels:
app: alpine
template:
metadata:
creationTimestamp: null
labels:
app: alpine
spec:
containers:
# Your container.
- name: your_container_without_shell
image: container_without_shell:latest
# Sidecar container.
- name: alpine
image: alpine:latest
command: ["/bin/sleep", "1000000"] # let's say it dies eventually.
hostname: alpine
restartPolicy: Always

最新更新