文档首页/ 云容器引擎 CCE/ 最佳实践/ 容器/ 使用hostAliases参数配置Pod的/etc/hosts文件
更新时间:2026-07-10 GMT+08:00
分享

使用hostAliases参数配置Pod的/etc/hosts文件

使用场景

在Kubernetes集群中,Pod内部的主机名解析默认依赖DNS配置(如CoreDNS)。但在某些情况下,Pod需要对特定域名进行本地化的解析控制,而不希望依赖集群DNS或外部DNS服务。然而,Pod的“/etc/hosts”文件由kubelet管理,默认内容由集群网络插件和系统配置决定。如果直接登录容器修改该文件,容器重启或重建后修改将丢失,无法持久化。您可以使用hostAliases参数在Pod级别添加主机名的解析,向Pod的“/etc/hosts”文件中追加自定义解析条目。

操作步骤

  1. 使用kubectl连接集群。
  2. 创建hostaliases-pod.yaml文件。

    vi hostaliases-pod.yaml

    示例如下:

    apiVersion: v1
    kind: Pod
    metadata:
      name: hostaliases-pod
    spec:
      hostAliases:      # 添加自定义主机名与IP地址映射
      - ip: 127.0.0.1   # 目标IP地址
        hostnames:      # 绑定到该IP的主机名列表
        - foo.local
        - bar.local
      - ip: 10.1.2.3
        hostnames:
        - foo.remote
        - bar.remote
      containers:
        - name: cat-hosts
          image: tomcat:9-jre11-slim  # 镜像及镜像版本可根据实际需求进行修改
      imagePullSecrets:
        - name: default-secret
    表1 hostAliases参数说明

    参数名

    参数类型

    参数解释

    spec.hostAliases

    Object数组

    自定义主机名解析条目列表,用于向Pod的/etc/hosts文件中追加解析记录(不会覆盖系统默认的localhost或Kubernetes相关条目),实现主机名到IP地址的本地解析。

    spec.hostAliases[].ip

    字符串

    指定主机名要解析的目标IP地址。必须为合法的IP地址格式。

    spec.hostAliases[].hostnames

    字符串数组

    需绑定到上述IP地址的主机名列表,支持添加多个别名。主机名需符合DNS命名规范。

  3. 创建Pod。

    kubectl create -f hostaliases-pod.yaml

    命令行终端显示如下信息表明Pod已创建。

    pod/hostaliases-pod created

  4. 查看Pod状态。

    kubectl get pod hostaliases-pod

    Pod状态显示为Running,表示Pod已创建成功。

    NAME                  READY          STATUS       RESTARTS      AGE
    hostaliases-pod       1/1            Running      0             16m

  5. 查看配置的hostAliases是否正常,执行如下命令:

    kubectl exec hostaliases-pod -- cat /etc/hosts

    文件末尾可以看到由hostAliases添加的条目,例如:

    # Entries added by HostAliases.
    127.0.0.1	foo.local	bar.local
    10.1.2.3	foo.remote	bar.remote

相关文档