Pod

Pod 是可以在主機上執行的容器集合。

apiVersion: v1

import "k8s.io/api/core/v1"

Pod

Pod 是可以在主機上執行的容器集合。此資源由客戶端建立並排程到主機上。


PodSpec

PodSpec 是 Pod 的描述。


容器

  • containers ([]Container), 必需

    補丁策略:在鍵 name 上合併

    對映:合併時將保留鍵名上的唯一值

    屬於 Pod 的容器列表。當前無法新增或刪除容器。Pod 中必須至少有一個容器。無法更新。

  • initContainers ([]Container)

    補丁策略:在鍵 name 上合併

    對映:合併時將保留鍵名上的唯一值

    屬於 Pod 的初始化容器列表。初始化容器在普通容器啟動之前按順序執行。如果任何初始化容器失敗,Pod 將被視為失敗,並根據其 restartPolicy 進行處理。初始化容器或普通容器的名稱在所有容器中必須是唯一的。初始化容器可能沒有 Lifecycle 動作、Readiness 探針、Liveness 探針或 Startup 探針。初始化容器的 resourceRequirements 在排程時會被考慮,透過查詢每種資源型別的最高請求/限制,然後使用該值或普通容器總和的最大值。限制以類似方式應用於初始化容器。初始化容器目前無法新增或刪除。無法更新。更多資訊:https://kubernetes.club.tw/docs/concepts/workloads/pods/init-containers/

  • ephemeralContainers ([]EphemeralContainer)

    補丁策略:在鍵 name 上合併

    對映:合併時將保留鍵名上的唯一值

    此 Pod 中執行的臨時容器列表。臨時容器可以在現有 Pod 中執行,以執行使用者發起的除錯等操作。建立 Pod 時不能指定此列表,也不能透過更新 Pod Spec 來修改。要向現有 Pod 新增臨時容器,請使用 Pod 的 ephemeralcontainers 子資源。

  • imagePullSecrets ([]LocalObjectReference)

    補丁策略:在鍵 name 上合併

    對映:合併時將保留鍵名上的唯一值

    ImagePullSecrets 是對同一名稱空間中 Secret 的可選引用列表,用於拉取此 PodSpec 使用的任何映象。如果指定,這些 Secret 將傳遞給各個拉取器實現以供其使用。更多資訊:https://kubernetes.club.tw/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod

  • enableServiceLinks (boolean)

    EnableServiceLinks 指示是否應將服務資訊注入 Pod 的環境變數中,匹配 Docker 連結的語法。可選:預設為 true。

  • os (PodOS)

    指定 Pod 中容器的作業系統。如果設定了此欄位,則某些 Pod 和容器欄位會受到限制。

    如果 OS 欄位設定為 linux,則以下欄位必須未設定: -securityContext.windowsOptions

    如果 OS 欄位設定為 windows,則以下欄位必須未設定: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.resources - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.securityContext.supplementalGroupsPolicy - spec.containers[].securityContext.appArmorProfile - spec.containers[].securityContext.seLinuxOptions - spec.containers[].securityContext.seccompProfile - spec.containers[].securityContext.capabilities - spec.containers[].securityContext.readOnlyRootFilesystem - spec.containers[].securityContext.privileged - spec.containers[].securityContext.allowPrivilegeEscalation - spec.containers[].securityContext.procMount - spec.containers[].securityContext.runAsUser - spec.containers[].securityContext.runAsGroup

    PodOS 定義 Pod 的作業系統引數。

排程

  • nodeSelector (map[string]string)

    NodeSelector 是一個選擇器,Pod 必須滿足此選擇器才能適合某個節點。此選擇器必須匹配節點的標籤,Pod 才能被排程到該節點上。更多資訊:https://kubernetes.club.tw/docs/concepts/configuration/assign-pod-node/

  • nodeName (string)

    NodeName 指示 Pod 排程到哪個節點。如果為空,則此 Pod 是由 schedulerName 中定義的排程器排程的候選 Pod。一旦設定此欄位,該節點的 kubelet 將負責此 Pod 的生命週期。此欄位不應用於表示希望將 Pod 排程到特定節點。https://kubernetes.club.tw/docs/concepts/scheduling-eviction/assign-pod-node/#nodename

  • affinity (Affinity)

    如果指定,則為 Pod 的排程約束

    Affinity 是一組親和性排程規則。

    • affinity.nodeAffinity (NodeAffinity)

      描述 Pod 的節點親和性排程規則。

    • affinity.podAffinity (PodAffinity)

      描述 Pod 親和性排程規則(例如,將此 Pod 與其他 Pod 排程到同一節點、區域等)。

    • affinity.podAntiAffinity (PodAntiAffinity)

      描述 Pod 反親和性排程規則(例如,避免將此 Pod 與其他 Pod 排程到同一節點、區域等)。

  • tolerations ([]Toleration)

    原子性:在合併期間將被替換

    如果指定,則為 Pod 的容忍度。

    此 Toleration 所附加的 Pod 容忍所有與三重 <key,value,effect> 使用匹配運算子 匹配的汙點。

    • tolerations.key (string)

      Key 是容忍度適用的汙點鍵。空表示匹配所有汙點鍵。如果鍵為空,則運算子必須為 Exists;此組合表示匹配所有值和所有鍵。

    • tolerations.operator (string)

      Operator 表示鍵與值之間的關係。有效運算子是 Exists 和 Equal。預設為 Equal。Exists 等同於值的萬用字元,因此 Pod 可以容忍特定類別的所有汙點。

    • tolerations.value (string)

      Value 是容忍度匹配的汙點值。如果運算子是 Exists,則值應為空,否則只是一個普通字串。

    • tolerations.effect (string)

      Effect 指示要匹配的汙點效果。空表示匹配所有汙點效果。如果指定,允許的值是 NoSchedule、PreferNoSchedule 和 NoExecute。

    • tolerations.tolerationSeconds (int64)

      TolerationSeconds 表示容忍度(必須是 NoExecute 效果,否則此欄位將被忽略)容忍汙點的時間段。預設情況下,不設定此欄位,這意味著永遠容忍汙點(不驅逐)。零和負值將被系統視為 0(立即驅逐)。

  • schedulerName (string)

    如果指定,Pod 將由指定的排程器排程。如果未指定,Pod 將由預設排程器排程。

  • runtimeClassName (string)

    RuntimeClassName 指的是 node.k8s.io 組中的 RuntimeClass 物件,該物件應用於執行此 Pod。如果沒有 RuntimeClass 資源與指定的類匹配,Pod 將不會執行。如果未設定或為空,將使用“傳統”RuntimeClass,這是一個具有空定義的隱式類,使用預設執行時處理程式。更多資訊:https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class

  • priorityClassName (string)

    如果指定,表示 Pod 的優先順序。“system-node-critical”和“system-cluster-critical”是兩個特殊關鍵字,表示最高優先順序,前者是最高優先順序。任何其他名稱必須透過建立具有該名稱的 PriorityClass 物件來定義。如果未指定,Pod 優先順序將為預設值或零(如果沒有預設值)。

  • priority (int32)

    優先順序值。各種系統元件使用此欄位來查詢 Pod 的優先順序。當啟用 Priority Admission Controller 時,它會阻止使用者設定此欄位。准入控制器從 PriorityClassName 填充此欄位。值越高,優先順序越高。

  • preemptionPolicy (string)

    PreemptionPolicy 是搶佔低優先順序 Pod 的策略。可以是 Never、PreemptLowerPriority 之一。如果未設定,預設為 PreemptLowerPriority。

  • topologySpreadConstraints ([]TopologySpreadConstraint)

    補丁策略:按鍵 topologyKey 合併

    對映:在合併過程中將保留鍵 topologyKey, whenUnsatisfiable 上的唯一值

    TopologySpreadConstraints 描述了一組 Pod 如何跨拓撲域進行分佈。排程器將以遵守約束的方式排程 Pod。所有 topologySpreadConstraints 都透過 AND 邏輯組合。

    TopologySpreadConstraint 指定了如何將匹配的 Pod 分佈到給定的拓撲中。

    • topologySpreadConstraints.maxSkew (int32), 必需

      MaxSkew 描述了 Pod 不均勻分佈的程度。當 whenUnsatisfiable=DoNotSchedule 時,它是目標拓撲中匹配 Pod 數量與全域性最小值之間的最大允許差異。全域性最小值是符合條件的域中匹配 Pod 的最小數量,如果符合條件的域數量少於 MinDomains,則為零。例如,在 3 區叢集中,MaxSkew 設定為 1,具有相同 labelSelector 的 Pod 分佈為 2/2/1:在此情況下,全域性最小值為 1。 | zone1 | zone2 | zone3 | | P P | P P | P | - 如果 MaxSkew 為 1,傳入 Pod 只能排程到 zone3 才能變為 2/2/2;將其排程到 zone1(zone2) 將使 zone1(zone2) 上的 ActualSkew(3-1) 違反 MaxSkew(1)。 - 如果 MaxSkew 為 2,傳入 Pod 可以排程到任何區域。當 whenUnsatisfiable=ScheduleAnyway 時,它用於賦予滿足它的拓撲更高的優先順序。這是一個必需欄位。預設值為 1,不允許為 0。

    • topologySpreadConstraints.topologyKey (string), 必需

      TopologyKey 是節點標籤的鍵。具有此鍵和相同值的標籤的節點被視為處於同一拓撲中。我們將每個 <鍵,值> 視為一個“桶”,並嘗試將均衡數量的 Pod 放入每個桶中。我們將域定義為拓撲的特定例項。此外,我們將符合條件的域定義為其節點滿足 nodeAffinityPolicy 和 nodeTaintsPolicy 要求的域。例如,如果 TopologyKey 是“kubernetes.io/hostname”,則每個節點都是該拓撲的一個域。如果 TopologyKey 是“topology.kubernetes.io/zone”,則每個區域都是該拓撲的一個域。這是一個必需欄位。

    • topologySpreadConstraints.whenUnsatisfiable (string), 必需

      WhenUnsatisfiable 指示如果 Pod 不滿足傳播約束,應如何處理。 - DoNotSchedule (預設) 告訴排程器不要排程它。 - ScheduleAnyway 告訴排程器在任何位置排程 Pod,但對有助於減少偏差的拓撲賦予更高優先順序。如果 Pod 的每個可能的節點分配都會違反某個拓撲上的“MaxSkew”,則該約束對於傳入 Pod 被認為是“不可滿足”的。例如,在 3 區叢集中,MaxSkew 設定為 1,具有相同 labelSelector 的 Pod 分佈為 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | 如果 WhenUnsatisfiable 設定為 DoNotSchedule,傳入 Pod 只能排程到 zone2(zone3) 才能變為 3/2/1(3/1/2),因為 zone2(zone3) 上的 ActualSkew(2-1) 滿足 MaxSkew(1)。換句話說,叢集仍然可能不平衡,但排程器不會使其變得*更*不平衡。這是一個必需欄位。

    • topologySpreadConstraints.labelSelector (LabelSelector)

      LabelSelector 用於查詢匹配的 Pod。匹配此標籤選擇器的 Pod 將被計數,以確定其相應拓撲域中的 Pod 數量。

    • topologySpreadConstraints.matchLabelKeys ([]string)

      原子性:在合併期間將被替換

      MatchLabelKeys 是一組 Pod 標籤鍵,用於選擇將計算傳播的 Pod。這些鍵用於從傳入 Pod 標籤中查詢值,這些鍵值標籤與 labelSelector 進行 AND 運算,以選擇將為傳入 Pod 計算傳播的現有 Pod 組。禁止在 MatchLabelKeys 和 LabelSelector 中存在相同的鍵。當 LabelSelector 未設定時,不能設定 MatchLabelKeys。傳入 Pod 標籤中不存在的鍵將被忽略。空或空列表表示僅與 labelSelector 匹配。

      這是一個測試版欄位,需要啟用 MatchLabelKeysInPodTopologySpread 功能門(預設啟用)。

    • topologySpreadConstraints.minDomains (int32)

      MinDomains 表示符合條件的域的最小數量。當具有匹配拓撲鍵的符合條件的域的數量小於 minDomains 時,Pod 拓撲分佈將“全域性最小值”視為 0,然後執行 Skew 的計算。當具有匹配拓撲鍵的符合條件的域的數量等於或大於 minDomains 時,此值對排程沒有影響。因此,當符合條件的域的數量小於 minDomains 時,排程器不會將超過 maxSkew 的 Pod 排程到這些域。如果值為 nil,則約束的行為如同 MinDomains 等於 1。有效值是大於 0 的整數。當值不為 nil 時,WhenUnsatisfiable 必須為 DoNotSchedule。

      例如,在 3 區叢集中,MaxSkew 設定為 2,MinDomains 設定為 5,並且具有相同 labelSelector 的 Pod 分佈為 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P | 域的數量小於 5(MinDomains),因此“全域性最小值”被視為 0。在這種情況下,具有相同 labelSelector 的新 Pod 無法排程,因為如果新 Pod 排程到三個區域中的任何一個,計算出的偏差將為 3(3 - 0),這將違反 MaxSkew。

    • topologySpreadConstraints.nodeAffinityPolicy (string)

      NodeAffinityPolicy 指示在計算 Pod 拓撲分佈偏差時如何處理 Pod 的 nodeAffinity/nodeSelector。選項包括: - Honor:只有匹配 nodeAffinity/nodeSelector 的節點才包含在計算中。 - Ignore:nodeAffinity/nodeSelector 被忽略。所有節點都包含在計算中。

      如果此值為 nil,則行為等同於 Honor 策略。

    • topologySpreadConstraints.nodeTaintsPolicy (string)

      NodeTaintsPolicy 指示在計算 Pod 拓撲分佈偏差時如何處理節點汙點。選項包括: - Honor:包含沒有汙點的節點,以及傳入 Pod 具有容忍度的汙點節點。 - Ignore:節點汙點被忽略。所有節點都包含在計算中。

      如果此值為 nil,則行為等同於 Ignore 策略。

  • overhead (map[string]Quantity)

    Overhead 表示執行 Pod 對給定 RuntimeClass 相關的資源開銷。此欄位將在准入時由 RuntimeClass 准入控制器自動填充。如果啟用了 RuntimeClass 准入控制器,則在 Pod 建立請求中不得設定 overhead。RuntimeClass 准入控制器將拒絕已設定 overhead 的 Pod 建立請求。如果在 PodSpec 中配置並選擇了 RuntimeClass,則 Overhead 將設定為相應 RuntimeClass 中定義的值,否則將保持未設定並視為零。更多資訊:https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md

生命週期

  • restartPolicy (string)

    Pod 中所有容器的重啟策略。可以是 Always、OnFailure、Never 之一。在某些上下文中,可能只允許這些值的一個子集。預設為 Always。更多資訊:https://kubernetes.club.tw/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy

  • terminationGracePeriodSeconds (int64)

    Pod 優雅終止所需的秒數,可選。在刪除請求中可能會減少。值必須是非負整數。零值表示透過終止訊號立即停止(沒有機會關閉)。如果此值為 nil,將使用預設寬限期。寬限期是指 Pod 中執行的程序收到終止訊號後到程序被終止訊號強制停止之間的時間(以秒為單位)。將此值設定得比程序的預期清理時間更長。預設為 30 秒。

  • activeDeadlineSeconds (int64)

    Pod 相對於 StartTime 在節點上可能處於活動狀態的可選持續時間(以秒為單位),在此之後系統將主動嘗試將其標記為失敗並終止相關容器。值必須是正整數。

  • readinessGates ([]PodReadinessGate)

    原子性:在合併期間將被替換

    如果指定,將評估所有就緒門以確定 Pod 的就緒狀態。當所有容器都就緒且就緒門中指定的所有條件的狀態都等於“True”時,Pod 才就緒。更多資訊:https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates

    PodReadinessGate 包含對 Pod 條件的引用

    • readinessGates.conditionType (string), 必需

      ConditionType 指的是 Pod 條件列表中具有匹配型別的條件。

主機名和名稱解析

  • hostname (string)

    指定 Pod 的主機名。如果未指定,Pod 的主機名將設定為系統定義的值。

  • hostnameOverride (string)

    HostnameOverride 指定了 Pod 自身感知的主機名的顯式覆蓋。此欄位僅指定 Pod 的主機名,不影響其 DNS 記錄。當此欄位設定為非空字串時: - 它優先於 hostnamesubdomain 中設定的值。 - Pod 的主機名將設定為此值。 - setHostnameAsFQDN 必須為 nil 或設定為 false。 - hostNetwork 必須設定為 false。

    此欄位必須是 RFC 1123 中定義的有效 DNS 子域名,且最多包含 64 個字元。需要啟用 HostnameOverride 功能門。

  • setHostnameAsFQDN (boolean)

    如果為 true,Pod 的主機名將被配置為 Pod 的 FQDN,而不是葉名稱(預設值)。在 Linux 容器中,這意味著在核心的主機名欄位中設定 FQDN(struct utsname 的 nodename 欄位)。在 Windows 容器中,這意味著將登錄檔鍵 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 的主機名登錄檔值設定為 FQDN。如果 Pod 沒有 FQDN,則此設定無效。預設為 false。

  • subdomain (string)

    如果指定,完全限定的 Pod 主機名將是“<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>”。如果未指定,Pod 將完全沒有域名。

  • hostAliases ([]HostAlias)

    補丁策略:按鍵 ip 合併

    對映:在合併過程中將保留鍵 ip 上的唯一值

    HostAliases 是主機和 IP 的可選列表,如果指定,將注入到 Pod 的 hosts 檔案中。

    HostAlias 包含 IP 和主機名之間的對映,該對映將作為 Pod 的 hosts 檔案中的一個條目注入。

    • hostAliases.ip (string), 必需

      主機檔案條目的 IP 地址。

    • hostAliases.hostnames ([]string)

      原子性:在合併期間將被替換

      上述 IP 地址的主機名。

  • dnsConfig (PodDNSConfig)

    指定 Pod 的 DNS 引數。此處指定的引數將與基於 DNSPolicy 生成的 DNS 配置合併。

    PodDNSConfig 定義 Pod 的 DNS 引數,以及從 DNSPolicy 生成的引數。

    • dnsConfig.nameservers ([]string)

      原子性:在合併期間將被替換

      DNS 命名伺服器 IP 地址列表。此列表將附加到從 DNSPolicy 生成的基本命名伺服器之後。重複的命名伺服器將被移除。

    • dnsConfig.options ([]PodDNSConfigOption)

      原子性:在合併期間將被替換

      DNS 解析器選項列表。此列表將與從 DNSPolicy 生成的基本選項合併。重複的條目將被移除。Options 中給出的解析選項將覆蓋基本 DNSPolicy 中出現的選項。

      PodDNSConfigOption 定義 Pod 的 DNS 解析器選項。

      • dnsConfig.options.name (string)

        Name 是此 DNS 解析器選項的名稱。必需。

      • dnsConfig.options.value (string)

        Value 是此 DNS 解析器選項的值。

    • dnsConfig.searches ([]string)

      原子性:在合併期間將被替換

      用於主機名查詢的 DNS 搜尋域列表。此列表將附加到從 DNSPolicy 生成的基本搜尋路徑之後。重複的搜尋路徑將被移除。

  • dnsPolicy (string)

    為 Pod 設定 DNS 策略。預設為“ClusterFirst”。有效值是“ClusterFirstWithHostNet”、“ClusterFirst”、“Default”或“None”。DNSConfig 中給出的 DNS 引數將與 DNSPolicy 選擇的策略合併。要將 DNS 選項與 hostNetwork 一起設定,您必須明確將 DNS 策略指定為“ClusterFirstWithHostNet”。

