Kubernetes,无法通过 DNS 挂载 NFS 共享

标签 kubernetes rpc nfs persistent-volumes

我正在尝试通过 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.domainserver: 10.10.1.11这很好用!总结一下

  1. 服务的 DNS 解析工作正常
  2. 无法通过 DNS 解析安装
  3. 通过特定 IP 地址进行安装
  4. 我已经尝试过Headless Service而不是 StubDomain 但存在同样的问题

非常感谢任何帮助

更新 1:如果我在工作节点/主节点的/etc/hosts 文件中添加一个条目 10.10.1.11 nfs.service.domain那么我上面的配置server: nfs.service.domain作品。这显然不是一个理想的解决方法......

最佳答案

正如 @Giorgio Cerruti 所指出的以及 this github ticket 中引用的那样其中,目前这是不可能的,因为节点需要能够解析 DNS 条目,但它无法解析 kube-dns。两种可能的解决方案是:

  1. 更新每个 kubernetes 节点的 /etc/hosts 以解析 NFS 端点(按照上面的更新)。这是一个原始的解决方案。
  2. 适用于此 NFS 服务和同一域(如 NFS)中的任何其他远程服务的更强大的修复是将远程 DNS 服务器添加到 kubernetes 节点 resolv.conf

    someolddomain.org service.domain xx.xxx.xx 名称服务器 10.10.0.12 名称服务器 192.168.20.22 名称服务器8.8.4.4

关于Kubernetes,无法通过 DNS 挂载 NFS 共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49274655/

相关文章:

azure - Istio Operator Spec 如何为 addonComponents 添加 "hub"参数?

templates - 如何使用 Kubernetes yaml 文件设置动态值

amazon-web-services - 我在Kubernetes升级中有任何停机时间吗?

javascript - 类型错误 : Cannot read property 'method' of undefined

rpc - 当您使用 rpcgen 时,调用者如何找到被调用者?

docker - 如何将Docker镜像中的数据与Kubernetes Volume(NFS)合并

performance - Kubernetes NFS 挂载选项

python - 在 Windows 7 中用冒号 (":") 打开文件名

docker - 如何在一个 Istio 服务网格中托管多个应用程序?

java - 如何正确序列化/反序列化Java Object[]?