Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有kubectl版本的'docker run--net=container:thingie--pid=container:thingie-it--rm busybox sh`_Docker_Kubernetes - Fatal编程技术网

有没有kubectl版本的'docker run--net=container:thingie--pid=container:thingie-it--rm busybox sh`

有没有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,如果我想检查一个没有自己外壳的正在运行的容器,我可以运行如下操作:

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图像。