主機名稱空間

  • hostNetwork (boolean)

    為此 Pod 請求主機網路。使用主機的網路名稱空間。使用 HostNetwork 時,您應該指定埠,以便排程器知曉。當 hostNetwork 為 true 時,埠定義中指定的 hostPort 欄位必須與 containerPort 匹配,並且埠定義中未指定的 hostPort 欄位預設為匹配 containerPort。預設為 false。

  • hostPID (boolean)

    使用主機的 PID 名稱空間。可選:預設為 false。

  • hostIPC (boolean)

    使用主機的 IPC 名稱空間。可選:預設為 false。

  • shareProcessNamespace (boolean)

    在 Pod 中的所有容器之間共享一個程序名稱空間。設定此項後,容器將能夠檢視和傳送訊號給同一 Pod 中其他容器的程序,並且每個容器中的第一個程序將不會被分配 PID 1。HostPID 和 ShareProcessNamespace 不能同時設定。可選:預設為 false。

服務帳戶

安全上下文

  • securityContext (PodSecurityContext)

    SecurityContext 包含 Pod 級別的安全屬性和常見容器設定。可選:預設為空。請參閱型別描述以瞭解每個欄位的預設值。

    PodSecurityContext 包含 Pod 級別的安全屬性和常見容器設定。某些欄位也存在於 container.securityContext 中。container.securityContext 的欄位值優先於 PodSecurityContext 的欄位值。

    • securityContext.appArmorProfile (AppArmorProfile)

      appArmorProfile 是此 Pod 中容器使用的 AppArmor 選項。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

      AppArmorProfile 定義 Pod 或容器的 AppArmor 設定。

      • securityContext.appArmorProfile.type (string), 必需

        type 指示將應用哪種 AppArmor 配置檔案。有效選項是:Localhost - 節點上預載入的配置檔案。RuntimeDefault - 容器執行時的預設配置檔案。Unconfined - 不強制執行 AppArmor。

      • securityContext.appArmorProfile.localhostProfile (string)

        localhostProfile 指示應使用節點上載入的配置檔案。該配置檔案必須預先配置在節點上才能工作。必須與載入的配置檔名稱匹配。當且僅當 type 為“Localhost”時必須設定。

    • securityContext.fsGroup (int64)

      適用於 Pod 中所有容器的特殊補充組。某些卷型別允許 Kubelet 更改該卷的所有權,使其歸 Pod 所有

      1. 擁有 GID 將是 FSGroup 2。設定了 setgid 位(在卷中建立的新檔案將由 FSGroup 擁有) 3。許可權位與 rw-rw---- 進行 OR 運算

      如果未設定,Kubelet 將不會修改任何卷的所有權和許可權。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.fsGroupChangePolicy (string)

      fsGroupChangePolicy 定義了在 Pod 內部暴露卷之前更改卷所有權和許可權的行為。此欄位僅適用於支援基於 fsGroup 的所有權(和許可權)的卷型別。它對 secret、configmaps 和 emptydir 等臨時卷型別沒有影響。有效值是“OnRootMismatch”和“Always”。如果未指定,則使用“Always”。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.runAsUser (int64)

      執行容器程序入口點的 UID。如果未指定,則預設為映象元資料中指定的使用者。也可以在 SecurityContext 中設定。如果在 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值對此容器優先。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.runAsNonRoot (boolean)

      指示容器必須以非 root 使用者身份執行。如果為 true,Kubelet 將在執行時驗證映象,確保它不以 UID 0 (root) 身份執行,如果以 root 身份執行,則會啟動容器失敗。如果未設定或為 false,則不執行此類驗證。也可以在 SecurityContext 中設定。如果在 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。

    • securityContext.runAsGroup (int64)

      執行容器程序入口點的 GID。如果未設定,則使用執行時預設值。也可以在 SecurityContext 中設定。如果在 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值對此容器優先。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.seccompProfile (SeccompProfile)

      此 Pod 中容器使用的 seccomp 選項。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

      SeccompProfile 定義 Pod/容器的 seccomp 配置檔案設定。只能設定一個配置檔案源。

      • securityContext.seccompProfile.type (string), 必需

        type 指示將應用哪種 seccomp 配置檔案。有效選項是

        Localhost - 應使用節點上檔案中定義的配置檔案。RuntimeDefault - 應使用容器執行時預設配置檔案。Unconfined - 不應應用任何配置檔案。

      • securityContext.seccompProfile.localhostProfile (string)

        localhostProfile 指示應使用節點上檔案中定義的配置檔案。該配置檔案必須預先配置在節點上才能工作。必須是相對 kubelet 配置的 seccomp 配置檔案位置的遞減路徑。當 type 為“Localhost”時必須設定。對於任何其他型別,不得設定。

    • securityContext.seLinuxChangePolicy (string)

      seLinuxChangePolicy 定義瞭如何將容器的 SELinux 標籤應用於 Pod 使用的所有卷。它對不支援 SELinux 的節點或不支援 SELinux 的卷沒有影響。有效值是“MountOption”和“Recursive”。

      “Recursive”表示容器執行時對所有 Pod 卷中的所有檔案重新標記。這對於大型卷可能很慢,但允許特權和非特權 Pod 在同一節點上共享同一卷。

      “MountOption”使用 -o context 掛載選項掛載所有符合條件的 Pod 卷。這要求共享同一卷的所有 Pod 使用相同的 SELinux 標籤。不可能在特權和非特權 Pod 之間共享同一卷。符合條件的卷是樹內 FibreChannel 和 iSCSI 卷,以及所有 CSI 驅動程式透過在其 CSIDriver 例項中設定 spec.seLinuxMount: true 來宣佈支援 SELinux 的 CSI 卷。其他卷始終遞迴重新標記。“MountOption”值僅在啟用 SELinuxMount 功能門時才允許。

      如果未指定且 SELinuxMount 功能門已啟用,則使用“MountOption”。如果未指定且 SELinuxMount 功能門已停用,則 ReadWriteOncePod 卷使用“MountOption”,所有其他卷使用“Recursive”。

      此欄位僅影響設定了 SELinux 標籤的 Pod,無論是在 PodSecurityContext 中還是在所有容器的 SecurityContext 中。

      所有使用同一卷的 Pod 都應使用相同的 seLinuxChangePolicy,否則某些 Pod 可能會卡在 ContainerCreating 狀態。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.seLinuxOptions (SELinuxOptions)

      要應用於所有容器的 SELinux 上下文。如果未指定,容器執行時將為每個容器分配一個隨機的 SELinux 上下文。也可以在 SecurityContext 中設定。如果在 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值對此容器優先。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

      SELinuxOptions 是要應用於容器的標籤

      • securityContext.seLinuxOptions.level (string)

        Level 是適用於容器的 SELinux 級別標籤。

      • securityContext.seLinuxOptions.role (string)

        Role 是適用於容器的 SELinux 角色標籤。

      • securityContext.seLinuxOptions.type (string)

        Type 是適用於容器的 SELinux 型別標籤。

      • securityContext.seLinuxOptions.user (string)

        User 是適用於容器的 SELinux 使用者標籤。

    • securityContext.supplementalGroups ([]int64)

      原子性:在合併期間將被替換

      應用於每個容器中執行的第一個程序的組列表,除了容器的主 GID 和 fsGroup(如果指定)。如果 SupplementalGroupsPolicy 功能已啟用,則 supplementalGroupsPolicy 欄位決定這些組是容器映象中定義的任何組成員資格的補充還是替代。如果未指定,則不新增額外組,儘管容器映象中定義的組成員資格仍可能使用,具體取決於 supplementalGroupsPolicy 欄位。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.supplementalGroupsPolicy (string)

      定義第一個容器程序的補充組的計算方式。有效值是“Merge”和“Strict”。如果未指定,則使用“Merge”。(Alpha) 使用此欄位需要啟用 SupplementalGroupsPolicy 功能門,並且容器執行時必須實現對該功能的支援。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.sysctls ([]Sysctl)

      原子性:在合併期間將被替換

      Sysctls 包含 Pod 使用的名稱空間 sysctl 列表。具有不支援的 sysctl(由容器執行時)的 Pod 可能無法啟動。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

      Sysctl 定義要設定的核心引數

      • securityContext.sysctls.name (string), 必需

        要設定的屬性名稱

      • securityContext.sysctls.value (string), 必需

        要設定的屬性值

    • securityContext.windowsOptions (WindowsSecurityContextOptions)

      應用於所有容器的 Windows 特定設定。如果未指定,將使用容器 SecurityContext 中的選項。如果在 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。請注意,當 spec.os.name 為 linux 時,不能設定此欄位。

      WindowsSecurityContextOptions 包含 Windows 特定的選項和憑據。

      • securityContext.windowsOptions.gmsaCredentialSpec (string)

        GMSACredentialSpec 是 GMSA 准入 webhook (https://github.com/kubernetes-sigs/windows-gmsa) 內聯由 GMSACredentialSpecName 欄位命名的 GMSA 憑據規範內容的位置。

      • securityContext.windowsOptions.gmsaCredentialSpecName (string)

        GMSACredentialSpecName 是要使用的 GMSA 憑據規範的名稱。

      • securityContext.windowsOptions.hostProcess (boolean)

        HostProcess 決定容器是否應作為“主機程序”容器執行。Pod 的所有容器必須具有相同的有效 HostProcess 值(不允許混合使用 HostProcess 容器和非 HostProcess 容器)。此外,如果 HostProcess 為 true,則 HostNetwork 也必須設定為 true。

      • securityContext.windowsOptions.runAsUserName (string)

        在 Windows 中執行容器程序入口點的使用者名稱。如果未指定,則預設為映象元資料中指定的使用者。也可以在 PodSecurityContext 中設定。如果在 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。

Alpha 級別

  • hostUsers (boolean)

    使用主機的使用者名稱空間。可選:預設為 true。如果設定為 true 或不存在,Pod 將在主機使用者名稱空間中執行,這對於 Pod 需要主機使用者名稱空間才可用的功能(例如使用 CAP_SYS_MODULE 載入核心模組)非常有用。如果設定為 false,則為 Pod 建立新的 userns。將 false 設定為有助於減輕容器逃逸漏洞,甚至允許使用者以 root 身份執行容器,而無需在主機上實際擁有 root 許可權。此欄位是 alpha 級別,並且僅受啟用 UserNamespacesSupport 功能的伺服器支援。

  • resources (ResourceRequirements)

    Resources 是 Pod 中所有容器所需的 CPU 和記憶體資源總量。它僅支援指定“cpu”、“memory”和“hugepages-”資源名稱的 Requests 和 Limits。不支援 ResourceClaims。

    此欄位可實現對整個 Pod 資源分配的精細控制,允許 Pod 中的容器之間共享資源。

    這是一個 alpha 欄位,需要啟用 PodLevelResources 功能門。

    ResourceRequirements 描述了計算資源要求。

    • resources.claims ([]ResourceClaim)

      對映:合併時將保留鍵名上的唯一值

      Claims 列出了此容器使用的資源名稱,這些資源定義在 spec.resourceClaims 中。

      此欄位依賴於 DynamicResourceAllocation 功能門。

      此欄位是不可變的。它只能為容器設定。

      ResourceClaim 引用 PodSpec.ResourceClaims 中的一個條目。

      • resources.claims.name (string), 必需

        Name 必須與使用此欄位的 Pod 的 pod.spec.resourceClaims 中的一個條目的名稱匹配。它使該資源在容器內部可用。

      • resources.claims.request (string)

        Request 是在引用宣告中為請求選擇的名稱。如果為空,則宣告中的所有內容都可用,否則僅此請求的結果可用。

    • resources.limits (map[string]Quantity)

      Limits 描述了允許的最大計算資源量。更多資訊:https://kubernetes.club.tw/docs/concepts/configuration/manage-resources-containers/

    • resources.requests (map[string]Quantity)

      Requests 描述了所需的最小計算資源量。如果容器未指定 Requests,則如果明確指定了 Limits,則預設為 Limits,否則預設為實現定義的值。Requests 不能超過 Limits。更多資訊:https://kubernetes.club.tw/docs/concepts/configuration/manage-resources-containers/

  • resourceClaims ([]PodResourceClaim)

    補丁策略:保留鍵,按鍵 name 合併

    對映:合併時將保留鍵名上的唯一值

    ResourceClaims 定義了在 Pod 允許啟動之前必須分配和保留哪些 ResourceClaims。這些資源將按名稱提供給消耗它們的容器。

    這是一個 alpha 欄位,需要啟用 DynamicResourceAllocation 功能門。

    此欄位是不可變的。

    *PodResourceClaim 引用一個且只有一個 ResourceClaim,可以直接引用,也可以透過命名 ResourceClaimTemplate 來引用,然後該模板將轉換為 Pod 的 ResourceClaim。

    它為其新增一個名稱,以在 Pod 內部唯一標識 ResourceClaim。需要訪問 ResourceClaim 的容器使用此名稱引用它。*

    • resourceClaims.name (string), 必需

      Name 在 Pod 內部唯一標識此資源宣告。這必須是一個 DNS_LABEL。

    • resourceClaims.resourceClaimName (string)

      ResourceClaimName 是與此 Pod 位於同一名稱空間中的 ResourceClaim 物件的名稱。

      ResourceClaimName 和 ResourceClaimTemplateName 中必須且只能設定一個。

    • resourceClaims.resourceClaimTemplateName (string)

      ResourceClaimTemplateName 是與此 Pod 位於同一名稱空間中的 ResourceClaimTemplate 物件的名稱。

      該模板將用於建立一個新的 ResourceClaim,該 ResourceClaim 將繫結到此 Pod。當此 Pod 被刪除時,ResourceClaim 也會被刪除。Pod 名稱和資源名稱,連同生成的元件,將用於為 ResourceClaim 形成一個唯一的名稱,該名稱將記錄在 pod.status.resourceClaimStatuses 中。

      此欄位是不可變的,並且在建立 ResourceClaim 後,控制平面不會對相應的 ResourceClaim 進行任何更改。

      ResourceClaimName 和 ResourceClaimTemplateName 中必須且只能設定一個。

  • schedulingGates ([]PodSchedulingGate)

    補丁策略:在鍵 name 上合併

    對映:合併時將保留鍵名上的唯一值

    SchedulingGates 是一個不透明的值列表,如果指定,將阻止 Pod 的排程。如果 schedulingGates 不為空,則 Pod 將保持在 SchedulingGated 狀態,排程器不會嘗試排程 Pod。

    SchedulingGates 只能在 Pod 建立時設定,之後才能刪除。

    PodSchedulingGate 與 Pod 相關聯,以守護其排程。

    • schedulingGates.name (string), 必需

      排程門的名稱。每個排程門必須具有唯一的名稱欄位。

已棄用

  • serviceAccount (string)

    DeprecatedServiceAccount 是 ServiceAccountName 的已棄用別名。已棄用:請改用 serviceAccountName。

容器

您希望在 Pod 中執行的單個應用程式容器。


  • name (string),必需

    以 DNS_LABEL 指定的容器名稱。Pod 中的每個容器必須具有唯一的名稱 (DNS_LABEL)。無法更新。

映象

入口點

  • command ([]string)

    原子性:在合併期間將被替換

    入口點陣列。不在 shell 中執行。如果未提供,則使用容器映象的 ENTRYPOINT。變數引用 $(VAR_NAME) 使用容器的環境進行擴充套件。如果變數無法解析,則輸入字串中的引用將保持不變。雙 $$ 減少為單個 $,這允許轉義 $(VAR_NAME) 語法:即,“$$(VAR_NAME)”將生成字串字面值“$(VAR_NAME)”。轉義引用永遠不會擴充套件,無論變數是否存在。無法更新。更多資訊:https://kubernetes.club.tw/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

  • args ([]string)

    原子性:在合併期間將被替換

    入口點的引數。如果未提供,則使用容器映象的 CMD。變數引用 $(VAR_NAME) 使用容器的環境進行擴充套件。如果變數無法解析,則輸入字串中的引用將保持不變。雙 $$ 減少為單個 $,這允許轉義 $(VAR_NAME) 語法:即,“$$(VAR_NAME)”將生成字串字面值“$(VAR_NAME)”。轉義引用永遠不會擴充套件,無論變數是否存在。無法更新。更多資訊:https://kubernetes.club.tw/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

  • workingDir (string)

    容器的工作目錄。如果未指定,將使用容器執行時的預設值,該值可能已在容器映象中配置。無法更新。

  • ports ([]ContainerPort)

    補丁策略:按鍵 containerPort 合併

    對映:在合併過程中將保留鍵 containerPort, protocol 上的唯一值

    要從容器公開的埠列表。此處未指定埠**不會**阻止該埠被公開。容器內部監聽預設“0.0.0.0”地址的任何埠都將可從網路訪問。使用戰略性合併補丁修改此陣列可能會損壞資料。有關更多資訊,請參閱 https://github.com/kubernetes/kubernetes/issues/108255。無法更新。

    ContainerPort 表示單個容器中的網路埠。

    • ports.containerPort (int32), 必需

      要在 Pod 的 IP 地址上公開的埠號。這必須是一個有效的埠號,0 < x < 65536。

    • ports.hostIP (string)

      外部埠要繫結的主機 IP。

    • ports.hostPort (int32)

      要在主機上公開的埠號。如果指定,這必須是一個有效的埠號,0 < x < 65536。如果指定了 HostNetwork,則此埠必須與 ContainerPort 匹配。大多數容器不需要此埠。

    • ports.name (string)

      如果指定,這必須是 IANA_SVC_NAME,並且在 Pod 中是唯一的。Pod 中的每個命名埠必須具有唯一的名稱。可由服務引用的埠名稱。

    • ports.protocol (string)

      埠協議。必須是 UDP、TCP 或 SCTP。預設為“TCP”。

環境變數

  • env ([]EnvVar)

    補丁策略:在鍵 name 上合併

    對映:合併時將保留鍵名上的唯一值

    要在容器中設定的環境變數列表。無法更新。

    EnvVar 表示容器中存在的環境變數。

    • env.name (string), 必填

      環境變數的名稱。可包含除“=”以外的任何可列印 ASCII 字元。

    • env.value (string)

      變數引用 $(VAR_NAME) 將使用容器中先前定義的環境變數和任何服務環境變數進行擴充套件。如果變數無法解析,輸入字串中的引用將保持不變。雙 $$ 會減少為單個 $,這允許轉義 $(VAR_NAME) 語法:即 "$$(VAR_NAME)" 將生成字串字面值 "$(VAR_NAME)"。無論變數是否存在,轉義引用都不會被擴充套件。預設為 ""。

    • env.valueFrom (EnvVarSource)

      環境變數值的來源。如果值不為空,則不能使用。

      EnvVarSource 表示 EnvVar 值的來源。

      • env.valueFrom.configMapKeyRef (ConfigMapKeySelector)

        選擇 ConfigMap 的鍵。

        從 ConfigMap 中選擇一個鍵。

        • env.valueFrom.configMapKeyRef.key (string), 必填

          要選擇的鍵。

        • env.valueFrom.configMapKeyRef.name (string)

          引用物件的名稱。此欄位實際上是必需的,但由於向後相容性,允許為空。此型別例項中為空的值幾乎肯定是錯誤的。更多資訊:https://kubernetes.club.tw/docs/concepts/overview/working-with-objects/names/#names

        • env.valueFrom.configMapKeyRef.optional (boolean)

          指定 ConfigMap 或其鍵是否必須定義。

      • env.valueFrom.fieldRef (ObjectFieldSelector)

        選擇 pod 的一個欄位:支援 metadata.name、metadata.namespace、metadata.labels['<KEY>']metadata.annotations['<KEY>']、spec.nodeName、spec.serviceAccountName、status.hostIP、status.podIP、status.podIPs。

      • env.valueFrom.fileKeyRef (FileKeySelector)

        FileKeyRef 選擇 env 檔案的鍵。需要啟用 EnvFiles 功能門。

        FileKeySelector 選擇 env 檔案的鍵。

        • env.valueFrom.fileKeyRef.key (string), 必填

          env 檔案中的鍵。無效的鍵將阻止 pod 啟動。源中定義的鍵可以由除“=”之外的任何可列印 ASCII 字元組成。在 EnvFiles 功能門的 Alpha 階段,鍵大小限制為 128 個字元。

        • env.valueFrom.fileKeyRef.path (string), 必填

          卷中用於選擇檔案的路徑。必須是相對路徑,不能包含“..”路徑或以“..”開頭。

        • env.valueFrom.fileKeyRef.volumeName (string), 必填

          包含 env 檔案的卷掛載的名稱。

        • env.valueFrom.fileKeyRef.optional (boolean)

          指定檔案或其鍵是否必須定義。如果檔案或鍵不存在,則不釋出環境變數。如果 optional 設定為 true 且指定的鍵不存在,則不會在 Pod 的容器中設定環境變數。

          如果 optional 設定為 false 且指定的鍵不存在,則在 Pod 建立期間將返回錯誤。

      • env.valueFrom.resourceFieldRef (ResourceFieldSelector)

        選擇容器的資源:目前僅支援資源限制和請求(limits.cpu、limits.memory、limits.ephemeral-storage、requests.cpu、requests.memory 和 requests.ephemeral-storage)。

      • env.valueFrom.secretKeyRef (SecretKeySelector)

        選擇 pod 名稱空間中 Secret 的鍵。

        SecretKeySelector 選擇 Secret 的鍵。

        • env.valueFrom.secretKeyRef.key (string), 必填

          要從 Secret 中選擇的鍵。必須是有效的 Secret 鍵。

        • env.valueFrom.secretKeyRef.name (string)

          引用物件的名稱。此欄位實際上是必需的,但由於向後相容性,允許為空。此型別例項中為空的值幾乎肯定是錯誤的。更多資訊:https://kubernetes.club.tw/docs/concepts/overview/working-with-objects/names/#names

        • env.valueFrom.secretKeyRef.optional (boolean)

          指定 Secret 或其鍵是否必須定義。

  • envFrom ([]EnvFromSource)

    原子性:在合併期間將被替換

    用於在容器中填充環境變數的源列表。源中定義的鍵可以由除“=”之外的任何可列印 ASCII 字元組成。當鍵存在於多個源中時,與最後一個源關聯的值將優先。由具有重複鍵的 Env 定義的值將優先。無法更新。

    EnvFromSource 表示一組 ConfigMap 或 Secret 的源。

    • envFrom.configMapRef (ConfigMapEnvSource)

      要從中選擇的 ConfigMap。

      *ConfigMapEnvSource 選擇一個 ConfigMap 來填充環境變數。

      目標 ConfigMap 的 Data 欄位內容將表示鍵值對作為環境變數。*

    • envFrom.prefix (string)

      可選文字,新增到每個環境變數名稱的前面。可包含除“=”以外的任何可列印 ASCII 字元。

    • envFrom.secretRef (SecretEnvSource)

      要從中選擇的 Secret。

      *SecretEnvSource 選擇一個 Secret 來填充環境變數。

      目標 Secret 的 Data 欄位內容將表示鍵值對作為環境變數。*

  • volumeMounts ([]VolumeMount)

    補丁策略:按鍵 mountPath 合併

    對映:合併時將保留 mountPath 鍵上的唯一值

    要掛載到容器檔案系統中的 Pod 卷。無法更新。

    VolumeMount 描述了容器內卷的掛載。

    • volumeMounts.mountPath (string), 必填

      卷應掛載到容器內的路徑。不能包含 ':'。

    • volumeMounts.name (string), 必填

      這必須與 Volume 的名稱匹配。

    • volumeMounts.mountPropagation (string)

      mountPropagation 決定了掛載如何從主機傳播到容器以及反向傳播。未設定時,使用 MountPropagationNone。此欄位在 1.10 中是 Beta 版。當 RecursiveReadOnly 設定為 IfPossible 或 Enabled 時,MountPropagation 必須為 None 或未指定(預設為 None)。

    • volumeMounts.readOnly (boolean)

      如果為 true,則掛載為只讀;否則(false 或未指定)為讀寫。預設為 false。

    • volumeMounts.recursiveReadOnly (string)

      RecursiveReadOnly 指定只讀掛載是否應遞迴處理。

      如果 ReadOnly 為 false,此欄位無意義且必須未指定。

      如果 ReadOnly 為 true,並且此欄位設定為 Disabled,則掛載不會遞迴只讀。如果此欄位設定為 IfPossible,則如果容器執行時支援,則掛載會遞迴只讀。如果此欄位設定為 Enabled,則如果容器執行時支援,則掛載會遞迴只讀,否則 Pod 將不會啟動,並將生成錯誤指示原因。

      如果此欄位設定為 IfPossible 或 Enabled,MountPropagation 必須設定為 None(或未指定,預設為 None)。

      如果未指定此欄位,則將其視為 Disabled 的等效項。

    • volumeMounts.subPath (string)

      容器卷應從其掛載的卷內路徑。預設為 ""(卷的根)。

    • volumeMounts.subPathExpr (string)

      容器卷應從中掛載的卷內的擴充套件路徑。行為類似於 SubPath,但環境變數引用 $(VAR_NAME) 使用容器的環境進行擴充套件。預設為 ""(卷的根)。SubPathExpr 和 SubPath 互斥。

  • volumeDevices ([]VolumeDevice)

    補丁策略:按鍵 devicePath 合併

    對映:合併時將保留 devicePath 鍵上的唯一值

    volumeDevices 是容器要使用的塊裝置列表。

    volumeDevice 描述了容器內原始塊裝置的對映。

    • volumeDevices.devicePath (string), 必填

      devicePath 是裝置將對映到的容器內的路徑。

    • volumeDevices.name (string), 必填

      name 必須與 pod 中 persistentVolumeClaim 的名稱匹配。

資源

  • resources (ResourceRequirements)

    此容器所需的計算資源。無法更新。更多資訊:https://kubernetes.club.tw/docs/concepts/configuration/manage-resources-containers/

    ResourceRequirements 描述了計算資源要求。

    • resources.claims ([]ResourceClaim)

      對映:合併時將保留鍵名上的唯一值

      Claims 列出了此容器使用的資源名稱,這些資源定義在 spec.resourceClaims 中。

      此欄位依賴於 DynamicResourceAllocation 功能門。

      此欄位是不可變的。它只能為容器設定。

      ResourceClaim 引用 PodSpec.ResourceClaims 中的一個條目。

      • resources.claims.name (string), 必需

        Name 必須與使用此欄位的 Pod 的 pod.spec.resourceClaims 中的一個條目的名稱匹配。它使該資源在容器內部可用。

      • resources.claims.request (string)

        Request 是在引用宣告中為請求選擇的名稱。如果為空,則宣告中的所有內容都可用,否則僅此請求的結果可用。

    • resources.limits (map[string]Quantity)

      Limits 描述了允許的最大計算資源量。更多資訊:https://kubernetes.club.tw/docs/concepts/configuration/manage-resources-containers/

    • resources.requests (map[string]Quantity)

      Requests 描述了所需的最小計算資源量。如果容器未指定 Requests,則如果明確指定了 Limits,則預設為 Limits,否則預設為實現定義的值。Requests 不能超過 Limits。更多資訊:https://kubernetes.club.tw/docs/concepts/configuration/manage-resources-containers/

  • resizePolicy ([]ContainerResizePolicy)

    原子性:在合併期間將被替換

    容器的資源調整策略。

    ContainerResizePolicy 表示容器的資源調整策略。

    • resizePolicy.resourceName (string), 必填

      此資源調整策略適用的資源名稱。支援的值:cpu、memory。

    • resizePolicy.restartPolicy (string), 必填

      當指定資源調整大小時應用的重啟策略。如果未指定,預設為 NotRequired。

生命週期

  • lifecycle (Lifecycle)

    管理系統應響應容器生命週期事件而採取的操作。無法更新。

    Lifecycle 描述了管理系統應響應容器生命週期事件而採取的操作。對於 PostStart 和 PreStop 生命週期處理程式,管理容器會阻塞,直到操作完成,除非容器程序失敗,在這種情況下處理程式被中止。

    • lifecycle.postStart (LifecycleHandler)

      PostStart 在容器建立後立即呼叫。如果處理程式失敗,容器將根據其重啟策略終止並重啟。容器的其他管理會阻塞,直到鉤子完成。更多資訊:https://kubernetes.club.tw/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

    • lifecycle.preStop (LifecycleHandler)

      PreStop 在容器因 API 請求或管理事件(例如活性/啟動探測失敗、搶佔、資源爭用等)而終止之前立即呼叫。如果容器崩潰或退出,則不呼叫處理程式。Pod 的終止寬限期倒計時在 PreStop 鉤子執行之前開始。無論處理程式的結果如何,容器最終都將在 Pod 的終止寬限期內終止(除非被終結器延遲)。容器的其他管理會阻塞,直到鉤子完成或直到終止寬限期屆滿。更多資訊:https://kubernetes.club.tw/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

    • lifecycle.stopSignal (string)

      StopSignal 定義了當容器停止時將傳送到容器的訊號。如果未指定,則預設值由所使用的容器執行時定義。StopSignal 只能為 .spec.os.name 不為空的 Pod 設定。

  • terminationMessagePath (string)

    可選:容器終止訊息將寫入的檔案在容器檔案系統中的掛載路徑。寫入的訊息旨在簡要說明最終狀態,例如斷言失敗訊息。如果大於 4096 位元組,將被節點截斷。所有容器的總訊息長度將限制為 12KB。預設為 /dev/termination-log。無法更新。

  • terminationMessagePolicy (string)

    指示應如何填充終止訊息。檔案將使用 terminationMessagePath 的內容來填充容器在成功和失敗時的狀態訊息。FallbackToLogsOnError 將在終止訊息檔案為空且容器以錯誤退出時使用容器日誌輸出的最後一部分。日誌輸出限制為 2048 位元組或 80 行,以較小者為準。預設為 File。無法更新。

  • livenessProbe (Probe)

    容器活性的定期探測。如果探測失敗,容器將重啟。無法更新。更多資訊:https://kubernetes.club.tw/docs/concepts/workloads/pods/pod-lifecycle#container-probes

  • readinessProbe (Probe)

    容器服務就緒性的定期探測。如果探測失敗,容器將從服務端點中移除。無法更新。更多資訊:https://kubernetes.club.tw/docs/concepts/workloads/pods/pod-lifecycle#container-probes

  • startupProbe (Probe)

    StartupProbe 表示 Pod 已成功初始化。如果指定,在成功完成之前不會執行其他探測。如果此探測失敗,Pod 將重啟,就像 livenessProbe 失敗一樣。這可用於在 Pod 生命週期開始時提供不同的探測引數(此時可能需要很長時間才能載入資料或預熱快取),而不是在穩定狀態操作期間。無法更新。更多資訊:https://kubernetes.club.tw/docs/concepts/workloads/pods/pod-lifecycle#container-probes

  • restartPolicy (string)

    RestartPolicy 定義了 Pod 中單個容器的重啟行為。這將覆蓋 Pod 級別的重啟策略。當未指定此欄位時,重啟行為由 Pod 的重啟策略和容器型別定義。此外,將 init 容器的 RestartPolicy 設定為 "Always" 將產生以下效果:此 init 容器將不斷重啟,直到所有常規容器終止。一旦所有常規容器完成,所有具有 restartPolicy "Always" 的 init 容器都將被關閉。此生命週期與普通 init 容器不同,通常被稱為“邊車”容器。儘管此 init 容器仍按 init 容器順序啟動,但它不會等待容器完成,然後才繼續下一個 init 容器。相反,下一個 init 容器在此 init 容器啟動後立即開始,或者在任何 startupProbe 成功完成後立即開始。

  • restartPolicyRules ([]ContainerRestartRule)

    原子性:在合併期間將被替換

    表示用於確定容器退出時是否應重啟的規則列表。規則按順序評估。一旦某個規則匹配容器退出條件,其餘規則將被忽略。如果沒有規則匹配容器退出條件,則由容器級別的重啟策略決定容器是否重啟。規則的約束: - 最多允許 20 條規則。 - 規則可以有相同的操作。 - 驗證中不禁止相同的規則。指定規則時,容器必須顯式設定 RestartPolicy,即使它與 Pod 的 RestartPolicy 匹配。

    ContainerRestartRule 描述瞭如何處理容器退出。

    • restartPolicyRules.action (string), 必填

      指定如果滿足要求,容器退出時採取的操作。唯一可能的值是“Restart”以重啟容器。

    • restartPolicyRules.exitCodes (ContainerRestartRuleOnExitCodes)

      表示容器退出時要檢查的退出程式碼。

      ContainerRestartRuleOnExitCodes 描述了根據容器退出程式碼處理退出容器的條件。

      • restartPolicyRules.exitCodes.operator (string), 必填

        表示容器退出程式碼與指定值之間的關係。可能的值為: - In:如果容器退出程式碼在指定值集中,則滿足要求。

        • NotIn:如果容器退出程式碼不在指定值集中,則滿足要求。
      • restartPolicyRules.exitCodes.values ([]int32)

        Set: 合併時將保留唯一值

        指定要檢查容器退出程式碼的值集。最多允許 255 個元素。

安全上下文

  • securityContext (SecurityContext)

    SecurityContext 定義了容器應執行的安全選項。如果設定,SecurityContext 的欄位將覆蓋 PodSecurityContext 的等效欄位。更多資訊:https://kubernetes.club.tw/docs/tasks/configure-pod-container/security-context/

    SecurityContext 包含將應用於容器的安全配置。SecurityContext 和 PodSecurityContext 中都存在一些欄位。當兩者都設定時,SecurityContext 中的值優先。

    • securityContext.allowPrivilegeEscalation (boolean)

      AllowPrivilegeEscalation 控制程序是否可以獲得比其父程序更多的許可權。此布林值直接控制是否在容器程序上設定 no_new_privs 標誌。當容器滿足以下條件時,AllowPrivilegeEscalation 始終為 true: 1) 以特權模式執行 2) 具有 CAP_SYS_ADMIN 請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.appArmorProfile (AppArmorProfile)

      appArmorProfile 是此容器要使用的 AppArmor 選項。如果設定,此配置檔案將覆蓋 Pod 的 appArmorProfile。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

      AppArmorProfile 定義 Pod 或容器的 AppArmor 設定。

      • securityContext.appArmorProfile.type (string), 必需

        type 指示將應用哪種 AppArmor 配置檔案。有效選項是:Localhost - 節點上預載入的配置檔案。RuntimeDefault - 容器執行時的預設配置檔案。Unconfined - 不強制執行 AppArmor。

      • securityContext.appArmorProfile.localhostProfile (string)

        localhostProfile 指示應使用節點上載入的配置檔案。該配置檔案必須預先配置在節點上才能工作。必須與載入的配置檔名稱匹配。當且僅當 type 為“Localhost”時必須設定。

    • securityContext.capabilities (Capabilities)

      執行容器時要新增/刪除的功能。預設為容器執行時授予的預設功能集。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

      從執行中的容器新增和刪除 POSIX 功能。

      • securityContext.capabilities.add ([]string)

        原子性:在合併期間將被替換

        新增的功能

      • securityContext.capabilities.drop ([]string)

        原子性:在合併期間將被替換

        刪除的功能

    • securityContext.procMount (string)

      procMount 表示容器要使用的 proc 掛載型別。預設值為 Default,它使用容器執行時預設的只讀路徑和掩碼路徑。這需要啟用 ProcMountType 功能標誌。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.privileged (boolean)

      以特權模式執行容器。特權容器中的程序本質上與主機上的 root 等效。預設為 false。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.readOnlyRootFilesystem (boolean)

      此容器是否具有隻讀根檔案系統。預設值為 false。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.runAsUser (int64)

      執行容器程序入口點的 UID。如果未指定,預設為映象元資料中指定的使用者。也可在 PodSecurityContext 中設定。如果 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.runAsNonRoot (boolean)

      指示容器必須以非 root 使用者身份執行。如果為 true,Kubelet 將在執行時驗證映象以確保它不會以 UID 0 (root) 身份執行,如果以 root 身份執行,則會啟動容器失敗。如果未設定或為 false,則不執行此類驗證。也可在 PodSecurityContext 中設定。如果 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。

    • securityContext.runAsGroup (int64)

      執行容器程序入口點的 GID。如果未設定,則使用執行時預設值。也可在 PodSecurityContext 中設定。如果 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.seLinuxOptions (SELinuxOptions)

      應用於容器的 SELinux 上下文。如果未指定,容器執行時將為每個容器分配一個隨機的 SELinux 上下文。也可在 PodSecurityContext 中設定。如果 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

      SELinuxOptions 是要應用於容器的標籤

      • securityContext.seLinuxOptions.level (string)

        Level 是適用於容器的 SELinux 級別標籤。

      • securityContext.seLinuxOptions.role (string)

        Role 是適用於容器的 SELinux 角色標籤。

      • securityContext.seLinuxOptions.type (string)

        Type 是適用於容器的 SELinux 型別標籤。

      • securityContext.seLinuxOptions.user (string)

        User 是適用於容器的 SELinux 使用者標籤。

    • securityContext.seccompProfile (SeccompProfile)

      此容器要使用的 seccomp 選項。如果在 Pod 和容器級別都提供了 seccomp 選項,則容器選項將覆蓋 Pod 選項。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

      SeccompProfile 定義 Pod/容器的 seccomp 配置檔案設定。只能設定一個配置檔案源。

      • securityContext.seccompProfile.type (string), 必需

        type 指示將應用哪種 seccomp 配置檔案。有效選項是

        Localhost - 應使用節點上檔案中定義的配置檔案。RuntimeDefault - 應使用容器執行時預設配置檔案。Unconfined - 不應應用任何配置檔案。

      • securityContext.seccompProfile.localhostProfile (string)

        localhostProfile 指示應使用節點上檔案中定義的配置檔案。該配置檔案必須預先配置在節點上才能工作。必須是相對 kubelet 配置的 seccomp 配置檔案位置的遞減路徑。當 type 為“Localhost”時必須設定。對於任何其他型別,不得設定。

    • securityContext.windowsOptions (WindowsSecurityContextOptions)

      應用於所有容器的 Windows 特定設定。如果未指定,將使用 PodSecurityContext 中的選項。如果 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。請注意,當 spec.os.name 為 linux 時,不能設定此欄位。

      WindowsSecurityContextOptions 包含 Windows 特定的選項和憑據。

      • securityContext.windowsOptions.gmsaCredentialSpec (string)

        GMSACredentialSpec 是 GMSA 准入 webhook (https://github.com/kubernetes-sigs/windows-gmsa) 內聯由 GMSACredentialSpecName 欄位命名的 GMSA 憑據規範內容的位置。

      • securityContext.windowsOptions.gmsaCredentialSpecName (string)

        GMSACredentialSpecName 是要使用的 GMSA 憑據規範的名稱。

      • securityContext.windowsOptions.hostProcess (boolean)

        HostProcess 決定容器是否應作為“主機程序”容器執行。Pod 的所有容器必須具有相同的有效 HostProcess 值(不允許混合使用 HostProcess 容器和非 HostProcess 容器)。此外,如果 HostProcess 為 true,則 HostNetwork 也必須設定為 true。

      • securityContext.windowsOptions.runAsUserName (string)

        在 Windows 中執行容器程序入口點的使用者名稱。如果未指定,則預設為映象元資料中指定的使用者。也可以在 PodSecurityContext 中設定。如果在 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。

除錯

  • stdin (boolean)

    此容器是否應在容器執行時中為 stdin 分配緩衝區。如果未設定此項,容器中對 stdin 的讀取將始終導致 EOF。預設為 false。

  • stdinOnce (boolean)

    容器執行時是否應在單個 attach 開啟 stdin 通道後關閉它。當 stdin 為 true 時,stdin 流將跨多個 attach 會話保持開啟狀態。如果 stdinOnce 設定為 true,則 stdin 在容器啟動時開啟,在第一個客戶端連線到 stdin 之前為空,然後保持開啟並接受資料直到客戶端斷開連線,此時 stdin 關閉並保持關閉直到容器重啟。如果此標誌為 false,則從 stdin 讀取的容器程序將永遠不會收到 EOF。預設為 false。

  • tty (boolean)

    此容器是否應為自己分配 TTY,也需要將“stdin”設定為 true。預設為 false。

臨時容器

EphemeralContainer 是一種臨時容器,您可以將其新增到現有 Pod 中以進行使用者啟動的活動,例如除錯。臨時容器沒有資源或排程保證,當它們退出或 Pod 被移除或重啟時,它們不會被重啟。如果臨時容器導致 Pod 超出其資源分配,kubelet 可能會驅逐 Pod。

要新增臨時容器,請使用現有 Pod 的 ephemeralcontainers 子資源。臨時容器不能被移除或重啟。


  • name (string),必需

    以 DNS_LABEL 形式指定的臨時容器名稱。此名稱在所有容器、init 容器和臨時容器中必須是唯一的。

  • targetContainerName (string)

    如果設定,此臨時容器所針對的 PodSpec 中容器的名稱。臨時容器將在此容器的名稱空間(IPC、PID 等)中執行。如果未設定,則臨時容器使用 Pod 規範中配置的名稱空間。

    容器執行時必須實現對此功能的支援。如果執行時不支援名稱空間目標,則設定此欄位的結果是未定義的。

映象

入口點

  • command ([]string)

    原子性:在合併期間將被替換

    入口點陣列。不在 shell 中執行。如果未提供,則使用映象的 ENTRYPOINT。變數引用 $(VAR_NAME) 使用容器的環境進行擴充套件。如果變數無法解析,輸入字串中的引用將保持不變。雙 $$ 會減少為單個 $,這允許轉義 $(VAR_NAME) 語法:即 "$$(VAR_NAME)" 將生成字串字面值 "$(VAR_NAME)"。無論變數是否存在,轉義引用都不會被擴充套件。無法更新。更多資訊:https://kubernetes.club.tw/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

  • args ([]string)

    原子性:在合併期間將被替換

    入口點的引數。如果未提供,則使用映象的 CMD。變數引用 $(VAR_NAME) 使用容器的環境進行擴充套件。如果變數無法解析,輸入字串中的引用將保持不變。雙 $$ 會減少為單個 $,這允許轉義 $(VAR_NAME) 語法:即 "$$(VAR_NAME)" 將生成字串字面值 "$(VAR_NAME)"。無論變數是否存在,轉義引用都不會被擴充套件。無法更新。更多資訊:https://kubernetes.club.tw/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

  • workingDir (string)

    容器的工作目錄。如果未指定,將使用容器執行時的預設值,該值可能已在容器映象中配置。無法更新。

環境變數

  • env ([]EnvVar)

    補丁策略:在鍵 name 上合併

    對映:合併時將保留鍵名上的唯一值

    要在容器中設定的環境變數列表。無法更新。

    EnvVar 表示容器中存在的環境變數。

    • env.name (string), 必填

      環境變數的名稱。可包含除“=”以外的任何可列印 ASCII 字元。

    • env.value (string)

      變數引用 $(VAR_NAME) 將使用容器中先前定義的環境變數和任何服務環境變數進行擴充套件。如果變數無法解析,輸入字串中的引用將保持不變。雙 $$ 會減少為單個 $,這允許轉義 $(VAR_NAME) 語法:即 "$$(VAR_NAME)" 將生成字串字面值 "$(VAR_NAME)"。無論變數是否存在,轉義引用都不會被擴充套件。預設為 ""。

    • env.valueFrom (EnvVarSource)

      環境變數值的來源。如果值不為空,則不能使用。

      EnvVarSource 表示 EnvVar 值的來源。

      • env.valueFrom.configMapKeyRef (ConfigMapKeySelector)

        選擇 ConfigMap 的鍵。

        從 ConfigMap 中選擇一個鍵。

        • env.valueFrom.configMapKeyRef.key (string), 必填

          要選擇的鍵。

        • env.valueFrom.configMapKeyRef.name (string)

          引用物件的名稱。此欄位實際上是必需的,但由於向後相容性,允許為空。此型別例項中為空的值幾乎肯定是錯誤的。更多資訊:https://kubernetes.club.tw/docs/concepts/overview/working-with-objects/names/#names

        • env.valueFrom.configMapKeyRef.optional (boolean)

          指定 ConfigMap 或其鍵是否必須定義。

      • env.valueFrom.fieldRef (ObjectFieldSelector)

        選擇 pod 的一個欄位:支援 metadata.name、metadata.namespace、metadata.labels['<KEY>']metadata.annotations['<KEY>']、spec.nodeName、spec.serviceAccountName、status.hostIP、status.podIP、status.podIPs。

      • env.valueFrom.fileKeyRef (FileKeySelector)

        FileKeyRef 選擇 env 檔案的鍵。需要啟用 EnvFiles 功能門。

        FileKeySelector 選擇 env 檔案的鍵。

        • env.valueFrom.fileKeyRef.key (string), 必填

          env 檔案中的鍵。無效的鍵將阻止 pod 啟動。源中定義的鍵可以由除“=”之外的任何可列印 ASCII 字元組成。在 EnvFiles 功能門的 Alpha 階段,鍵大小限制為 128 個字元。

        • env.valueFrom.fileKeyRef.path (string), 必填

          卷中用於選擇檔案的路徑。必須是相對路徑,不能包含“..”路徑或以“..”開頭。

        • env.valueFrom.fileKeyRef.volumeName (string), 必填

          包含 env 檔案的卷掛載的名稱。

        • env.valueFrom.fileKeyRef.optional (boolean)

          指定檔案或其鍵是否必須定義。如果檔案或鍵不存在,則不釋出環境變數。如果 optional 設定為 true 且指定的鍵不存在,則不會在 Pod 的容器中設定環境變數。

          如果 optional 設定為 false 且指定的鍵不存在,則在 Pod 建立期間將返回錯誤。

      • env.valueFrom.resourceFieldRef (ResourceFieldSelector)

        選擇容器的資源:目前僅支援資源限制和請求(limits.cpu、limits.memory、limits.ephemeral-storage、requests.cpu、requests.memory 和 requests.ephemeral-storage)。

      • env.valueFrom.secretKeyRef (SecretKeySelector)

        選擇 pod 名稱空間中 Secret 的鍵。

        SecretKeySelector 選擇 Secret 的鍵。

        • env.valueFrom.secretKeyRef.key (string), 必填

          要從 Secret 中選擇的鍵。必須是有效的 Secret 鍵。

        • env.valueFrom.secretKeyRef.name (string)

          引用物件的名稱。此欄位實際上是必需的,但由於向後相容性,允許為空。此型別例項中為空的值幾乎肯定是錯誤的。更多資訊:https://kubernetes.club.tw/docs/concepts/overview/working-with-objects/names/#names

        • env.valueFrom.secretKeyRef.optional (boolean)

          指定 Secret 或其鍵是否必須定義。

  • envFrom ([]EnvFromSource)

    原子性:在合併期間將被替換

    用於在容器中填充環境變數的源列表。源中定義的鍵可以由除“=”之外的任何可列印 ASCII 字元組成。當鍵存在於多個源中時,與最後一個源關聯的值將優先。由具有重複鍵的 Env 定義的值將優先。無法更新。

    EnvFromSource 表示一組 ConfigMap 或 Secret 的源。

    • envFrom.configMapRef (ConfigMapEnvSource)

      要從中選擇的 ConfigMap。

      *ConfigMapEnvSource 選擇一個 ConfigMap 來填充環境變數。

      目標 ConfigMap 的 Data 欄位內容將表示鍵值對作為環境變數。*

    • envFrom.prefix (string)

      可選文字,新增到每個環境變數名稱的前面。可包含除“=”以外的任何可列印 ASCII 字元。

    • envFrom.secretRef (SecretEnvSource)

      要從中選擇的 Secret。

      *SecretEnvSource 選擇一個 Secret 來填充環境變數。

      目標 Secret 的 Data 欄位內容將表示鍵值對作為環境變數。*

  • volumeMounts ([]VolumeMount)

    補丁策略:按鍵 mountPath 合併

    對映:合併時將保留 mountPath 鍵上的唯一值

    要掛載到容器檔案系統中的 Pod 卷。臨時容器不允許 Subpath 掛載。無法更新。

    VolumeMount 描述了容器內卷的掛載。

    • volumeMounts.mountPath (string), 必填

      卷應掛載到容器內的路徑。不能包含 ':'。

    • volumeMounts.name (string), 必填

      這必須與 Volume 的名稱匹配。

    • volumeMounts.mountPropagation (string)

      mountPropagation 決定了掛載如何從主機傳播到容器以及反向傳播。未設定時,使用 MountPropagationNone。此欄位在 1.10 中是 Beta 版。當 RecursiveReadOnly 設定為 IfPossible 或 Enabled 時,MountPropagation 必須為 None 或未指定(預設為 None)。

    • volumeMounts.readOnly (boolean)

      如果為 true,則掛載為只讀;否則(false 或未指定)為讀寫。預設為 false。

    • volumeMounts.recursiveReadOnly (string)

      RecursiveReadOnly 指定只讀掛載是否應遞迴處理。

      如果 ReadOnly 為 false,此欄位無意義且必須未指定。

      如果 ReadOnly 為 true,並且此欄位設定為 Disabled,則掛載不會遞迴只讀。如果此欄位設定為 IfPossible,則如果容器執行時支援,則掛載會遞迴只讀。如果此欄位設定為 Enabled,則如果容器執行時支援,則掛載會遞迴只讀,否則 Pod 將不會啟動,並將生成錯誤指示原因。

      如果此欄位設定為 IfPossible 或 Enabled,MountPropagation 必須設定為 None(或未指定,預設為 None)。

      如果未指定此欄位,則將其視為 Disabled 的等效項。

    • volumeMounts.subPath (string)

      容器卷應從其掛載的卷內路徑。預設為 ""(卷的根)。

    • volumeMounts.subPathExpr (string)

      容器卷應從中掛載的卷內的擴充套件路徑。行為類似於 SubPath,但環境變數引用 $(VAR_NAME) 使用容器的環境進行擴充套件。預設為 ""(卷的根)。SubPathExpr 和 SubPath 互斥。

  • volumeDevices ([]VolumeDevice)

    補丁策略:按鍵 devicePath 合併

    對映:合併時將保留 devicePath 鍵上的唯一值

    volumeDevices 是容器要使用的塊裝置列表。

    volumeDevice 描述了容器內原始塊裝置的對映。

    • volumeDevices.devicePath (string), 必填

      devicePath 是裝置將對映到的容器內的路徑。

    • volumeDevices.name (string), 必填

      name 必須與 pod 中 persistentVolumeClaim 的名稱匹配。

資源

  • resizePolicy ([]ContainerResizePolicy)

    原子性:在合併期間將被替換

    容器的資源調整策略。

    ContainerResizePolicy 表示容器的資源調整策略。

    • resizePolicy.resourceName (string), 必填

      此資源調整策略適用的資源名稱。支援的值:cpu、memory。

    • resizePolicy.restartPolicy (string), 必填

      當指定資源調整大小時應用的重啟策略。如果未指定,預設為 NotRequired。

生命週期

  • terminationMessagePath (string)

    可選:容器終止訊息將寫入的檔案在容器檔案系統中的掛載路徑。寫入的訊息旨在簡要說明最終狀態,例如斷言失敗訊息。如果大於 4096 位元組,將被節點截斷。所有容器的總訊息長度將限制為 12KB。預設為 /dev/termination-log。無法更新。

  • terminationMessagePolicy (string)

    指示應如何填充終止訊息。檔案將使用 terminationMessagePath 的內容來填充容器在成功和失敗時的狀態訊息。FallbackToLogsOnError 將在終止訊息檔案為空且容器以錯誤退出時使用容器日誌輸出的最後一部分。日誌輸出限制為 2048 位元組或 80 行,以較小者為準。預設為 File。無法更新。

  • restartPolicy (string)

    容器的重啟策略,用於管理 Pod 中每個容器的重啟行為。您不能在臨時容器上設定此欄位。

  • restartPolicyRules ([]ContainerRestartRule)

    原子性:在合併期間將被替換

    表示用於確定容器退出時是否應重啟的規則列表。您不能在臨時容器上設定此欄位。

    ContainerRestartRule 描述瞭如何處理容器退出。

    • restartPolicyRules.action (string), 必填

      指定如果滿足要求,容器退出時採取的操作。唯一可能的值是“Restart”以重啟容器。

    • restartPolicyRules.exitCodes (ContainerRestartRuleOnExitCodes)

      表示容器退出時要檢查的退出程式碼。

      ContainerRestartRuleOnExitCodes 描述了根據容器退出程式碼處理退出容器的條件。

      • restartPolicyRules.exitCodes.operator (string), 必填

        表示容器退出程式碼與指定值之間的關係。可能的值為: - In:如果容器退出程式碼在指定值集中,則滿足要求。

        • NotIn:如果容器退出程式碼不在指定值集中,則滿足要求。
      • restartPolicyRules.exitCodes.values ([]int32)

        Set: 合併時將保留唯一值

        指定要檢查容器退出程式碼的值集。最多允許 255 個元素。

除錯

  • stdin (boolean)

    此容器是否應在容器執行時中為 stdin 分配緩衝區。如果未設定此項,容器中對 stdin 的讀取將始終導致 EOF。預設為 false。

  • stdinOnce (boolean)

    容器執行時是否應在單個 attach 開啟 stdin 通道後關閉它。當 stdin 為 true 時,stdin 流將跨多個 attach 會話保持開啟狀態。如果 stdinOnce 設定為 true,則 stdin 在容器啟動時開啟,在第一個客戶端連線到 stdin 之前為空,然後保持開啟並接受資料直到客戶端斷開連線,此時 stdin 關閉並保持關閉直到容器重啟。如果此標誌為 false,則從 stdin 讀取的容器程序將永遠不會收到 EOF。預設為 false。

  • tty (boolean)

    此容器是否應為自己分配 TTY,也需要將“stdin”設定為 true。預設為 false。

安全上下文

  • securityContext (SecurityContext)

    可選:SecurityContext 定義了臨時容器應執行的安全選項。如果設定,SecurityContext 的欄位將覆蓋 PodSecurityContext 的等效欄位。

    SecurityContext 包含將應用於容器的安全配置。SecurityContext 和 PodSecurityContext 中都存在一些欄位。當兩者都設定時,SecurityContext 中的值優先。

    • securityContext.allowPrivilegeEscalation (boolean)

      AllowPrivilegeEscalation 控制程序是否可以獲得比其父程序更多的許可權。此布林值直接控制是否在容器程序上設定 no_new_privs 標誌。當容器滿足以下條件時,AllowPrivilegeEscalation 始終為 true: 1) 以特權模式執行 2) 具有 CAP_SYS_ADMIN 請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.appArmorProfile (AppArmorProfile)

      appArmorProfile 是此容器要使用的 AppArmor 選項。如果設定,此配置檔案將覆蓋 Pod 的 appArmorProfile。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

      AppArmorProfile 定義 Pod 或容器的 AppArmor 設定。

      • securityContext.appArmorProfile.type (string), 必需

        type 指示將應用哪種 AppArmor 配置檔案。有效選項是:Localhost - 節點上預載入的配置檔案。RuntimeDefault - 容器執行時的預設配置檔案。Unconfined - 不強制執行 AppArmor。

      • securityContext.appArmorProfile.localhostProfile (string)

        localhostProfile 指示應使用節點上載入的配置檔案。該配置檔案必須預先配置在節點上才能工作。必須與載入的配置檔名稱匹配。當且僅當 type 為“Localhost”時必須設定。

    • securityContext.capabilities (Capabilities)

      執行容器時要新增/刪除的功能。預設為容器執行時授予的預設功能集。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

      從執行中的容器新增和刪除 POSIX 功能。

      • securityContext.capabilities.add ([]string)

        原子性:在合併期間將被替換

        新增的功能

      • securityContext.capabilities.drop ([]string)

        原子性:在合併期間將被替換

        刪除的功能

    • securityContext.procMount (string)

      procMount 表示容器要使用的 proc 掛載型別。預設值為 Default,它使用容器執行時預設的只讀路徑和掩碼路徑。這需要啟用 ProcMountType 功能標誌。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.privileged (boolean)

      以特權模式執行容器。特權容器中的程序本質上與主機上的 root 等效。預設為 false。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.readOnlyRootFilesystem (boolean)

      此容器是否具有隻讀根檔案系統。預設值為 false。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.runAsUser (int64)

      執行容器程序入口點的 UID。如果未指定,預設為映象元資料中指定的使用者。也可在 PodSecurityContext 中設定。如果 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.runAsNonRoot (boolean)

      指示容器必須以非 root 使用者身份執行。如果為 true,Kubelet 將在執行時驗證映象以確保它不會以 UID 0 (root) 身份執行,如果以 root 身份執行,則會啟動容器失敗。如果未設定或為 false,則不執行此類驗證。也可在 PodSecurityContext 中設定。如果 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。

    • securityContext.runAsGroup (int64)

      執行容器程序入口點的 GID。如果未設定,則使用執行時預設值。也可在 PodSecurityContext 中設定。如果 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

    • securityContext.seLinuxOptions (SELinuxOptions)

      應用於容器的 SELinux 上下文。如果未指定,容器執行時將為每個容器分配一個隨機的 SELinux 上下文。也可在 PodSecurityContext 中設定。如果 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

      SELinuxOptions 是要應用於容器的標籤

      • securityContext.seLinuxOptions.level (string)

        Level 是適用於容器的 SELinux 級別標籤。

      • securityContext.seLinuxOptions.role (string)

        Role 是適用於容器的 SELinux 角色標籤。

      • securityContext.seLinuxOptions.type (string)

        Type 是適用於容器的 SELinux 型別標籤。

      • securityContext.seLinuxOptions.user (string)

        User 是適用於容器的 SELinux 使用者標籤。

    • securityContext.seccompProfile (SeccompProfile)

      此容器要使用的 seccomp 選項。如果在 Pod 和容器級別都提供了 seccomp 選項,則容器選項將覆蓋 Pod 選項。請注意,當 spec.os.name 為 windows 時,不能設定此欄位。

      SeccompProfile 定義 Pod/容器的 seccomp 配置檔案設定。只能設定一個配置檔案源。

      • securityContext.seccompProfile.type (string), 必需

        type 指示將應用哪種 seccomp 配置檔案。有效選項是

        Localhost - 應使用節點上檔案中定義的配置檔案。RuntimeDefault - 應使用容器執行時預設配置檔案。Unconfined - 不應應用任何配置檔案。

      • securityContext.seccompProfile.localhostProfile (string)

        localhostProfile 指示應使用節點上檔案中定義的配置檔案。該配置檔案必須預先配置在節點上才能工作。必須是相對 kubelet 配置的 seccomp 配置檔案位置的遞減路徑。當 type 為“Localhost”時必須設定。對於任何其他型別,不得設定。

    • securityContext.windowsOptions (WindowsSecurityContextOptions)

      應用於所有容器的 Windows 特定設定。如果未指定,將使用 PodSecurityContext 中的選項。如果 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。請注意,當 spec.os.name 為 linux 時,不能設定此欄位。

      WindowsSecurityContextOptions 包含 Windows 特定的選項和憑據。

      • securityContext.windowsOptions.gmsaCredentialSpec (string)

        GMSACredentialSpec 是 GMSA 准入 webhook (https://github.com/kubernetes-sigs/windows-gmsa) 內聯由 GMSACredentialSpecName 欄位命名的 GMSA 憑據規範內容的位置。

      • securityContext.windowsOptions.gmsaCredentialSpecName (string)

        GMSACredentialSpecName 是要使用的 GMSA 憑據規範的名稱。

      • securityContext.windowsOptions.hostProcess (boolean)

        HostProcess 決定容器是否應作為“主機程序”容器執行。Pod 的所有容器必須具有相同的有效 HostProcess 值(不允許混合使用 HostProcess 容器和非 HostProcess 容器)。此外,如果 HostProcess 為 true,則 HostNetwork 也必須設定為 true。

      • securityContext.windowsOptions.runAsUserName (string)

        在 Windows 中執行容器程序入口點的使用者名稱。如果未指定,則預設為映象元資料中指定的使用者。也可以在 PodSecurityContext 中設定。如果在 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。

不允許

  • ports ([]ContainerPort)

    補丁策略:按鍵 containerPort 合併

    對映:在合併過程中將保留鍵 containerPort, protocol 上的唯一值

    臨時容器不允許埠。

    ContainerPort 表示單個容器中的網路埠。

    • ports.containerPort (int32), 必需

      要在 Pod 的 IP 地址上公開的埠號。這必須是一個有效的埠號,0 < x < 65536。

    • ports.hostIP (string)

      外部埠要繫結的主機 IP。

    • ports.hostPort (int32)

      要在主機上公開的埠號。如果指定,這必須是一個有效的埠號,0 < x < 65536。如果指定了 HostNetwork,則此埠必須與 ContainerPort 匹配。大多數容器不需要此埠。

    • ports.name (string)

      如果指定,這必須是 IANA_SVC_NAME,並且在 Pod 中是唯一的。Pod 中的每個命名埠必須具有唯一的名稱。可由服務引用的埠名稱。

    • ports.protocol (string)

      埠協議。必須是 UDP、TCP 或 SCTP。預設為“TCP”。

  • resources (ResourceRequirements)

    臨時容器不允許資源。臨時容器使用已分配給 Pod 的備用資源。

    ResourceRequirements 描述了計算資源要求。

    • resources.claims ([]ResourceClaim)

      對映:合併時將保留鍵名上的唯一值

      Claims 列出了此容器使用的資源名稱,這些資源定義在 spec.resourceClaims 中。

      此欄位依賴於 DynamicResourceAllocation 功能門。

      此欄位是不可變的。它只能為容器設定。

      ResourceClaim 引用 PodSpec.ResourceClaims 中的一個條目。

      • resources.claims.name (string), 必需

        Name 必須與使用此欄位的 Pod 的 pod.spec.resourceClaims 中的一個條目的名稱匹配。它使該資源在容器內部可用。

      • resources.claims.request (string)

        Request 是在引用宣告中為請求選擇的名稱。如果為空,則宣告中的所有內容都可用,否則僅此請求的結果可用。

    • resources.limits (map[string]Quantity)

      Limits 描述了允許的最大計算資源量。更多資訊:https://kubernetes.club.tw/docs/concepts/configuration/manage-resources-containers/

    • resources.requests (map[string]Quantity)

      Requests 描述了所需的最小計算資源量。如果容器未指定 Requests,則如果明確指定了 Limits,則預設為 Limits,否則預設為實現定義的值。Requests 不能超過 Limits。更多資訊:https://kubernetes.club.tw/docs/concepts/configuration/manage-resources-containers/

  • lifecycle (Lifecycle)

    臨時容器不允許生命週期。

    Lifecycle 描述了管理系統應響應容器生命週期事件而採取的操作。對於 PostStart 和 PreStop 生命週期處理程式,管理容器會阻塞,直到操作完成,除非容器程序失敗,在這種情況下處理程式被中止。

    • lifecycle.postStart (LifecycleHandler)

      PostStart 在容器建立後立即呼叫。如果處理程式失敗,容器將根據其重啟策略終止並重啟。容器的其他管理會阻塞,直到鉤子完成。更多資訊:https://kubernetes.club.tw/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

    • lifecycle.preStop (LifecycleHandler)

      PreStop 在容器因 API 請求或管理事件(例如活性/啟動探測失敗、搶佔、資源爭用等)而終止之前立即呼叫。如果容器崩潰或退出,則不呼叫處理程式。Pod 的終止寬限期倒計時在 PreStop 鉤子執行之前開始。無論處理程式的結果如何,容器最終都將在 Pod 的終止寬限期內終止(除非被終結器延遲)。容器的其他管理會阻塞,直到鉤子完成或直到終止寬限期屆滿。更多資訊:https://kubernetes.club.tw/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

    • lifecycle.stopSignal (string)

      StopSignal 定義了當容器停止時將傳送到容器的訊號。如果未指定,則預設值由所使用的容器執行時定義。StopSignal 只能為 .spec.os.name 不為空的 Pod 設定。

  • livenessProbe (Probe)

    臨時容器不允許探測。

  • readinessProbe (Probe)

    臨時容器不允許探測。

  • startupProbe (Probe)

    臨時容器不允許探測。

生命週期處理程式

LifecycleHandler 定義了在生命週期鉤子中應採取的特定操作。除了 TCPSocket 之外,必須且只能指定其中一個欄位。


  • exec (ExecAction)

    Exec 指定要在容器中執行的命令。

    ExecAction 描述了一個“在容器中執行”操作。

    • exec.command ([]string)

      原子性:在合併期間將被替換

      Command 是要在容器內執行的命令列,命令的工作目錄是容器檔案系統中的根目錄 ('/')。命令只是 exec'd,它不在 shell 中執行,因此傳統的 shell 指令('|' 等)將不起作用。要使用 shell,您需要顯式呼叫該 shell。退出狀態 0 被視為存活/健康,非零被視為不健康。

  • httpGet (HTTPGetAction)

    HTTPGet 指定要執行的 HTTP GET 請求。

    HTTPGetAction 描述了一個基於 HTTP Get 請求的操作。

    • httpGet.port (IntOrString), 必填

      要訪問容器上的埠名稱或編號。編號必須在 1 到 65535 之間。名稱必須是 IANA_SVC_NAME。

      IntOrString 是一種可以包含 int32 或字串的型別。在 JSON 或 YAML 編組和解組中使用時,它會生成或使用內部型別。這允許您例如有一個 JSON 欄位可以接受名稱或數字。

    • httpGet.host (string)

      要連線的主機名,預設為 Pod IP。您可能希望在 httpHeaders 中設定“Host”。

    • httpGet.httpHeaders ([]HTTPHeader)

      原子性:在合併期間將被替換

      要在請求中設定的自定義標頭。HTTP 允許重複標頭。

      HTTPHeader 描述了要在 HTTP 探測中使用的自定義標頭。

      • httpGet.httpHeaders.name (string), 必填

        標頭欄位名稱。這將在輸出時規範化,因此大小寫不同的名稱將被理解為相同的標頭。

      • httpGet.httpHeaders.value (string), 必填

        標頭欄位值。

    • httpGet.path (string)

      要在 HTTP 伺服器上訪問的路徑。

    • httpGet.scheme (string)

      用於連線主機的方案。預設為 HTTP。

  • sleep (SleepAction)

    Sleep 表示容器應休眠的持續時間。

    SleepAction 描述了一個“休眠”操作。

    • sleep.seconds (int64), 必填

      Seconds 是要休眠的秒數。

  • tcpSocket (TCPSocketAction)

    已廢棄。TCPSocket 不支援作為 LifecycleHandler,並保留用於向後相容性。此欄位沒有驗證,指定時生命週期鉤子將在執行時失敗。

    TCPSocketAction 描述了一個基於開啟套接字的操作。

    • tcpSocket.port (IntOrString), 必填

      要訪問容器上的埠編號或名稱。編號必須在 1 到 65535 之間。名稱必須是 IANA_SVC_NAME。

      IntOrString 是一種可以包含 int32 或字串的型別。在 JSON 或 YAML 編組和解組中使用時,它會生成或使用內部型別。這允許您例如有一個 JSON 欄位可以接受名稱或數字。

    • tcpSocket.host (string)

      可選:要連線的主機名,預設為 Pod IP。

節點親和性

節點親和性是一組節點親和性排程規則。


  • preferredDuringSchedulingIgnoredDuringExecution ([]PreferredSchedulingTerm)

    原子性:在合併期間將被替換

    排程器將優先將 Pod 排程到滿足此欄位指定的親和性表示式的節點,但它可能會選擇一個違反一個或多個表示式的節點。最優先的節點是權重總和最大的節點,即對於滿足所有排程要求(資源請求、requiredDuringScheduling 親和性表示式等)的每個節點,透過遍歷此欄位的元素並在此節點與相應的 matchExpressions 匹配時將“weight”新增到總和中來計算總和;總和最高的節點是最優先的。

    空的 preferred scheduling term 匹配所有隱式權重為 0 的物件(即,它是一個無操作)。null 的 preferred scheduling term 不匹配任何物件(即,也是一個無操作)。

    • preferredDuringSchedulingIgnoredDuringExecution.preference (NodeSelectorTerm), 必填

      節點選擇器項,與相應的權重關聯。

      空或空的節點選擇器項不匹配任何物件。它們的要求是 AND 關係。TopologySelectorTerm 型別實現了 NodeSelectorTerm 的子集。

      • preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions ([]NodeSelectorRequirement)

        原子性:在合併期間將被替換

        透過節點標籤列出的節點選擇器要求列表。

      • preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields ([]NodeSelectorRequirement)

        原子性:在合併期間將被替換

        透過節點欄位列出的節點選擇器要求列表。

    • preferredDuringSchedulingIgnoredDuringExecution.weight (int32), 必填

      與匹配相應 nodeSelectorTerm 相關的權重,範圍為 1-100。

  • requiredDuringSchedulingIgnoredDuringExecution (NodeSelector)

    如果在排程時未滿足此欄位指定的親和性要求,則 Pod 將不會排程到該節點。如果此欄位指定的親和性要求在 Pod 執行期間的某個時間點不再滿足(例如,由於更新),系統可能會或可能不會嘗試最終將 Pod 從其節點驅逐。

    節點選擇器表示一個或多個標籤查詢在一組節點上的結果的並集;也就是說,它表示節點選擇器項所表示的選擇器的 OR 運算。

    • requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms ([]NodeSelectorTerm), 必填

      原子性:在合併期間將被替換

      必需。節點選擇器項的列表。這些項是 OR 關係。

      空或空的節點選擇器項不匹配任何物件。它們的要求是 AND 關係。TopologySelectorTerm 型別實現了 NodeSelectorTerm 的子集。

      • requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)

        原子性:在合併期間將被替換

        透過節點標籤列出的節點選擇器要求列表。

      • requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)

        原子性:在合併期間將被替換

        透過節點欄位列出的節點選擇器要求列表。

