更新时间:2024-12-04 GMT+08:00

使用hostAliases配置Pod /etc/hosts

使用场景

DNS配置或其他选项不合理时,可以向pod的“/etc/hosts”文件中添加条目,使用hostAliases在pod级别覆盖对主机名的解析。

操作步骤

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

    vi hostaliases-pod.yaml

    Yaml中加粗字段为镜像及镜像版本,可根据实际需求进行修改:

    apiVersion: v1
    kind: Pod
    metadata:
      name: hostaliases-pod
    spec:
      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: tomcat:9-jre11-slim
          lifecycle:
            postStart:
              exec:
                command:
                  - cat
                  - /etc/hosts
      imagePullSecrets:
        - name: default-secret
    表1 pod字段说明

    参数名

    是否必选

    参数解释

    apiVersion

    api版本号。

    kind

    创建的对象类别。

    metadata

    资源对象的元数据定义。

    name

    Pod的名称。

    spec

    spec是集合类的元素类型,pod的主体部分都在spec中给出。具体请参见表2

    表2 spec数据结构说明

    参数名

    是否必选

    参数解释

    hostAliases

    主机别名。

    containers

    具体请参见表3

    表3 containers数据结构说明

    参数名

    是否必选

    参数解释

    name

    容器名称。

    image

    容器镜像名称。

    lifecycle

    生命周期。

  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是否正常,执行如下命令:

    docker ps |grep hostaliases-pod

    docker exec -ti 容器ID /bin/sh