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)