docker 运行 -it gcr.io/... /bin/bash 没有在 /etc/resolv.conf 中获取 SkyDNS 设置
docker run -it gcr.io/... /bin/bash does not get SkyDNS settings in /etc/resolv.conf
从 GKE 节点上的 运行ning pod 我可以:
# docker exec e68f1765f8b0 more /etc/resolv.conf
::::::::::::::
/etc/resolv.conf
::::::::::::::
nameserver 10.103.240.10
nameserver 169.254.169.254
nameserver 10.10.0.1
search default.svc.cluster.local svc.cluster.local cluster.local c.dandsltd-gce.internal. 899692696219.google.internal. google.internal.
options ndots:5
但是从同一个 GKE 节点,如果我 运行:
# docker run -it gcr.io/<same image> /bin/bash
root@ac81b13b172d:/# more /etc/resolv.conf
domain c.dandsltd-gce.internal.
search c.dandsltd-gce.internal. 899692696219.google.internal. google.internal.
nameserver 169.254.169.254
nameserver 10.10.0.1
这让我陷入了一个循环,因为我认为 SkyDNS 没有 运行 在我的容器上。显然,从复制控制器启动 pod/container 会做更多的事情,比如注入 SkyDNS 设置而不只是 docker 运行。
有没有办法 运行 一次性 docker 容器并获得与通过复制控制器启动的容器相同的环境?
谢谢,
亚伦
您可以 运行 通过在规范中创建带有 restartPolicy: Never
的 pod 来一次性使用容器。例子:
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
restartPolicy: "Never"
在 v1.1 中,kubectl 将支持通过 kubectl run $podname --image=$image --restart=Never
从图像创建一次性 pods。同时,您必须从文件创建 pod 以指定重启策略。
我真正需要做的是:
# docker exec e68f1765f8b0 bash
来自 GKE 节点。然后我可以从集群中的容器 运行 中获取 shell 而不是仅在本地 运行 而不是由 kubernetes 提供的新容器。
这样,像 SkyDNS 这样的东西就为你设置好了,你可以测试像
wget .default.cluster.local
等等
从 GKE 节点上的 运行ning pod 我可以:
# docker exec e68f1765f8b0 more /etc/resolv.conf
::::::::::::::
/etc/resolv.conf
::::::::::::::
nameserver 10.103.240.10
nameserver 169.254.169.254
nameserver 10.10.0.1
search default.svc.cluster.local svc.cluster.local cluster.local c.dandsltd-gce.internal. 899692696219.google.internal. google.internal.
options ndots:5
但是从同一个 GKE 节点,如果我 运行:
# docker run -it gcr.io/<same image> /bin/bash
root@ac81b13b172d:/# more /etc/resolv.conf
domain c.dandsltd-gce.internal.
search c.dandsltd-gce.internal. 899692696219.google.internal. google.internal.
nameserver 169.254.169.254
nameserver 10.10.0.1
这让我陷入了一个循环,因为我认为 SkyDNS 没有 运行 在我的容器上。显然,从复制控制器启动 pod/container 会做更多的事情,比如注入 SkyDNS 设置而不只是 docker 运行。
有没有办法 运行 一次性 docker 容器并获得与通过复制控制器启动的容器相同的环境?
谢谢, 亚伦
您可以 运行 通过在规范中创建带有 restartPolicy: Never
的 pod 来一次性使用容器。例子:
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
restartPolicy: "Never"
在 v1.1 中,kubectl 将支持通过 kubectl run $podname --image=$image --restart=Never
从图像创建一次性 pods。同时,您必须从文件创建 pod 以指定重启策略。
我真正需要做的是:
# docker exec e68f1765f8b0 bash
来自 GKE 节点。然后我可以从集群中的容器 运行 中获取 shell 而不是仅在本地 运行 而不是由 kubernetes 提供的新容器。
这样,像 SkyDNS 这样的东西就为你设置好了,你可以测试像 wget .default.cluster.local 等等