我们如何在运行Pod的/etc/hosts
文件中自动更新(删除,创建,更改)条目,而无需实际进入Pod?
我们正在研究 SAP 应用服务器的容器化,到目前为止,已经成功地使用 Kubernetes 实现了这一目标。
apiVersion: v1
kind: Pod
spec:
hostNetwork: true
由于我们使用的是主机网络方法,因此,每当创建新的pod时,都会复制我们的VM /etc/hosts
文件的所有条目。
但是,一旦创建了pod并处于运行状态,对VM /etc/hosts
文件的任何更改都不会转移到已经运行的pod中。
我们希望能够满足我们的项目要求。
答案 0 :(得分:1)
Kubernetes确实有几种影响名称解析的方式,您的请求与here和相关页面最为相似。
这里是摘录,重点是我的。
在DNS和其他选项不适用的情况下,将条目添加到Pod的/ etc / hosts文件中可以在Pod级别覆盖主机名解析。在1.7中,用户可以在PodSpec中的HostAliases字段中添加这些自定义条目。
建议不要使用HostAliases进行修改,因为该文件由Kubelet管理,并且可以在Pod创建/重新启动期间覆盖。
使用HostAliases
的Pod规范示例如下:
apiVersion: v1
kind: Pod
metadata:
name: hostaliases-pod
spec:
restartPolicy: Never
hostAliases:
- ip: "127.0.0.1"
hostnames:
- "foo.local"
- "bar.local"
- ip: "10.1.2.3"
hostnames:
- "foo.remote"
- "bar.remote"
containers:
- name: cat-hosts
image: busybox
command:
- cat
args:
- "/etc/hosts"
这里的一个问题是,如果您的网络IP发生更改,您将需要使用一组新的HostAliases
更新和重启Pod。这可能会导致系统停机。
确定要使用此机制,而不需要a service that points to an external endpoint吗?