Pod 親和性

Pod 親和性是一組 Pod 間親和性排程規則。


  • preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)

    原子性:在合併期間將被替換

    排程器將優先將 Pod 排程到滿足此欄位指定的親和性表示式的節點,但它可能會選擇一個違反一個或多個表示式的節點。最優先的節點是權重總和最大的節點,即對於滿足所有排程要求(資源請求、requiredDuringScheduling 親和性表示式等)的每個節點,透過遍歷此欄位的元素並在該節點包含與相應 podAffinityTerm 匹配的 Pod 時將“weight”新增到總和中來計算總和;總和最高的節點是最優先的。

    所有匹配的 WeightedPodAffinityTerm 欄位的權重按節點累加,以找到最優先的節點。

    • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm), 必填

      必填。一個 Pod 親和性項,與相應的權重關聯。

      定義一組 Pod(即與給定名稱空間相關的 labelSelector 匹配的那些 Pod),此 Pod 應與它們共同定位(親和性)或不共同定位(反親和性),其中共同定位定義為執行在與執行該組 Pod 的任何節點上的 label 鍵為 的值匹配的節點上。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey (string), 必填

        此 Pod 應與指定名稱空間中匹配 labelSelector 的 Pod 共同定位(親和性)或不共同定位(反親和性),其中共同定位定義為執行在與執行任何選定 Pod 的任何節點上的鍵為 topologyKey 的標籤值匹配的節點上。不允許空的 topologyKey。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector (LabelSelector)

        對一組資源(在此情況下是 Pod)的標籤查詢。如果為空,此 PodAffinityTerm 不匹配任何 Pod。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.matchLabelKeys ([]string)

        原子性:在合併期間將被替換

        MatchLabelKeys 是一組 Pod 標籤鍵,用於選擇將考慮哪些 Pod。這些鍵用於從傳入 Pod 標籤中查詢值,這些鍵值標籤與 labelSelector 合併為 key in (value),以選擇一組現有 Pod,這些 Pod 將被考慮用於傳入 Pod 的 Pod (反)親和性。傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。在 matchLabelKeys 和 labelSelector 中禁止存在相同的鍵。此外,當 labelSelector 未設定時,不能設定 matchLabelKeys。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys ([]string)

        原子性:在合併期間將被替換

        MismatchLabelKeys 是一組 Pod 標籤鍵,用於選擇將考慮哪些 Pod。這些鍵用於從傳入 Pod 標籤中查詢值,這些鍵值標籤與 labelSelector 合併為 key notin (value),以選擇一組現有 Pod,這些 Pod 將被考慮用於傳入 Pod 的 Pod (反)親和性。傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。在 mismatchLabelKeys 和 labelSelector 中禁止存在相同的鍵。此外,當 labelSelector 未設定時,不能設定 mismatchLabelKeys。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)

        對該術語適用的名稱空間集合的標籤查詢。該術語適用於此欄位選擇的名稱空間和名稱空間欄位中列出的名稱空間的並集。空選擇器和空或空的名稱空間列表意味著“此 Pod 的名稱空間”。空選擇器 ({}) 匹配所有名稱空間。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)

        原子性:在合併期間將被替換

        namespaces 指定了該術語適用的名稱空間名稱的靜態列表。該術語適用於此欄位中列出的名稱空間和 namespaceSelector 選擇的名稱空間的並集。空或空的名稱空間列表和空的 namespaceSelector 意味著“此 Pod 的名稱空間”。

    • preferredDuringSchedulingIgnoredDuringExecution.weight (int32), 必填

      與匹配相應 podAffinityTerm 相關的權重,範圍為 1-100。

  • requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)

    原子性:在合併期間將被替換

    如果在排程時未滿足此欄位指定的親和性要求,則 Pod 將不會排程到該節點。如果此欄位指定的親和性要求在 Pod 執行期間的某個時間點不再滿足(例如,由於 Pod 標籤更新),系統可能會或可能不會嘗試最終將 Pod 從其節點驅逐。當存在多個元素時,與每個 podAffinityTerm 對應的節點列表將進行交集,即必須滿足所有術語。

    定義一組 Pod(即與給定名稱空間相關的 labelSelector 匹配的那些 Pod),此 Pod 應與它們共同定位(親和性)或不共同定位(反親和性),其中共同定位定義為執行在與執行該組 Pod 的任何節點上的 label 鍵為 的值匹配的節點上。

    • requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string), 必填

      此 Pod 應與指定名稱空間中匹配 labelSelector 的 Pod 共同定位(親和性)或不共同定位(反親和性),其中共同定位定義為執行在與執行任何選定 Pod 的任何節點上的鍵為 topologyKey 的標籤值匹配的節點上。不允許空的 topologyKey。

    • requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)

      對一組資源(在此情況下是 Pod)的標籤查詢。如果為空,此 PodAffinityTerm 不匹配任何 Pod。

    • requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys ([]string)

      原子性:在合併期間將被替換

      MatchLabelKeys 是一組 Pod 標籤鍵,用於選擇將考慮哪些 Pod。這些鍵用於從傳入 Pod 標籤中查詢值,這些鍵值標籤與 labelSelector 合併為 key in (value),以選擇一組現有 Pod,這些 Pod 將被考慮用於傳入 Pod 的 Pod (反)親和性。傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。在 matchLabelKeys 和 labelSelector 中禁止存在相同的鍵。此外,當 labelSelector 未設定時,不能設定 matchLabelKeys。

    • requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys ([]string)

      原子性:在合併期間將被替換

      MismatchLabelKeys 是一組 Pod 標籤鍵,用於選擇將考慮哪些 Pod。這些鍵用於從傳入 Pod 標籤中查詢值,這些鍵值標籤與 labelSelector 合併為 key notin (value),以選擇一組現有 Pod,這些 Pod 將被考慮用於傳入 Pod 的 Pod (反)親和性。傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。在 mismatchLabelKeys 和 labelSelector 中禁止存在相同的鍵。此外,當 labelSelector 未設定時,不能設定 mismatchLabelKeys。

    • requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)

      對該術語適用的名稱空間集合的標籤查詢。該術語適用於此欄位選擇的名稱空間和名稱空間欄位中列出的名稱空間的並集。空選擇器和空或空的名稱空間列表意味著“此 Pod 的名稱空間”。空選擇器 ({}) 匹配所有名稱空間。

    • requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)

      原子性:在合併期間將被替換

      namespaces 指定了該術語適用的名稱空間名稱的靜態列表。該術語適用於此欄位中列出的名稱空間和 namespaceSelector 選擇的名稱空間的並集。空或空的名稱空間列表和空的 namespaceSelector 意味著“此 Pod 的名稱空間”。

