Pod 主机名

本页面解释了如何设置 Pod 的主机名、配置后的潜在副作用以及底层机制。

默认 Pod 主机名

创建 Pod 时,其主机名(从 Pod 内部观察)派生自 Pod 的 `metadata.name` 值。主机名及其对应的完全限定域名(FQDN)都被设置为 `metadata.name` 值(从 Pod 的角度来看)。

apiVersion: v1
kind: Pod
metadata:
  name: busybox-1
spec:
  containers:
  - image: busybox:1.28
    command:
      - sleep
      - "3600"
    name: busybox

通过此清单创建的 Pod 的主机名和完全限定域名(FQDN)将设置为 busybox-1

带有 Pod 主机名和子域字段的主机名

Pod 规范包含一个可选的 hostname 字段。设置此值后,它将优先于 Pod 的 metadata.name 作为主机名(从 Pod 内部观察)。例如,spec.hostname 设置为 my-host 的 Pod 的主机名将设置为 my-host

Pod 规范还包含一个可选的 subdomain 字段,表示 Pod 属于其命名空间中的一个子域。如果 Pod 在命名空间 my-namespace 中将 spec.hostname 设置为 "foo",将 spec.subdomain 设置为 "bar",则其主机名将变为 foo,其完全限定域名(FQDN)将变为 foo.bar.my-namespace.svc.cluster-domain.example(从 Pod 内部观察)。

当同时设置了主机名和子域时,集群的 DNS 服务器将根据这些字段创建 A 和/或 AAAA 记录。请参阅:Pod 的主机名和子域字段

带有 Pod 的 setHostnameAsFQDN 字段的主机名

特性状态:`Kubernetes v1.22 [stable]`

当 Pod 配置为具有完全限定域名 (FQDN) 时,其主机名是短主机名。例如,如果你有一个 FQDN 为 `busybox-1.busybox-subdomain.my-namespace.svc.cluster-domain.example` 的 Pod,那么默认情况下,该 Pod 内部的 `hostname` 命令返回 `busybox-1`,而 `hostname --fqdn` 命令返回 FQDN。

当 Pod 规范中同时设置了 `setHostnameAsFQDN: true` 和子域字段时,kubelet 会将 Pod 的 FQDN 写入该 Pod 命名空间的主机名。在这种情况下,`hostname` 和 `hostname --fqdn` 都返回 Pod 的 FQDN。

Pod 的 FQDN 以之前定义的方式构建。它由 Pod 的 spec.hostname(如果指定)或 metadata.name 字段、spec.subdomainnamespace 名称和集群域后缀组成。

带有 Pod 的 hostnameOverride 的主机名

功能状态: Kubernetes v1.34 [alpha] (默认禁用)

在 Pod 规范中设置 `hostnameOverride` 的值会导致 kubelet 无条件地将 Pod 的主机名和完全限定域名(FQDN)都设置为 `hostnameOverride` 值。

hostnameOverride 字段有 64 个字符的长度限制,并且必须符合 RFC 1123 中定义的 DNS 子域名标准。

示例

apiVersion: v1
kind: Pod
metadata:
  name: busybox-2-busybox-example-domain
spec:
  hostnameOverride: busybox-2.busybox.example.domain
  containers:
  - image: busybox:1.28
    command:
      - sleep
      - "3600"
    name: busybox

如果 hostnameOverridehostnamesubdomain 字段同时设置

  • Pod 内的主机名将被 hostnameOverride 值覆盖。

  • 集群 DNS 服务器中 Pod 的 A 和/或 AAAA 记录仍根据 hostnamesubdomain 字段生成。

注意:如果设置了 `hostnameOverride`,则不能同时设置 `hostNetwork` 和 `setHostnameAsFQDN` 字段。API 服务器将明确拒绝任何尝试这种组合的创建请求。

有关 `hostnameOverride` 与其他字段(hostname、subdomain、setHostnameAsFQDN、hostNetwork)组合时的行为详情,请参阅 KEP-4762 设计细节 中的表格。

最后修改于 2025 年 8 月 7 日太平洋标准时间上午 8:18:跟进 PR 51414 评论 (1e994aaed3)