如何在不进入Pod的情况下自动更新运行Pod内的/ etc / hosts文件条目

时间:2019-02-22 10:52:35

标签: kubernetes sap

我们如何在运行Pod的/etc/hosts文件中自动更新(删除,创建,更改)条目,而无需实际进入Pod?

我们正在研究 SAP 应用服务器的容器化,到目前为止,已经成功地使用 Kubernetes 实现了这一目标。

apiVersion: v1
kind: Pod
spec:
  hostNetwork: true

由于我们使用的是主机网络方法,因此,每当创建新的pod时,都会复制我们的VM /etc/hosts文件的所有条目。

但是,一旦创建了pod并处于运行状态,对VM /etc/hosts文件的任何更改都不会转移到已经运行的pod中。

我们希望能够满足我们的项目要求。

1 个答案:

答案 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吗?