Pod 反親和性

Pod 反親和性是一組 Pod 間反親和性排程規則。


  • preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)

    原子性:在合併期間將被替換

    排程器將優先將 Pod 排程到滿足此欄位指定的反親和性表示式的節點,但它可能會選擇一個違反一個或多個表示式的節點。最優先的節點是權重總和最大的節點,即對於滿足所有排程要求(資源請求、requiredDuringScheduling 反親和性表示式等)的每個節點,透過遍歷此欄位的元素並在該節點包含與相應 podAffinityTerm 匹配的 Pod 時從總和中減去“weight”來計算總和;總和最高的節點是最優先的。

    所有匹配的 WeightedPodAffinityTerm 欄位的權重按節點累加,以找到最優先的節點。

    • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm), 必填

      必填。一個 Pod 親和性項,與相應的權重關聯。

      定義一組 Pod(即與給定名稱空間相關的 labelSelector 匹配的那些 Pod),此 Pod 應與它們共同定位(親和性)或不共同定位(反親和性),其中共同定位定義為執行在與執行該組 Pod 的任何節點上的 label 鍵為 的值匹配的節點上。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey (string), 必填

        此 Pod 應與指定名稱空間中匹配 labelSelector 的 Pod 共同定位(親和性)或不共同定位(反親和性),其中共同定位定義為執行在與執行任何選定 Pod 的任何節點上的鍵為 topologyKey 的標籤值匹配的節點上。不允許空的 topologyKey。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector (LabelSelector)

        對一組資源(在此情況下是 Pod)的標籤查詢。如果為空,此 PodAffinityTerm 不匹配任何 Pod。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.matchLabelKeys ([]string)

        原子性:在合併期間將被替換

        MatchLabelKeys 是一組 Pod 標籤鍵,用於選擇將考慮哪些 Pod。這些鍵用於從傳入 Pod 標籤中查詢值,這些鍵值標籤與 labelSelector 合併為 key in (value),以選擇一組現有 Pod,這些 Pod 將被考慮用於傳入 Pod 的 Pod (反)親和性。傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。在 matchLabelKeys 和 labelSelector 中禁止存在相同的鍵。此外,當 labelSelector 未設定時,不能設定 matchLabelKeys。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys ([]string)

        原子性:在合併期間將被替換

        MismatchLabelKeys 是一組 Pod 標籤鍵,用於選擇將考慮哪些 Pod。這些鍵用於從傳入 Pod 標籤中查詢值,這些鍵值標籤與 labelSelector 合併為 key notin (value),以選擇一組現有 Pod,這些 Pod 將被考慮用於傳入 Pod 的 Pod (反)親和性。傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。在 mismatchLabelKeys 和 labelSelector 中禁止存在相同的鍵。此外,當 labelSelector 未設定時,不能設定 mismatchLabelKeys。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)

        對該術語適用的名稱空間集合的標籤查詢。該術語適用於此欄位選擇的名稱空間和名稱空間欄位中列出的名稱空間的並集。空選擇器和空或空的名稱空間列表意味著“此 Pod 的名稱空間”。空選擇器 ({}) 匹配所有名稱空間。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)

        原子性:在合併期間將被替換

        namespaces 指定了該術語適用的名稱空間名稱的靜態列表。該術語適用於此欄位中列出的名稱空間和 namespaceSelector 選擇的名稱空間的並集。空或空的名稱空間列表和空的 namespaceSelector 意味著“此 Pod 的名稱空間”。

    • preferredDuringSchedulingIgnoredDuringExecution.weight (int32), 必填

      與匹配相應 podAffinityTerm 相關的權重,範圍為 1-100。

  • requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)

    原子性:在合併期間將被替換

    如果在排程時未滿足此欄位指定的反親和性要求,則 Pod 將不會排程到該節點。如果此欄位指定的反親和性要求在 Pod 執行期間的某個時間點不再滿足(例如,由於 Pod 標籤更新),系統可能會或可能不會嘗試最終將 Pod 從其節點驅逐。當存在多個元素時,與每個 podAffinityTerm 對應的節點列表將進行交集,即必須滿足所有術語。

    定義一組 Pod(即與給定名稱空間相關的 labelSelector 匹配的那些 Pod),此 Pod 應與它們共同定位(親和性)或不共同定位(反親和性),其中共同定位定義為執行在與執行該組 Pod 的任何節點上的 label 鍵為 的值匹配的節點上。

    • requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string), 必填

      此 Pod 應與指定名稱空間中匹配 labelSelector 的 Pod 共同定位(親和性)或不共同定位(反親和性),其中共同定位定義為執行在與執行任何選定 Pod 的任何節點上的鍵為 topologyKey 的標籤值匹配的節點上。不允許空的 topologyKey。

    • requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)

      對一組資源(在此情況下是 Pod)的標籤查詢。如果為空,此 PodAffinityTerm 不匹配任何 Pod。

    • requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys ([]string)

      原子性:在合併期間將被替換

      MatchLabelKeys 是一組 Pod 標籤鍵,用於選擇將考慮哪些 Pod。這些鍵用於從傳入 Pod 標籤中查詢值,這些鍵值標籤與 labelSelector 合併為 key in (value),以選擇一組現有 Pod,這些 Pod 將被考慮用於傳入 Pod 的 Pod (反)親和性。傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。在 matchLabelKeys 和 labelSelector 中禁止存在相同的鍵。此外,當 labelSelector 未設定時,不能設定 matchLabelKeys。

    • requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys ([]string)

      原子性:在合併期間將被替換

      MismatchLabelKeys 是一組 Pod 標籤鍵,用於選擇將考慮哪些 Pod。這些鍵用於從傳入 Pod 標籤中查詢值,這些鍵值標籤與 labelSelector 合併為 key notin (value),以選擇一組現有 Pod,這些 Pod 將被考慮用於傳入 Pod 的 Pod (反)親和性。傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。在 mismatchLabelKeys 和 labelSelector 中禁止存在相同的鍵。此外,當 labelSelector 未設定時,不能設定 mismatchLabelKeys。

    • requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)

      對該術語適用的名稱空間集合的標籤查詢。該術語適用於此欄位選擇的名稱空間和名稱空間欄位中列出的名稱空間的並集。空選擇器和空或空的名稱空間列表意味著“此 Pod 的名稱空間”。空選擇器 ({}) 匹配所有名稱空間。

    • requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)

      原子性:在合併期間將被替換

      namespaces 指定了該術語適用的名稱空間名稱的靜態列表。該術語適用於此欄位中列出的名稱空間和 namespaceSelector 選擇的名稱空間的並集。空或空的名稱空間列表和空的 namespaceSelector 意味著“此 Pod 的名稱空間”。

