我正在尝试通过 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
nslookup 的nfs.service.domin
在我的容器中工作正常。这是通过以下方式实现的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
to server: 10.10.1.11
这很好用!所以总结一下
- 服务的 DNS 解析工作正常
- 通过 DNS 解析挂载不会
- 通过特定 IP 地址安装有效
- 我努力了
Headless Service
而不是 StubDomain 但存在同样的问题
非常感谢任何帮助
Update 1:如果我在工作节点/主节点的 /etc/hosts 文件中添加一个条目10.10.1.11 nfs.service.domain
然后是我上面的配置server: nfs.service.domain
作品。这显然不是一个理想的解决方法......
正如 @Giorgio Cerruti 所指出的,并在这张 github 票证 https://github.com/kubernetes/kubernetes/issues/44528/除其他外,这目前是不可能的,因为节点需要能够解析 DNS 条目,但它无法解析 kube-dns。两种可能的解决方案是:
- Update
/etc/hosts
每个 kubernetes 节点解析 NFS 端点(根据上面的更新)。这是一个原始的解决方案。
-
对此 NFS 服务和同一域(如 NFS)中的任何其他远程服务有效的更强大的修复是将远程 DNS 服务器添加到 kubernetes 节点resolv.conf
someolddomain.org service.domain xx.xxx.xx
nameserver 10.10.0.12
nameserver 192.168.20.22
nameserver 8.8.4.4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)