我拥有的:
使用 Google 容器优化操作系统作为节点操作系统在集群上部署 Kubernetes
进一步的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