探測

Probe 描述了對容器執行的健康檢查,以確定它是否存活或準備好接收流量。


  • exec (ExecAction)

    Exec 指定要在容器中執行的命令。

    ExecAction 描述了一個“在容器中執行”操作。

    • exec.command ([]string)

      原子性:在合併期間將被替換

      Command 是要在容器內執行的命令列,命令的工作目錄是容器檔案系統中的根目錄 ('/')。命令只是 exec'd,它不在 shell 中執行,因此傳統的 shell 指令('|' 等)將不起作用。要使用 shell,您需要顯式呼叫該 shell。退出狀態 0 被視為存活/健康,非零被視為不健康。

  • httpGet (HTTPGetAction)

    HTTPGet 指定要執行的 HTTP GET 請求。

    HTTPGetAction 描述了一個基於 HTTP Get 請求的操作。

    • httpGet.port (IntOrString), 必填

      要訪問容器上的埠名稱或編號。編號必須在 1 到 65535 之間。名稱必須是 IANA_SVC_NAME。

      IntOrString 是一種可以包含 int32 或字串的型別。在 JSON 或 YAML 編組和解組中使用時,它會生成或使用內部型別。這允許您例如有一個 JSON 欄位可以接受名稱或數字。

    • httpGet.host (string)

      要連線的主機名,預設為 Pod IP。您可能希望在 httpHeaders 中設定“Host”。

    • httpGet.httpHeaders ([]HTTPHeader)

      原子性:在合併期間將被替換

      要在請求中設定的自定義標頭。HTTP 允許重複標頭。

      HTTPHeader 描述了要在 HTTP 探測中使用的自定義標頭。

      • httpGet.httpHeaders.name (string), 必填

        標頭欄位名稱。這將在輸出時規範化,因此大小寫不同的名稱將被理解為相同的標頭。

      • httpGet.httpHeaders.value (string), 必填

        標頭欄位值。

    • httpGet.path (string)

      要在 HTTP 伺服器上訪問的路徑。

    • httpGet.scheme (string)

      用於連線主機的方案。預設為 HTTP。

  • tcpSocket (TCPSocketAction)

    TCPSocket 指定了到 TCP 埠的連線。

    TCPSocketAction 描述了一個基於開啟套接字的操作。

    • tcpSocket.port (IntOrString), 必填

      要訪問容器上的埠編號或名稱。編號必須在 1 到 65535 之間。名稱必須是 IANA_SVC_NAME。

      IntOrString 是一種可以包含 int32 或字串的型別。在 JSON 或 YAML 編組和解組中使用時,它會生成或使用內部型別。這允許您例如有一個 JSON 欄位可以接受名稱或數字。

    • tcpSocket.host (string)

      可選:要連線的主機名,預設為 Pod IP。

  • initialDelaySeconds (int32)

    容器啟動後多久(秒)才開始活性探測。更多資訊:https://kubernetes.club.tw/docs/concepts/workloads/pods/pod-lifecycle#container-probes

  • terminationGracePeriodSeconds (int64)

    可選的持續時間(秒),表示 Pod 在探測失敗時需要優雅終止。寬限期是指 Pod 中執行的程序被髮送終止訊號後,到程序被殺訊號強制停止之間的時間(秒)。將此值設定得長於程序的預期清理時間。如果此值為 nil,將使用 Pod 的 terminationGracePeriodSeconds。否則,此值將覆蓋 Pod 規範提供的值。值必須是非負整數。值為零表示透過殺訊號立即停止(沒有機會關閉)。這是一個 Beta 欄位,需要啟用 ProbeTerminationGracePeriod 功能門。最小值為 1。如果未設定,則使用 spec.terminationGracePeriodSeconds。

  • periodSeconds (int32)

    執行探測的頻率(秒)。預設為 10 秒。最小值為 1。

  • timeoutSeconds (int32)

    探測超時前等待的秒數。預設為 1 秒。最小值為 1。更多資訊:https://kubernetes.club.tw/docs/concepts/workloads/pods/pod-lifecycle#container-probes

  • failureThreshold (int32)

    探測在成功後被認為是失敗所需的最小連續失敗次數。預設為 3。最小值為 1。

  • successThreshold (int32)

    探測在失敗後被認為是成功所需的最小連續成功次數。預設為 1。對於活性和啟動必須為 1。最小值為 1。

  • grpc (GRPCAction)

    GRPC 指定一個 GRPC HealthCheckRequest。

    GRPCAction 指定了涉及 GRPC 服務的操作。

