问题是这样的:
我们有几个 microk8s 集群运行在不同的网络上;但每个人都可以访问我们的 NAS 所在的存储网络。
在 Kubernetes 中,我们使用 nfs-provisioner (nfs-externalsubdir) 创建磁盘。有些磁盘是使用指定的 NAS 服务器的 IP 创建的。
当我们需要更改IP时,我们发现磁盘与IP绑定了,更改IP意味着在其中创建新的存储资源。
为了避免这种情况,我们希望能够在 Kubernetes 集群级别设置 DNS 记录,以便我们可以使用 nfs 配置程序基于名称而不是 IP 创建存储资源,并且我们可以在需要时更改 DNS 记录(当例如,我们升级或迁移外部 NAS 设备)
例如,我想告诉每个 microk8s 环境:
192.168.1.4 my-nas.mydomain.local
...就像我在 /etc/hosts 文件中一样。
有没有正确的方法来实现这一目标?
我尝试遵循此链接上的建议:有没有办法向 kube-dns 添加任意记录? https://stackoverflow.com/questions/37166822/is-there-a-way-to-add-arbitrary-records-to-kube-dns(答案被赞成 15 次,集群部分),重新启动部署,但它不起作用
我无法使用 hostAliases 功能,因为我们使用的每个图表上并未提供该功能,这就是我正在寻找更全局的解决方案的原因。
此致,
...we could create storage resources with the nfs provisionner based on a name an not an IP, and we could alter the DNS record when needed...
为此,您可以尝试无头服务而不接触 coreDNS:
apiVersion: v1
kind: Service
metadata:
name: my-nas
namespace: kube-system # <-- you can place it somewhere else
labels:
app: my-nas
spec:
ports:
- protocol: TCP
port: <nas port>
---
apiVersion: v1
kind: Endpoints
metadata:
name: my-nas
subsets:
- addresses:
- ip: 192.168.1.4
ports:
- port: <nas port>
将其用作:my-nas.kube-system.svc.cluster.local
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)