如何将自定义主机条目添加到kubernetes Pods?

我的应用程序通过主机名与某些服务通信。 当我的应用程序作为docker容器运行时,我用hostnames添加到hostmachine的/ etc / hosts并使用--net=host来运行容器。

现在我正在kubernetes集群中运行我的容器。 我想知道如何通过yaml将/ etc / hosts条目添加到吊舱。

我正在使用kubernetes v1.5.3。

主机文件会给你带来麻烦,但如果你真的需要的话,你可以使用一个configuration图。

像这样添加一个configuration图

 apiVersion: v1 kind: ConfigMap metadata: name: my-app-hosts-file-configmap data: hosts: |- 192.168.0.1 gateway 127.0.0.1 localhost 

然后把它安装在你的吊舱内,像这样:

  volumeMounts: - name: my-app-hosts-file mountPath: /etc/ volumes: - name: my-app-hosts-file configMap: name: my-app-hosts-file-configmap 

我自己还没有需要POD中的主机条目,但是理论上会说你应该把这些条目添加到你的容器的dockerfile中,而不是作为Pod yaml的一部分 – 尽pipe这可以通过command参数,如本答案中所述 。

原因是Pod在逻辑上是一个缠绕容器的层,不应该关心在容器中运行的应用程序的细节。

这工作,也看起来更简单:

 kind: Service apiVersion: v1 metadata: name: {HOST_NAME} spec: ports: - protocol: TCP port: {PORT} targetPort: {PORT} type: ExternalName externalName: {EXTERNAL_IP} 

现在您可以直接使用该容器中的HOST_NAME来访问外部机器。