Pod 狀態

PodStatus 表示關於 Pod 狀態的資訊。狀態可能會滯後於系統的實際狀態,特別是如果託管 Pod 的節點無法聯絡控制平面。


  • nominatedNodeName (string)

    nominatedNodeName 僅在 Pod 搶佔節點上的其他 Pod 時設定,但由於被搶佔的 Pod 收到其優雅終止期,因此無法立即排程。此欄位不保證 Pod 將排程到此節點。如果其他節點更早可用,排程器可能會決定將 Pod 放置在其他位置。排程器還可能決定將此節點上的資源分配給搶佔後建立的更高優先順序 Pod。因此,當 Pod 排程時,此欄位可能與 PodSpec.nodeName 不同。

  • hostIP (string)

    hostIP 儲存分配給 Pod 的主機的 IP 地址。如果 Pod 尚未啟動,則為空。Pod 可以分配給 kubelet 存在問題的節點,這意味著即使節點已分配給 Pod,HostIP 也不會更新。

  • hostIPs ([]HostIP)

    補丁策略:按鍵 ip 合併

    原子性:在合併期間將被替換

    hostIPs 儲存分配給主機的 IP 地址。如果指定此欄位,第一個條目必須與 hostIP 欄位匹配。如果 Pod 尚未啟動,此列表為空。Pod 可以分配給 kubelet 存在問題的節點,這意味著即使節點已分配給此 Pod,HostIPs 也不會更新。

    HostIP 表示分配給主機的單個 IP 地址。

    • hostIPs.ip (string), 必填

      IP 是分配給主機的 IP 地址。

  • startTime (Time)

    Kubelet 確認物件時的 RFC 3339 日期和時間。這發生在 Kubelet 為 Pod 拉取容器映象之前。

    Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

  • phase (string)

    Pod 的階段是 Pod 在其生命週期中所在位置的簡單、高階摘要。條件陣列、原因和訊息欄位以及單個容器狀態陣列包含有關 Pod 狀態的更多詳細資訊。有五種可能的階段值。

    Pending:Pod 已被 Kubernetes 系統接受,但一個或多個容器映象尚未建立。這包括排程前的時間以及透過網路下載映象所花費的時間,這可能需要一段時間。Running:Pod 已繫結到節點,並且所有容器都已建立。至少一個容器仍在執行,或者正在啟動或重啟過程中。Succeeded:Pod 中的所有容器都已成功終止,並且不會重啟。Failed:Pod 中的所有容器都已終止,並且至少一個容器已終止失敗。容器要麼以非零狀態退出,要麼被系統終止。Unknown:由於某種原因無法獲取 Pod 的狀態,通常是由於與 Pod 主機通訊時發生錯誤。

    更多資訊:https://kubernetes.club.tw/docs/concepts/workloads/pods/pod-lifecycle#pod-phase

  • message (string)

    人類可讀的訊息,指示 Pod 處於此狀態的詳細資訊。

  • reason (string)

    簡短的 CamelCase 訊息,指示 Pod 處於此狀態的詳細資訊。例如“Evicted”。

  • podIP (string)

    分配給 Pod 的 podIP 地址。至少在叢集內可路由。如果尚未分配,則為空。

  • podIPs ([]PodIP)

    補丁策略:按鍵 ip 合併

    對映:在合併過程中將保留鍵 ip 上的唯一值

    podIPs 儲存分配給 Pod 的 IP 地址。如果指定此欄位,第 0 個條目必須與 podIP 欄位匹配。Pod 最多可以為 IPv4 和 IPv6 各分配 1 個值。如果尚未分配 IP,此列表為空。

    PodIP 表示分配給 Pod 的單個 IP 地址。

    • podIPs.ip (string), 必填

      IP 是分配給 Pod 的 IP 地址。

  • conditions ([]PodCondition)

    補丁策略:按鍵 type 合併

    對映:合併時將保留鍵型別上的唯一值

    Pod 的當前服務狀態。更多資訊:https://kubernetes.club.tw/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

    PodCondition 包含此 Pod 當前狀態的詳細資訊。

    • conditions.status (string),必需

      Status 是條件的狀況。可以是 True、False、Unknown。更多資訊:https://kubernetes.club.tw/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

    • conditions.type (string),必需

      Type 是條件的型別。更多資訊:https://kubernetes.club.tw/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

    • conditions.lastProbeTime (Time)

      上次探測條件的時間。

      Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

    • conditions.lastTransitionTime (Time)

      條件上次從一種狀態轉換到另一種狀態的時間。

      Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

    • conditions.message (string)

      人類可讀的訊息,指示上次轉換的詳細資訊。

    • conditions.observedGeneration (int64)

      如果設定,這表示 Pod 條件基於的 .metadata.generation。這是一個 Alpha 欄位。啟用 PodObservedGenerationTracking 才能使用此欄位。

    • conditions.reason (string)

      條件的上次轉換的唯一、一個單詞的 CamelCase 原因。

  • qosClass (string)

    根據資源需求分配給 Pod 的服務質量 (QOS) 分類。有關可用 QOS 類別,請參閱 PodQOSClass 型別。更多資訊:https://kubernetes.club.tw/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes

  • initContainerStatuses ([]ContainerStatus)

    原子性:在合併期間將被替換

    此 Pod 中 init 容器的狀態。最近成功的非重啟 init 容器將 ready = true,最近啟動的容器將設定 startTime。Pod 中的每個 init 容器在此列表中應最多有一個狀態,並且所有狀態都應為 Pod 中的容器。但是,這不強制執行。如果列表中存在不存在容器的狀態,或者列表具有重複名稱,則各種 Kubernetes 元件的行為未定義,並且這些狀態可能會被忽略。更多資訊:https://kubernetes.club.tw/docs/concepts/workloads/pods/pod-lifecycle/#pod-and-container-status

    ContainerStatus 包含此容器當前狀態的詳細資訊。

    • initContainerStatuses.allocatedResources (map[string]Quantity)

      AllocatedResources 表示節點為此容器分配的計算資源。Kubelet 在成功 Pod 准入和成功准入所需 Pod 大小調整後,將此值設定為 Container.Resources.Requests。

    • initContainerStatuses.allocatedResourcesStatus ([]ResourceStatus)

      補丁策略:在鍵 name 上合併

      對映:合併時將保留鍵名上的唯一值

      AllocatedResourcesStatus 表示為此 Pod 分配的各種資源的狀態。

      ResourceStatus 表示分配給 Pod 的單個資源的狀態。

      • initContainerStatuses.allocatedResourcesStatus.name (string), 必填

        資源名稱。在 Pod 中必須是唯一的,如果是非 DRA 資源,則必須與 Pod 規範中的資源之一匹配。對於 DRA 資源,值必須為“claim:<claim_name>/<request>”。當報告此容器狀態時,“claim_name”和“request”必須與此容器的宣告之一匹配。

      • initContainerStatuses.allocatedResourcesStatus.resources ([]ResourceHealth)

        對映:合併時將保留 resourceID 鍵上的唯一值

        唯一資源健康列表。列表中的每個元素都包含一個唯一的資源 ID 及其健康狀況。至少在 Pod 的生命週期內,資源 ID 必須唯一標識分配給節點上 Pod 的資源。如果同一節點上的其他 Pod 使用相同的資源 ID 報告狀態,則它們必須是共享的相同資源。有關在各種用例中它具有的特定格式,請參見 ResourceID 型別定義。

        ResourceHealth 表示資源的健康狀況。它具有最新的裝置健康資訊。這是 KEP https://kep.k8s.io/4680 的一部分。

        • initContainerStatuses.allocatedResourcesStatus.resources.resourceID (string), 必填

          ResourceID 是資源的唯一識別符號。有關更多資訊,請參閱 ResourceID 型別。

        • initContainerStatuses.allocatedResourcesStatus.resources.health (string)

          資源健康狀況。可以是以下之一:

          • Healthy:正常執行。
          • Unhealthy:報告不健康。我們認為這是一個暫時的健康問題,因為我們今天沒有機制來區分暫時性和永久性問題。
          • Unknown:狀態無法確定。例如,裝置外掛已登出且此後未重新註冊。

          將來我們可能希望引入 PermanentlyUnhealthy 狀態。

    • initContainerStatuses.containerID (string)

      ContainerID 是容器的 ID,格式為 '<type>://<container_id>'。其中 type 是容器執行時識別符號,從 CRI API 的 Version 呼叫返回(例如“containerd”)。

    • initContainerStatuses.image (string), 必填

      Image 是容器正在執行的容器映象的名稱。容器映象可能與 PodSpec 中使用的映象不匹配,因為它可能已由執行時解析。更多資訊:https://kubernetes.club.tw/docs/concepts/containers/images

    • initContainerStatuses.imageID (string), 必填

      ImageID 是容器映象的映象 ID。映象 ID 可能與 PodSpec 中使用的映象的映象 ID 不匹配,因為它可能已由執行時解析。

    • initContainerStatuses.lastState (ContainerState)

      LastTerminationState 包含容器的最後終止狀態,以幫助除錯容器崩潰和重啟。如果容器仍在執行且 RestartCount 為 0,則不填充此欄位。

      ContainerState 包含容器可能的狀態。只能指定其中一個成員。如果未指定,則預設值為 ContainerStateWaiting。

      • initContainerStatuses.lastState.running (ContainerStateRunning)

        關於執行中容器的詳細資訊

        ContainerStateRunning 是容器的執行狀態。

        • initContainerStatuses.lastState.running.startedAt (Time)

          容器上次(重新)啟動的時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

      • initContainerStatuses.lastState.terminated (ContainerStateTerminated)

        關於已終止容器的詳細資訊。

        ContainerStateTerminated 是容器的終止狀態。

        • initContainerStatuses.lastState.terminated.containerID (string)

          容器的 ID,格式為 '<type>://<container_id>'

        • initContainerStatuses.lastState.terminated.exitCode (int32), 必填

          容器上次終止的退出狀態。

        • initContainerStatuses.lastState.terminated.startedAt (Time)

          容器上次執行的開始時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

        • initContainerStatuses.lastState.terminated.finishedAt (Time)

          容器上次終止的時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

        • initContainerStatuses.lastState.terminated.message (string)

          關於容器上次終止的訊息。

        • initContainerStatuses.lastState.terminated.reason (string)

          容器上次終止的(簡要)原因。

        • initContainerStatuses.lastState.terminated.signal (int32)

          容器上次終止的訊號。

      • initContainerStatuses.lastState.waiting (ContainerStateWaiting)

        關於等待中容器的詳細資訊。

        ContainerStateWaiting 是容器的等待狀態。

        • initContainerStatuses.lastState.waiting.message (string)

          關於容器尚未執行的原因的訊息。

        • initContainerStatuses.lastState.waiting.reason (string)

          容器尚未執行的(簡要)原因。

    • initContainerStatuses.name (string), 必填

      Name 是一個 DNS_LABEL,表示容器的唯一名稱。Pod 中的每個容器在所有容器型別中都必須具有唯一的名稱。無法更新。

    • initContainerStatuses.ready (boolean), 必填

      Ready 指定容器當前是否透過其就緒檢查。該值將隨著就緒探測的持續執行而改變。如果未指定就緒探測,則一旦容器完全啟動(參見 Started 欄位),此欄位預設為 true。

      該值通常用於確定容器是否已準備好接受流量。

    • initContainerStatuses.resources (ResourceRequirements)

      Resources 表示在容器啟動或成功調整大小後,已成功作用於執行中容器的計算資源請求和限制。

      ResourceRequirements 描述了計算資源要求。

      • initContainerStatuses.resources.claims ([]ResourceClaim)

        對映:合併時將保留鍵名上的唯一值

        Claims 列出了此容器使用的資源名稱,這些資源定義在 spec.resourceClaims 中。

        此欄位依賴於 DynamicResourceAllocation 功能門。

        此欄位是不可變的。它只能為容器設定。

        ResourceClaim 引用 PodSpec.ResourceClaims 中的一個條目。

        • initContainerStatuses.resources.claims.name (string), 必填

          Name 必須與使用此欄位的 Pod 的 pod.spec.resourceClaims 中的一個條目的名稱匹配。它使該資源在容器內部可用。

        • initContainerStatuses.resources.claims.request (string)

          Request 是在引用宣告中為請求選擇的名稱。如果為空,則宣告中的所有內容都可用,否則僅此請求的結果可用。

      • initContainerStatuses.resources.limits (map[string]Quantity)

        Limits 描述了允許的最大計算資源量。更多資訊:https://kubernetes.club.tw/docs/concepts/configuration/manage-resources-containers/

      • initContainerStatuses.resources.requests (map[string]Quantity)

        Requests 描述了所需的最小計算資源量。如果容器未指定 Requests,則如果明確指定了 Limits,則預設為 Limits,否則預設為實現定義的值。Requests 不能超過 Limits。更多資訊:https://kubernetes.club.tw/docs/concepts/configuration/manage-resources-containers/

    • initContainerStatuses.restartCount (int32), 必填

      RestartCount 包含容器已重啟的次數。Kubelet 努力始終增加該值,但在節點重啟時可能會丟失狀態,然後該值可能會重置為 0。該值從不為負。

    • initContainerStatuses.started (boolean)

      Started 指示容器是否已完成其 postStart 生命週期鉤子並已透過其啟動探測。初始為 false,在啟動探測被認為是成功後變為 true。當容器重啟或 kubelet 暫時失去狀態時重置為 false。在這兩種情況下,啟動探測將再次執行。當未定義啟動探測且容器正在執行並已透過 postStart 生命週期鉤子時,始終為 true。空值必須與 false 相同處理。

    • initContainerStatuses.state (ContainerState)

      State 包含關於容器當前狀況的詳細資訊。

      ContainerState 包含容器可能的狀態。只能指定其中一個成員。如果未指定,則預設值為 ContainerStateWaiting。

      • initContainerStatuses.state.running (ContainerStateRunning)

        關於執行中容器的詳細資訊

        ContainerStateRunning 是容器的執行狀態。

        • initContainerStatuses.state.running.startedAt (Time)

          容器上次(重新)啟動的時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

      • initContainerStatuses.state.terminated (ContainerStateTerminated)

        關於已終止容器的詳細資訊。

        ContainerStateTerminated 是容器的終止狀態。

        • initContainerStatuses.state.terminated.containerID (string)

          容器的 ID,格式為 '<type>://<container_id>'

        • initContainerStatuses.state.terminated.exitCode (int32), 必填

          容器上次終止的退出狀態。

        • initContainerStatuses.state.terminated.startedAt (Time)

          容器上次執行的開始時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

        • initContainerStatuses.state.terminated.finishedAt (Time)

          容器上次終止的時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

        • initContainerStatuses.state.terminated.message (string)

          關於容器上次終止的訊息。

        • initContainerStatuses.state.terminated.reason (string)

          容器上次終止的(簡要)原因。

        • initContainerStatuses.state.terminated.signal (int32)

          容器上次終止的訊號。

      • initContainerStatuses.state.waiting (ContainerStateWaiting)

        關於等待中容器的詳細資訊。

        ContainerStateWaiting 是容器的等待狀態。

        • initContainerStatuses.state.waiting.message (string)

          關於容器尚未執行的原因的訊息。

        • initContainerStatuses.state.waiting.reason (string)

          容器尚未執行的(簡要)原因。

    • initContainerStatuses.stopSignal (string)

      StopSignal 報告此容器的有效停止訊號。

    • initContainerStatuses.user (ContainerUser)

      User 表示最初附加到容器第一個程序的使用者身份資訊。

      ContainerUser 表示使用者身份資訊。

      • initContainerStatuses.user.linux (LinuxContainerUser)

        Linux 包含最初附加到 Linux 容器中第一個程序的使用者身份資訊。請注意,如果程序具有足夠的許可權,實際執行身份可以更改。

        LinuxContainerUser 表示 Linux 容器中的使用者身份資訊。

        • initContainerStatuses.user.linux.gid (int64), 必填

          GID 是最初附加到容器中第一個程序的主 GID。

        • initContainerStatuses.user.linux.uid (int64), 必填

          UID 是最初附加到容器中第一個程序的主 UID。

        • initContainerStatuses.user.linux.supplementalGroups ([]int64)

          原子性:在合併期間將被替換

          SupplementalGroups 是最初附加到容器中第一個程序的補充組。

    • initContainerStatuses.volumeMounts ([]VolumeMountStatus)

      補丁策略:按鍵 mountPath 合併

      對映:合併時將保留 mountPath 鍵上的唯一值

      卷掛載狀態。

      VolumeMountStatus 顯示卷掛載的狀態。

      • initContainerStatuses.volumeMounts.mountPath (string), 必填

        MountPath 對應於原始 VolumeMount。

      • initContainerStatuses.volumeMounts.name (string), 必填

        Name 對應於原始 VolumeMount 的名稱。

      • initContainerStatuses.volumeMounts.readOnly (boolean)

        ReadOnly 對應於原始 VolumeMount。

      • initContainerStatuses.volumeMounts.recursiveReadOnly (string)

        RecursiveReadOnly 必須設定為 Disabled、Enabled 或未指定(對於非只讀掛載)。原始 VolumeMount 中的 IfPossible 值必須根據掛載結果轉換為 Disabled 或 Enabled。

  • containerStatuses ([]ContainerStatus)

    原子性:在合併期間將被替換

    此 Pod 中容器的狀態。Pod 中的每個容器在此列表中應最多有一個狀態,並且所有狀態都應為 Pod 中的容器。但是,這不強制執行。如果列表中存在不存在容器的狀態,或者列表具有重複名稱,則各種 Kubernetes 元件的行為未定義,並且這些狀態可能會被忽略。更多資訊:https://kubernetes.club.tw/docs/concepts/workloads/pods/pod-lifecycle/#pod-and-container-status

    ContainerStatus 包含此容器當前狀態的詳細資訊。

    • containerStatuses.allocatedResources (map[string]Quantity)

      AllocatedResources 表示節點為此容器分配的計算資源。Kubelet 在成功 Pod 准入和成功准入所需 Pod 大小調整後,將此值設定為 Container.Resources.Requests。

    • containerStatuses.allocatedResourcesStatus ([]ResourceStatus)

      補丁策略:在鍵 name 上合併

      對映:合併時將保留鍵名上的唯一值

      AllocatedResourcesStatus 表示為此 Pod 分配的各種資源的狀態。

      ResourceStatus 表示分配給 Pod 的單個資源的狀態。

      • containerStatuses.allocatedResourcesStatus.name (string), 必填

        資源名稱。在 Pod 中必須是唯一的,如果是非 DRA 資源,則必須與 Pod 規範中的資源之一匹配。對於 DRA 資源,值必須為“claim:<claim_name>/<request>”。當報告此容器狀態時,“claim_name”和“request”必須與此容器的宣告之一匹配。

      • containerStatuses.allocatedResourcesStatus.resources ([]ResourceHealth)

        對映:合併時將保留 resourceID 鍵上的唯一值

        唯一資源健康列表。列表中的每個元素都包含一個唯一的資源 ID 及其健康狀況。至少在 Pod 的生命週期內,資源 ID 必須唯一標識分配給節點上 Pod 的資源。如果同一節點上的其他 Pod 使用相同的資源 ID 報告狀態,則它們必須是共享的相同資源。有關在各種用例中它具有的特定格式,請參見 ResourceID 型別定義。

        ResourceHealth 表示資源的健康狀況。它具有最新的裝置健康資訊。這是 KEP https://kep.k8s.io/4680 的一部分。

        • containerStatuses.allocatedResourcesStatus.resources.resourceID (string), 必填

          ResourceID 是資源的唯一識別符號。有關更多資訊,請參閱 ResourceID 型別。

        • containerStatuses.allocatedResourcesStatus.resources.health (string)

          資源健康狀況。可以是以下之一:

          • Healthy:正常執行。
          • Unhealthy:報告不健康。我們認為這是一個暫時的健康問題,因為我們今天沒有機制來區分暫時性和永久性問題。
          • Unknown:狀態無法確定。例如,裝置外掛已登出且此後未重新註冊。

          將來我們可能希望引入 PermanentlyUnhealthy 狀態。

    • containerStatuses.containerID (string)

      ContainerID 是容器的 ID,格式為 '<type>://<container_id>'。其中 type 是容器執行時識別符號,從 CRI API 的 Version 呼叫返回(例如“containerd”)。

    • containerStatuses.image (string), 必填

      Image 是容器正在執行的容器映象的名稱。容器映象可能與 PodSpec 中使用的映象不匹配,因為它可能已由執行時解析。更多資訊:https://kubernetes.club.tw/docs/concepts/containers/images

    • containerStatuses.imageID (string), 必填

      ImageID 是容器映象的映象 ID。映象 ID 可能與 PodSpec 中使用的映象的映象 ID 不匹配,因為它可能已由執行時解析。

    • containerStatuses.lastState (ContainerState)

      LastTerminationState 包含容器的最後終止狀態,以幫助除錯容器崩潰和重啟。如果容器仍在執行且 RestartCount 為 0,則不填充此欄位。

      ContainerState 包含容器可能的狀態。只能指定其中一個成員。如果未指定,則預設值為 ContainerStateWaiting。

      • containerStatuses.lastState.running (ContainerStateRunning)

        關於執行中容器的詳細資訊

        ContainerStateRunning 是容器的執行狀態。

        • containerStatuses.lastState.running.startedAt (Time)

          容器上次(重新)啟動的時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

      • containerStatuses.lastState.terminated (ContainerStateTerminated)

        關於已終止容器的詳細資訊。

        ContainerStateTerminated 是容器的終止狀態。

        • containerStatuses.lastState.terminated.containerID (string)

          容器的 ID,格式為 '<type>://<container_id>'

        • containerStatuses.lastState.terminated.exitCode (int32), 必填

          容器上次終止的退出狀態。

        • containerStatuses.lastState.terminated.startedAt (Time)

          容器上次執行的開始時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

        • containerStatuses.lastState.terminated.finishedAt (Time)

          容器上次終止的時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

        • containerStatuses.lastState.terminated.message (string)

          關於容器上次終止的訊息。

        • containerStatuses.lastState.terminated.reason (string)

          容器上次終止的(簡要)原因。

        • containerStatuses.lastState.terminated.signal (int32)

          容器上次終止的訊號。

      • containerStatuses.lastState.waiting (ContainerStateWaiting)

        關於等待中容器的詳細資訊。

        ContainerStateWaiting 是容器的等待狀態。

        • containerStatuses.lastState.waiting.message (string)

          關於容器尚未執行的原因的訊息。

        • containerStatuses.lastState.waiting.reason (string)

          容器尚未執行的(簡要)原因。

    • containerStatuses.name (string), 必填

      Name 是一個 DNS_LABEL,表示容器的唯一名稱。Pod 中的每個容器在所有容器型別中都必須具有唯一的名稱。無法更新。

    • containerStatuses.ready (boolean), 必填

      Ready 指定容器當前是否透過其就緒檢查。該值將隨著就緒探測的持續執行而改變。如果未指定就緒探測,則一旦容器完全啟動(參見 Started 欄位),此欄位預設為 true。

      該值通常用於確定容器是否已準備好接受流量。

    • containerStatuses.resources (ResourceRequirements)

      Resources 表示在容器啟動或成功調整大小後,已成功作用於執行中容器的計算資源請求和限制。

      ResourceRequirements 描述了計算資源要求。

      • containerStatuses.resources.claims ([]ResourceClaim)

        對映:合併時將保留鍵名上的唯一值

        Claims 列出了此容器使用的資源名稱,這些資源定義在 spec.resourceClaims 中。

        此欄位依賴於 DynamicResourceAllocation 功能門。

        此欄位是不可變的。它只能為容器設定。

        ResourceClaim 引用 PodSpec.ResourceClaims 中的一個條目。

        • containerStatuses.resources.claims.name (string), 必填

          Name 必須與使用此欄位的 Pod 的 pod.spec.resourceClaims 中的一個條目的名稱匹配。它使該資源在容器內部可用。

        • containerStatuses.resources.claims.request (string)

          Request 是在引用宣告中為請求選擇的名稱。如果為空,則宣告中的所有內容都可用,否則僅此請求的結果可用。

      • containerStatuses.resources.limits (map[string]Quantity)

        Limits 描述了允許的最大計算資源量。更多資訊:https://kubernetes.club.tw/docs/concepts/configuration/manage-resources-containers/

      • containerStatuses.resources.requests (map[string]Quantity)

        Requests 描述了所需的最小計算資源量。如果容器未指定 Requests,則如果明確指定了 Limits,則預設為 Limits,否則預設為實現定義的值。Requests 不能超過 Limits。更多資訊:https://kubernetes.club.tw/docs/concepts/configuration/manage-resources-containers/

    • containerStatuses.restartCount (int32), 必填

      RestartCount 包含容器已重啟的次數。Kubelet 努力始終增加該值,但在節點重啟時可能會丟失狀態,然後該值可能會重置為 0。該值從不為負。

    • containerStatuses.started (boolean)

      Started 指示容器是否已完成其 postStart 生命週期鉤子並已透過其啟動探測。初始為 false,在啟動探測被認為是成功後變為 true。當容器重啟或 kubelet 暫時失去狀態時重置為 false。在這兩種情況下,啟動探測將再次執行。當未定義啟動探測且容器正在執行並已透過 postStart 生命週期鉤子時,始終為 true。空值必須與 false 相同處理。

    • containerStatuses.state (ContainerState)

      State 包含關於容器當前狀況的詳細資訊。

      ContainerState 包含容器可能的狀態。只能指定其中一個成員。如果未指定,則預設值為 ContainerStateWaiting。

      • containerStatuses.state.running (ContainerStateRunning)

        關於執行中容器的詳細資訊

        ContainerStateRunning 是容器的執行狀態。

        • containerStatuses.state.running.startedAt (Time)

          容器上次(重新)啟動的時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

      • containerStatuses.state.terminated (ContainerStateTerminated)

        關於已終止容器的詳細資訊。

        ContainerStateTerminated 是容器的終止狀態。

        • containerStatuses.state.terminated.containerID (string)

          容器的 ID,格式為 '<type>://<container_id>'

        • containerStatuses.state.terminated.exitCode (int32), 必填

          容器上次終止的退出狀態。

        • containerStatuses.state.terminated.startedAt (Time)

          容器上次執行的開始時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

        • containerStatuses.state.terminated.finishedAt (Time)

          容器上次終止的時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

        • containerStatuses.state.terminated.message (string)

          關於容器上次終止的訊息。

        • containerStatuses.state.terminated.reason (string)

          容器上次終止的(簡要)原因。

        • containerStatuses.state.terminated.signal (int32)

          容器上次終止的訊號。

      • containerStatuses.state.waiting (ContainerStateWaiting)

        關於等待中容器的詳細資訊。

        ContainerStateWaiting 是容器的等待狀態。

        • containerStatuses.state.waiting.message (string)

          關於容器尚未執行的原因的訊息。

        • containerStatuses.state.waiting.reason (string)

          容器尚未執行的(簡要)原因。

    • containerStatuses.stopSignal (string)

      StopSignal 報告此容器的有效停止訊號。

    • containerStatuses.user (ContainerUser)

      User 表示最初附加到容器第一個程序的使用者身份資訊。

      ContainerUser 表示使用者身份資訊。

      • containerStatuses.user.linux (LinuxContainerUser)

        Linux 包含最初附加到 Linux 容器中第一個程序的使用者身份資訊。請注意,如果程序具有足夠的許可權,實際執行身份可以更改。

        LinuxContainerUser 表示 Linux 容器中的使用者身份資訊。

        • containerStatuses.user.linux.gid (int64), 必需

          GID 是最初附加到容器中第一個程序的主 GID。

        • containerStatuses.user.linux.uid (int64), 必需

          UID 是最初附加到容器中第一個程序的主 UID。

        • containerStatuses.user.linux.supplementalGroups ([]int64)

          原子性:在合併期間將被替換

          SupplementalGroups 是最初附加到容器中第一個程序的補充組。

    • containerStatuses.volumeMounts ([]VolumeMountStatus)

      補丁策略:按鍵 mountPath 合併

      對映:合併時將保留 mountPath 鍵上的唯一值

      卷掛載狀態。

      VolumeMountStatus 顯示卷掛載的狀態。

      • containerStatuses.volumeMounts.mountPath (string), 必需

        MountPath 對應於原始 VolumeMount。

      • containerStatuses.volumeMounts.name (string), 必需

        Name 對應於原始 VolumeMount 的名稱。

      • containerStatuses.volumeMounts.readOnly (boolean)

        ReadOnly 對應於原始 VolumeMount。

      • containerStatuses.volumeMounts.recursiveReadOnly (string)

        RecursiveReadOnly 必須設定為 Disabled、Enabled 或未指定(對於非只讀掛載)。原始 VolumeMount 中的 IfPossible 值必須根據掛載結果轉換為 Disabled 或 Enabled。

  • ephemeralContainerStatuses ([]ContainerStatus)

    原子性:在合併期間將被替換

    此 Pod 中執行的任何臨時容器的狀態。Pod 中的每個臨時容器在此列表中最多應有一個狀態,並且所有狀態都應針對 Pod 中的容器。但此規定不強制執行。如果列表中存在不存在容器的狀態,或列表具有重複名稱,則各種 Kubernetes 元件的行為未定義,並且這些狀態可能會被忽略。更多資訊:https://kubernetes.club.tw/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status

    ContainerStatus 包含此容器當前狀態的詳細資訊。

    • ephemeralContainerStatuses.allocatedResources (map[string]Quantity)

      AllocatedResources 表示節點為此容器分配的計算資源。Kubelet 在成功 Pod 准入和成功准入所需 Pod 大小調整後,將此值設定為 Container.Resources.Requests。

    • ephemeralContainerStatuses.allocatedResourcesStatus ([]ResourceStatus)

      補丁策略:在鍵 name 上合併

      對映:合併時將保留鍵名上的唯一值

      AllocatedResourcesStatus 表示為此 Pod 分配的各種資源的狀態。

      ResourceStatus 表示分配給 Pod 的單個資源的狀態。

      • ephemeralContainerStatuses.allocatedResourcesStatus.name (string), 必需

        資源名稱。在 Pod 中必須是唯一的,如果是非 DRA 資源,則必須與 Pod 規範中的資源之一匹配。對於 DRA 資源,值必須為“claim:<claim_name>/<request>”。當報告此容器狀態時,“claim_name”和“request”必須與此容器的宣告之一匹配。

      • ephemeralContainerStatuses.allocatedResourcesStatus.resources ([]ResourceHealth)

        對映:合併時將保留 resourceID 鍵上的唯一值

        唯一資源健康列表。列表中的每個元素都包含一個唯一的資源 ID 及其健康狀況。至少在 Pod 的生命週期內,資源 ID 必須唯一標識分配給節點上 Pod 的資源。如果同一節點上的其他 Pod 使用相同的資源 ID 報告狀態,則它們必須是共享的相同資源。有關在各種用例中它具有的特定格式,請參見 ResourceID 型別定義。

        ResourceHealth 表示資源的健康狀況。它具有最新的裝置健康資訊。這是 KEP https://kep.k8s.io/4680 的一部分。

        • ephemeralContainerStatuses.allocatedResourcesStatus.resources.resourceID (string), 必需

          ResourceID 是資源的唯一識別符號。有關更多資訊,請參閱 ResourceID 型別。

        • ephemeralContainerStatuses.allocatedResourcesStatus.resources.health (string)

          資源健康狀況。可以是以下之一:

          • Healthy:正常執行。
          • Unhealthy:報告不健康。我們認為這是一個暫時的健康問題,因為我們今天沒有機制來區分暫時性和永久性問題。
          • Unknown:狀態無法確定。例如,裝置外掛已登出且此後未重新註冊。

          將來我們可能希望引入 PermanentlyUnhealthy 狀態。

    • ephemeralContainerStatuses.containerID (string)

      ContainerID 是容器的 ID,格式為 '<type>://<container_id>'。其中 type 是容器執行時識別符號,從 CRI API 的 Version 呼叫返回(例如“containerd”)。

    • ephemeralContainerStatuses.image (string), 必需

      Image 是容器正在執行的容器映象的名稱。容器映象可能與 PodSpec 中使用的映象不匹配,因為它可能已由執行時解析。更多資訊:https://kubernetes.club.tw/docs/concepts/containers/images

    • ephemeralContainerStatuses.imageID (string), 必需

      ImageID 是容器映象的映象 ID。映象 ID 可能與 PodSpec 中使用的映象的映象 ID 不匹配,因為它可能已由執行時解析。

    • ephemeralContainerStatuses.lastState (ContainerState)

      LastTerminationState 包含容器的最後終止狀態,以幫助除錯容器崩潰和重啟。如果容器仍在執行且 RestartCount 為 0,則不填充此欄位。

      ContainerState 包含容器可能的狀態。只能指定其中一個成員。如果未指定,則預設值為 ContainerStateWaiting。

      • ephemeralContainerStatuses.lastState.running (ContainerStateRunning)

        關於執行中容器的詳細資訊

        ContainerStateRunning 是容器的執行狀態。

        • ephemeralContainerStatuses.lastState.running.startedAt (Time)

          容器上次(重新)啟動的時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

      • ephemeralContainerStatuses.lastState.terminated (ContainerStateTerminated)

        關於已終止容器的詳細資訊。

        ContainerStateTerminated 是容器的終止狀態。

        • ephemeralContainerStatuses.lastState.terminated.containerID (string)

          容器的 ID,格式為 '<type>://<container_id>'

        • ephemeralContainerStatuses.lastState.terminated.exitCode (int32), 必需

          容器上次終止的退出狀態。

        • ephemeralContainerStatuses.lastState.terminated.startedAt (Time)

          容器上次執行的開始時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

        • ephemeralContainerStatuses.lastState.terminated.finishedAt (Time)

          容器上次終止的時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

        • ephemeralContainerStatuses.lastState.terminated.message (string)

          關於容器上次終止的訊息。

        • ephemeralContainerStatuses.lastState.terminated.reason (string)

          容器上次終止的(簡要)原因。

        • ephemeralContainerStatuses.lastState.terminated.signal (int32)

          容器上次終止的訊號。

      • ephemeralContainerStatuses.lastState.waiting (ContainerStateWaiting)

        關於等待中容器的詳細資訊。

        ContainerStateWaiting 是容器的等待狀態。

        • ephemeralContainerStatuses.lastState.waiting.message (string)

          關於容器尚未執行的原因的訊息。

        • ephemeralContainerStatuses.lastState.waiting.reason (string)

          容器尚未執行的(簡要)原因。

    • ephemeralContainerStatuses.name (string), 必需

      Name 是一個 DNS_LABEL,表示容器的唯一名稱。Pod 中的每個容器在所有容器型別中都必須具有唯一的名稱。無法更新。

    • ephemeralContainerStatuses.ready (boolean), 必需

      Ready 指定容器當前是否透過其就緒檢查。該值將隨著就緒探測的持續執行而改變。如果未指定就緒探測,則一旦容器完全啟動(參見 Started 欄位),此欄位預設為 true。

      該值通常用於確定容器是否已準備好接受流量。

    • ephemeralContainerStatuses.resources (ResourceRequirements)

      Resources 表示在容器啟動或成功調整大小後,已成功作用於執行中容器的計算資源請求和限制。

      ResourceRequirements 描述了計算資源要求。

      • ephemeralContainerStatuses.resources.claims ([]ResourceClaim)

        對映:合併時將保留鍵名上的唯一值

        Claims 列出了此容器使用的資源名稱,這些資源定義在 spec.resourceClaims 中。

        此欄位依賴於 DynamicResourceAllocation 功能門。

        此欄位是不可變的。它只能為容器設定。

        ResourceClaim 引用 PodSpec.ResourceClaims 中的一個條目。

        • ephemeralContainerStatuses.resources.claims.name (string), 必需

          Name 必須與使用此欄位的 Pod 的 pod.spec.resourceClaims 中的一個條目的名稱匹配。它使該資源在容器內部可用。

        • ephemeralContainerStatuses.resources.claims.request (string)

          Request 是在引用宣告中為請求選擇的名稱。如果為空,則宣告中的所有內容都可用,否則僅此請求的結果可用。

      • ephemeralContainerStatuses.resources.limits (map[string]Quantity)

        Limits 描述了允許的最大計算資源量。更多資訊:https://kubernetes.club.tw/docs/concepts/configuration/manage-resources-containers/

      • ephemeralContainerStatuses.resources.requests (map[string]Quantity)

        Requests 描述了所需的最小計算資源量。如果容器未指定 Requests,則如果明確指定了 Limits,則預設為 Limits,否則預設為實現定義的值。Requests 不能超過 Limits。更多資訊:https://kubernetes.club.tw/docs/concepts/configuration/manage-resources-containers/

    • ephemeralContainerStatuses.restartCount (int32), 必需

      RestartCount 包含容器已重啟的次數。Kubelet 努力始終增加該值,但在節點重啟時可能會丟失狀態,然後該值可能會重置為 0。該值從不為負。

    • ephemeralContainerStatuses.started (boolean)

      Started 指示容器是否已完成其 postStart 生命週期鉤子並已透過其啟動探測。初始為 false,在啟動探測被認為是成功後變為 true。當容器重啟或 kubelet 暫時失去狀態時重置為 false。在這兩種情況下,啟動探測將再次執行。當未定義啟動探測且容器正在執行並已透過 postStart 生命週期鉤子時,始終為 true。空值必須與 false 相同處理。

    • ephemeralContainerStatuses.state (ContainerState)

      State 包含關於容器當前狀況的詳細資訊。

      ContainerState 包含容器可能的狀態。只能指定其中一個成員。如果未指定,則預設值為 ContainerStateWaiting。

      • ephemeralContainerStatuses.state.running (ContainerStateRunning)

        關於執行中容器的詳細資訊

        ContainerStateRunning 是容器的執行狀態。

        • ephemeralContainerStatuses.state.running.startedAt (Time)

          容器上次(重新)啟動的時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

      • ephemeralContainerStatuses.state.terminated (ContainerStateTerminated)

        關於已終止容器的詳細資訊。

        ContainerStateTerminated 是容器的終止狀態。

        • ephemeralContainerStatuses.state.terminated.containerID (string)

          容器的 ID,格式為 '<type>://<container_id>'

        • ephemeralContainerStatuses.state.terminated.exitCode (int32), 必需

          容器上次終止的退出狀態。

        • ephemeralContainerStatuses.state.terminated.startedAt (Time)

          容器上次執行的開始時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

        • ephemeralContainerStatuses.state.terminated.finishedAt (Time)

          容器上次終止的時間。

          Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

        • ephemeralContainerStatuses.state.terminated.message (string)

          關於容器上次終止的訊息。

        • ephemeralContainerStatuses.state.terminated.reason (string)

          容器上次終止的(簡要)原因。

        • ephemeralContainerStatuses.state.terminated.signal (int32)

          容器上次終止的訊號。

      • ephemeralContainerStatuses.state.waiting (ContainerStateWaiting)

        關於等待中容器的詳細資訊。

        ContainerStateWaiting 是容器的等待狀態。

        • ephemeralContainerStatuses.state.waiting.message (string)

          關於容器尚未執行的原因的訊息。

        • ephemeralContainerStatuses.state.waiting.reason (string)

          容器尚未執行的(簡要)原因。

    • ephemeralContainerStatuses.stopSignal (string)

      StopSignal 報告此容器的有效停止訊號。

    • ephemeralContainerStatuses.user (ContainerUser)

      User 表示最初附加到容器第一個程序的使用者身份資訊。

      ContainerUser 表示使用者身份資訊。

      • ephemeralContainerStatuses.user.linux (LinuxContainerUser)

        Linux 包含最初附加到 Linux 容器中第一個程序的使用者身份資訊。請注意,如果程序具有足夠的許可權,實際執行身份可以更改。

        LinuxContainerUser 表示 Linux 容器中的使用者身份資訊。

        • ephemeralContainerStatuses.user.linux.gid (int64), 必需

          GID 是最初附加到容器中第一個程序的主 GID。

        • ephemeralContainerStatuses.user.linux.uid (int64), 必需

          UID 是最初附加到容器中第一個程序的主 UID。

        • ephemeralContainerStatuses.user.linux.supplementalGroups ([]int64)

          原子性:在合併期間將被替換

          SupplementalGroups 是最初附加到容器中第一個程序的補充組。

    • ephemeralContainerStatuses.volumeMounts ([]VolumeMountStatus)

      補丁策略:按鍵 mountPath 合併

      對映:合併時將保留 mountPath 鍵上的唯一值

      卷掛載狀態。

      VolumeMountStatus 顯示卷掛載的狀態。

      • ephemeralContainerStatuses.volumeMounts.mountPath (string), 必需

        MountPath 對應於原始 VolumeMount。

      • ephemeralContainerStatuses.volumeMounts.name (string), 必需

        Name 對應於原始 VolumeMount 的名稱。

      • ephemeralContainerStatuses.volumeMounts.readOnly (boolean)

        ReadOnly 對應於原始 VolumeMount。

      • ephemeralContainerStatuses.volumeMounts.recursiveReadOnly (string)

        RecursiveReadOnly 必須設定為 Disabled、Enabled 或未指定(對於非只讀掛載)。原始 VolumeMount 中的 IfPossible 值必須根據掛載結果轉換為 Disabled 或 Enabled。

  • resourceClaimStatuses ([]PodResourceClaimStatus)

    補丁策略:保留鍵,按鍵 name 合併

    對映:合併時將保留鍵名上的唯一值

    資源請求狀態。

    PodResourceClaimStatus 儲存在 Pod 的 PodStatus 中,用於引用 ResourceClaimTemplate 的每個 PodResourceClaim。它儲存相應 ResourceClaim 生成的名稱。

    • resourceClaimStatuses.name (string), 必需

      名稱在 Pod 內唯一標識此資源請求。這必須與 pod.spec.resourceClaims 中的條目名稱匹配,這意味著該字串必須是 DNS_LABEL。

    • resourceClaimStatuses.resourceClaimName (string)

      ResourceClaimName 是為 Pod 在 Pod 名稱空間中生成的 ResourceClaim 的名稱。如果未設定此項,則無需生成 ResourceClaim。在這種情況下,可以忽略 pod.spec.resourceClaims 條目。

  • extendedResourceClaimStatus (PodExtendedResourceClaimStatus)

    DRA 支援的擴充套件資源請求的狀態。

    PodExtendedResourceClaimStatus 儲存在 Pod 的 PodStatus 中,用於 DRA 支援的擴充套件資源請求。它儲存排程器建立的相應特殊 ResourceClaim 的生成名稱。

    • extendedResourceClaimStatus.requestMappings ([]ContainerExtendedResourceRequest), 必需

      原子性:在合併期間將被替換

      RequestMappings 標識了 <容器,DRA 支援的擴充套件資源> 到生成 ResourceClaim 中裝置請求的對映。

      ContainerExtendedResourceRequest 具有容器名稱、擴充套件資源名稱到裝置請求名稱的對映。

      • extendedResourceClaimStatus.requestMappings.containerName (string), 必需

        請求資源的容器名稱。

      • extendedResourceClaimStatus.requestMappings.requestName (string), 必需

        特殊 ResourceClaim 中與擴充套件資源對應的請求名稱。

      • extendedResourceClaimStatus.requestMappings.resourceName (string), 必需

        該容器中由 DRA 支援的擴充套件資源的名稱。

    • extendedResourceClaimStatus.resourceClaimName (string), 必需

      ResourceClaimName 是為 Pod 在 Pod 名稱空間中生成的 ResourceClaim 的名稱。

  • resize (string)

    Pod 容器所需的資源大小調整狀態。如果沒有待處理的資源大小調整,則為空。對容器資源的任何更改都將自動將其設定為“Proposed”。已棄用:大小調整狀態已移至兩個 Pod 條件 PodResizePending 和 PodResizeInProgress。PodResizePending 將跟蹤已調整規範大小但 Kubelet 尚未分配資源的狀態。PodResizeInProgress 將跟蹤正在進行的大小調整,並且只要分配的資源 != 確認的資源,就應該存在。

  • observedGeneration (int64)

    如果設定,這表示 Pod 狀態所基於的 .metadata.generation。這是一個 Alpha 欄位。啟用 PodObservedGenerationTracking 以便使用此欄位。

