【发布时间】:2018-08-22 19:12:28
【问题描述】:
我正在尝试通过 DNS 查找在我的容器中挂载一个 NFS 共享(在 k8s 集群之外),我的配置如下
apiVersion: v1
kind: Pod
metadata:
name: service-a
spec:
containers:
- name: service-a
image: dockerregistry:5000/centOSservice-a
command: ["/bin/bash"]
args: ["/etc/init.d/jboss","start"]
volumeMounts:
- name: service-a-vol
mountPath: /myservice/por/data
volumes:
- name: service-a-vol
nfs:
server: nfs.service.domain
path: "/myservice/data"
restartPolicy: OnFailure
nfs.service.domin 的 nslookup 在我的容器中运行良好。这是通过 StubDomain 实现的。但是,在创建容器时,它无法解析 nfs 服务器。错误:
Warning FailedMount <invalid> kubelet, worker-node-1 MountVolume.SetUp failed for volume "service-a-vol" : mount failed: exit status 32
Mounting command: systemd-run
Mounting arguments: --description=Kubernetes transient mount for /var/lib/kubelet/pods/44aabfb8-2767-11e8-bcf9-fa163ece9426/volumes/kubernetes.io~nfs/service-a-vol --scope -- mount -t nfs nfs.service.domain:/myservice/data /var/lib/kubelet/pods/44aabfb8-2767-11e8-bcf9-fa163ece9426/volumes/kubernetes.io~nfs/service-a-vol
Output: Running scope as unit run-27293.scope.
mount.nfs: Failed to resolve server nfs.service.domain: Name or service not known
mount.nfs: Operation already in progress
如果我将 server: nfs.service.domain 修改为 server: 10.10.1.11 这工作正常!总结一下
- 服务的 DNS 解析工作正常
- 不通过 DNS 解析装载
- 通过特定 IP 地址安装有效
- 我已尝试使用
Headless Service代替 StubDomain,但存在同样的问题
非常感谢任何帮助
更新 1:如果我在工作/主节点 10.10.1.11 nfs.service.domain 的 /etc/hosts 文件中添加一个条目,那么我在 server: nfs.service.domain 上方的配置就可以工作。这显然不是一个理想的解决方法...
【问题讨论】:
-
我过去也遇到过同样的问题。问题是 K8s 的团队他们没有实现这部分 take a look at this discussion。我不知道他们到目前为止是否发布了这个功能。
-
感谢@GiorgioCerruti 的链接,如果我修改节点的/etc/hosts(我在上面编辑),我设法让它工作,我没有意识到解决服务所需的节点名称以安装卷。
标签: docker kubernetes rpc nfs persistent-volumes