众所周知,秘密不适用于容器化的kubernetes集群((https://github.com/kubernetes/kubernetes/blob/master/docs/getting-started-guides/docker.md)。为此记录了几个错误(例如:https://github.com/kubernetes/kubernetes/issues/18239)。
但是,由于Docker 1.10允许共享/从属传播,因此该问题应该在技术上得到解决。但是,我无法让它工作。
我尝试更改单节点docker命令,如下所示:
docker run \
--restart=always \
--volume=/:/rootfs:ro \
--volume=/sys:/sys:ro \
--volume=/dev:/dev \
--volume=/var/lib/docker/:/var/lib/docker:shared \
--volume=/var/lib/kubelet/:/var/lib/kubelet:shared \
--volume=/var/run:/var/run:shared \
--net=host \
--pid=host \
--privileged=true \
-d \
gcr.io/google_containers/hyperkube-amd64:v${K8S_VERSION} \
/hyperkube kubelet \
--containerized \
--hostname-override="127.0.0.1" \
--address="0.0.0.0" \
--api-servers=http://localhost:8080 \
--config=/etc/kubernetes/manifests \
--cluster-dns=10.0.0.10 \
--cluster-domain=cluster.local \
--allow-privileged=true \
--v=10
请注意共享安装传播设置。当我这样做时,我得到错误:
docker:来自守护程序的错误响应:无法启动容器 f7a5ae3d3e88b02ba42544ec768050717c942bc62889175171e6ebb3f89a1a6c:路径 / var / run挂载在/ run上,但它不是共享挂载..
我试图在一个流浪者盒子上的Unbutu信任上做这件事。我使用的是docker版本1.10.0和容器化的hyperkuber版本v1.2.0-alpha.7。
我在这里缺少什么?如果我使用原始 rw 回滚共享设置,则会收到错误消息:无法安装pod 的卷 IsLikelyNotMountPoint 错误。< / p>
mkdir -p /var/lib/kubelet
mount -o bind /var/lib/kubelet /var/lib/kubelet
mount --make-shared /var/lib/kubelet
和实际命令
docker run \
--restart=always \
--volume=/:/rootfs:ro \
--volume=/sys:/sys:ro \
--volume=/dev:/dev \
--volume=/var/lib/docker/:/var/lib/docker:rw \
--volume=/var/lib/kubelet/:/var/lib/kubelet:shared \
--volume=/var/run:/var/run:rw \
--net=host \
--pid=host \
--privileged=true \
-d \
gcr.io/google_containers/hyperkube-amd64:v${K8S_VERSION} \
/hyperkube kubelet \
--hostname-override="127.0.0.1" \
--address="0.0.0.0" \
--api-servers=http://localhost:8080 \
--config=/etc/kubernetes/manifests \
--cluster-dns=10.0.0.10 \
--cluster-domain=cluster.local \
--allow-privileged=true --v=10
我正在使用kubernetes版本v1.2.0.alpha.7。另请注意,在main命令中,我添加了 shared mount并删除了“containerized”参数。另外,我使用的是最新版本的Docker(1.10)