PodList

PodList 是 Pod 的列表。


操作


get 讀取指定的 Pod

HTTP 請求

GET /api/v1/namespaces/{namespace}/pods/{name}

引數

  • name (在路徑中): string,必填

    Pod 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • pretty (在查詢中): string

    pretty

響應

200 (Pod): 確定

401: 未授權

get 讀取指定 Pod 的臨時容器

HTTP 請求

GET /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers

引數

  • name (在路徑中): string,必填

    Pod 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • pretty (在查詢中): string

    pretty

響應

200 (Pod): 確定

401: 未授權

get 讀取指定 Pod 的日誌

HTTP 請求

GET /api/v1/namespaces/{namespace}/pods/{name}/log

引數

  • name (在路徑中): string,必填

    Pod 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • container (查詢引數): string

    要流式傳輸日誌的容器。如果 Pod 中只有一個容器,則預設為該容器。

  • follow (查詢引數): boolean

    跟隨 Pod 的日誌流。預設為 false。

  • insecureSkipTLSVerifyBackend (查詢引數): boolean

    insecureSkipTLSVerifyBackend 表示 API 伺服器不應確認其正在連線的後端服務證書的有效性。這將使 API 伺服器和後端之間的 HTTPS 連線不安全。這意味著 API 伺服器無法驗證其收到的日誌資料是否來自真正的 kubelet。如果 kubelet 配置為驗證 API 伺服器的 TLS 憑據,則這並不意味著與真實 kubelet 的連線容易受到中間人攻擊(例如,攻擊者無法攔截來自真實 kubelet 的實際日誌資料)。

  • limitBytes (查詢引數): integer

    如果設定,表示在終止日誌輸出之前從伺服器讀取的位元組數。這可能不會顯示完整的最後一行日誌,並且返回的位元組數可能略多於或略少於指定的限制。

  • pretty (在查詢中): string

    pretty

  • previous (查詢引數): boolean

    返回之前終止的容器日誌。預設為 false。

  • sinceSeconds (查詢引數): integer

    一個相對於當前時間的秒數,用於顯示日誌。如果此值在 Pod 啟動時間之前,則僅返回 Pod 啟動以來的日誌。如果此值在未來,則不返回日誌。只能指定 sinceSeconds 或 sinceTime 中的一個。

  • stream (查詢引數): string

    指定要返回給客戶端的容器日誌流。可接受的值為 "All"、"Stdout" 和 "Stderr"。如果未指定,則使用 "All",並交錯返回 stdout 和 stderr。請注意,當指定 "TailLines" 時,"Stream" 只能設定為 nil 或 "All"。

  • tailLines (查詢引數): integer

    如果設定,表示要顯示的日誌末尾行數。如果未指定,則從容器建立或 sinceSeconds 或 sinceTime 開始顯示日誌。請注意,當指定 "TailLines" 時,"Stream" 只能設定為 nil 或 "All"。

  • timestamps (查詢引數): boolean

    如果為 true,則在每行日誌輸出的開頭新增 RFC3339 或 RFC3339Nano 時間戳。預設為 false。

