Google Cloud Container Engine 上的 NFS 无法解析服务器的主机名

Google Cloud Container Engine 上的 NFS 无法解析服务器的主机名

我拥有的:

使用 Google 容器优化操作系统作为节点操作系统在集群上部署 Kubernetes

的结果cat /etc/*-release

进一步的deployment.yaml

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: eu.gcr.io/my-project/my-app
          ports:
          - containerPort: 8013

          volumeMounts:
          - mountPath: /my/cache/
            name: cache

       volumes:
       - name: cache
         nfs:
           server: cache
           path: /cache/my-app/
           readOnly: false

问题是,当我明确输入 IP 地址时,nfs-mount 可以工作,但无论出于何种原因,都无法解析主机名。

volumes:
   - name: cache
     nfs:
       server: 192.168.1.1 # this example would work
       path: /cache/my-app/
       readOnly: false

但是输入主机名后,mount.nfs 退出并显示

挂载失败:退出状态 32...输出:mount.nfs:无法解析服务器缓存

但是我可以从节点通过主机名 ping 服务器。当我使用普通的 Container-VM 时,它也能正常工作,这表明这可能是 Google 容器优化操作系统的问题...

我如何告诉 Kubernetes 通过主机名解析 nfs-mount 的服务器?

答案1

这似乎是 github [1][2] 下跟踪的已知问题。解决方法是“将 /etc/resolv.conf 从 GCE VM(这将包括 GCP 搜索路径、元数据 DNS 解析器)复制到 chroot 环境(/home/kubernetes/containerized_mounter/rootfs)目录中”,并使用 NFS FQDN(例如:server-name.svc.cluster.local)作为主机名。

此外,这是[3] 在 Github 上提交拉取请求(PR),在容器化挂载点路径中设置 DNS 服务器来解析主机名。

[1]https://github.com/kubernetes/kubernetes/issues/48212

[2]https://github.com/kubernetes/kubernetes/pull/42376

[3]https://github.com/kubernetes/kubernetes/pull/51645

相关内容