有没有kubectl版本的'docker run--net=container:thingie--pid=container:thingie-it--rm busybox sh`
有了Docker,如果我想检查一个没有自己外壳的正在运行的容器,我可以运行如下操作:有没有kubectl版本的'docker run--net=container:thingie--pid=container:thingie-it--rm busybox sh`,docker,kubernetes,Docker,Kubernetes,有了Docker,如果我想检查一个没有自己外壳的正在运行的容器,我可以运行如下操作: docker run --net=container:thingie --pid=container:thingie -it --rm busybox sh 它在一个单独的映像中运行一个shell,但与我要检查的容器具有相同的pid/网络空间。还有用于连接到目标容器文件系统的选项 我可以在kubernetes中使用kubectl并指向现有的pod/容器吗?当然,首先使用kubectl get pod | gr
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\u UID bash/sh/which
登录POD。请注意,您的容器可能不接受bash,因此您可能需要将其更改为sh
然而,正如你的评论所暗示的,图像可能没有外壳(我从未听说过有外壳,但我们仍然可以解决它)。为此,您可以在pod中添加另一个容器,它将共享文件系统、网络等。这将允许您调试主容器。使用kubectl exec-it$YOUR\u POD\u UID-c$CONTAINER\u 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
当然,首先使用
kubectl get pod | grep YOUR_DEPLOYMENT_NAME
获取pod的uid。然后,使用kubectl exec-it POD\u UID bash/sh/which
登录POD。请注意,您的容器可能不接受bash,因此您可能需要将其更改为sh
然而,正如你的评论所暗示的,图像可能没有外壳(我从未听说过有外壳,但我们仍然可以解决它)。为此,您可以在pod中添加另一个容器,它将共享文件系统、网络等。这将允许您调试主容器。使用kubectl exec-it$YOUR\u POD\u UID-c$CONTAINER\u 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
不,这只是在一个内置了外壳的吊舱上运行一个外壳。一些Docker映像是从
scratch
构建的,没有外壳。我指的是:我明白了,你是对的。在这种情况下,您可以在同一个pod中运行多个容器,这些容器将共享相同的文件系统、网络等。从这个意义上讲,您可以添加所谓的“sidecar容器”来调试pod。为此,如果你想调试一些轻巧且有用的东西,你可以附加一个alpine图像。不,这只是在一个内置了shell的pod上运行shell。一些Docker映像是从scratch
构建的,没有外壳。我指的是:我明白了,你是对的。在这种情况下,您可以在同一个pod中运行多个容器,这些容器将共享相同的文件系统、网络等。从这个意义上讲,您可以添加所谓的“sidecar容器”来调试pod。为此,如果您想调试一些轻巧且有用的东西,可以附加一个alpine图像。