響應

200 (string): 確定

401: 未授權

get 讀取指定 Pod 的大小調整

HTTP 請求

GET /api/v1/namespaces/{namespace}/pods/{name}/resize

引數

  • name (在路徑中): string,必填

    Pod 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • pretty (在查詢中): string

    pretty

響應

200 (Pod): 確定

401: 未授權

get 讀取指定 Pod 的狀態

HTTP 請求

GET /api/v1/namespaces/{namespace}/pods/{name}/status

引數

  • name (在路徑中): string,必填

    Pod 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • pretty (在查詢中): string

    pretty

響應

200 (Pod): 確定

401: 未授權

list 列出或監視 Pod 型別的物件

HTTP 請求

GET /api/v1/namespaces/{namespace}/pods

引數

響應

200 (PodList): 確定

401: 未授權

list 列出或監視 Pod 型別的物件

HTTP 請求

GET /api/v1/pods

引數

響應

200 (PodList): 確定

401: 未授權

create 建立 Pod

HTTP 請求

POST /api/v1/namespaces/{namespace}/pods

引數

響應

200 (Pod): 確定

201 (Pod): 已建立

202 (Pod): 已接受

401: 未授權

update 替換指定的 Pod

HTTP 請求

PUT /api/v1/namespaces/{namespace}/pods/{name}

引數

  • name (在路徑中): string,必填

    Pod 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • body: Pod, 必需

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • pretty (在查詢中): string

    pretty

響應

200 (Pod): 確定

201 (Pod): 已建立

401: 未授權

update 替換指定的 Pod 的臨時容器

HTTP 請求

PUT /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers

引數

  • name (在路徑中): string,必填

    Pod 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • body: Pod, 必需

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • pretty (在查詢中): string

    pretty

響應

200 (Pod): 確定

201 (Pod): 已建立

401: 未授權

update 替換指定的 Pod 的大小調整

HTTP 請求

PUT /api/v1/namespaces/{namespace}/pods/{name}/resize

引數

  • name (在路徑中): string,必填

    Pod 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • body: Pod, 必需

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • pretty (在查詢中): string

    pretty

響應

200 (Pod): 確定

201 (Pod): 已建立

401: 未授權

update 替換指定的 Pod 的狀態

HTTP 請求

PUT /api/v1/namespaces/{namespace}/pods/{name}/status

引數

  • name (在路徑中): string,必填

    Pod 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • body: Pod, 必需

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • pretty (在查詢中): string

    pretty

響應

200 (Pod): 確定

201 (Pod): 已建立

401: 未授權

patch 部分更新指定的 Pod

HTTP 請求

PATCH /api/v1/namespaces/{namespace}/pods/{name}

引數

  • name (在路徑中): string,必填

    Pod 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • body: Patch,必需

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • force (在查詢中): boolean

    force

  • pretty (在查詢中): string

    pretty

響應

200 (Pod): 確定

201 (Pod): 已建立

401: 未授權

patch 部分更新指定的 Pod 的臨時容器

HTTP 請求

PATCH /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers

引數

  • name (在路徑中): string,必填

    Pod 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • body: Patch,必需

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • force (在查詢中): boolean

    force

  • pretty (在查詢中): string

    pretty

響應

200 (Pod): 確定

201 (Pod): 已建立

401: 未授權

patch 部分更新指定的 Pod 的大小調整

HTTP 請求

PATCH /api/v1/namespaces/{namespace}/pods/{name}/resize

引數

  • name (在路徑中): string,必填

    Pod 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • body: Patch,必需

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • force (在查詢中): boolean

    force

  • pretty (在查詢中): string

    pretty

響應

200 (Pod): 確定

201 (Pod): 已建立

401: 未授權

patch 部分更新指定的 Pod 的狀態

HTTP 請求

PATCH /api/v1/namespaces/{namespace}/pods/{name}/status

引數

  • name (在路徑中): string,必填

    Pod 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • body: Patch,必需

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • force (在查詢中): boolean

    force

  • pretty (在查詢中): string

    pretty

響應

200 (Pod): 確定

201 (Pod): 已建立

401: 未授權

delete 刪除 Pod

HTTP 請求

DELETE /api/v1/namespaces/{namespace}/pods/{name}

引數

響應

200 (Pod): 確定

202 (Pod): 已接受

401: 未授權

deletecollection 刪除 Pod 集合

HTTP 請求

DELETE /api/v1/namespaces/{namespace}/pods

引數

響應

200 (Status): OK

401: 未授權

本頁面是自動生成的。

如果你打算報告此頁面存在的問題,請在問題描述中提及此頁面是自動生成的。修復可能需要在 Kubernetes 專案的其他地方進行。

上次修改時間:2025 年 9 月 4 日 下午 3:37 PST:更新 v1.34 的 API 資源參考 (3e10e8c195)