Pod
apiVersion: v1
import "k8s.io/api/core/v1"
Pod
Pod 是可以在主機上執行的容器集合。此資源由用戶端建立並排程到主機上。
apiVersion: v1
kind: Pod
metadata (ObjectMeta)
標準物件的中繼資料。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (PodSpec)
Pod 的期望行為規範。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (PodStatus)
最近觀察到的 Pod 狀態。此資料可能不是最新的。由系統填入。唯讀。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
PodSpec
PodSpec 是 Pod 的描述。
容器
containers ([]Container), 必需
Patch 策略:在鍵
name
上合併Map:在合併期間,鍵名稱上的唯一值將被保留
屬於 Pod 的容器清單。目前無法新增或移除容器。Pod 中必須至少有一個容器。無法更新。
initContainers ([]Container)
Patch 策略:在鍵
name
上合併Map:在合併期間,鍵名稱上的唯一值將被保留
屬於 Pod 的初始化容器清單。初始化容器在容器啟動之前依序執行。如果任何初始化容器失敗,則 Pod 會被視為已失敗,並根據其 restartPolicy 進行處理。初始化容器或一般容器的名稱在所有容器中必須是唯一的。初始化容器可能沒有生命週期動作、就緒探針、存活度探針或啟動探針。初始化容器的 resourceRequirements 在排程期間會被考慮,方法是找到每種資源類型的最高請求/限制,然後使用該值或一般容器總和的最大值。限制以類似的方式應用於初始化容器。目前無法新增或移除初始化容器。無法更新。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/workloads/pods/init-containers/
ephemeralContainers ([]EphemeralContainer)
Patch 策略:在鍵
name
上合併Map:在合併期間,鍵名稱上的唯一值將被保留
在此 Pod 中執行的臨時容器清單。臨時容器可以在現有的 Pod 中執行,以執行使用者起始的動作,例如偵錯。建立 Pod 時無法指定此清單,並且無法透過更新 Pod 規範來修改它。為了將臨時容器新增到現有的 Pod,請使用 Pod 的 ephemeralcontainers 子資源。
imagePullSecrets ([]LocalObjectReference)
Patch 策略:在鍵
name
上合併Map:在合併期間,鍵名稱上的唯一值將被保留
ImagePullSecrets 是同一個命名空間中密鑰的選用參考清單,用於提取此 PodSpec 使用的任何映像檔。如果指定,這些密鑰將傳遞給個別的提取器實作以供使用。更多資訊:https://kubernetes.dev.org.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.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
os.name (字串), 必填
Name 是作業系統的名稱。目前支援的值為 linux 和 windows。未來可能會定義其他值,並且可以是以下其中之一:https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration 用戶端應預期處理其他值,並將此欄位中無法辨識的值視為 os: null
磁碟區
volumes ([]Volume)
Patch 策略:retainKeys,在鍵
name
上合併Map:在合併期間,鍵名稱上的唯一值將被保留
可由屬於 Pod 的容器掛載的卷清單。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/storage/volumes
排程
nodeSelector (map[string]string)
NodeSelector 是一個選擇器,Pod 必須符合此選擇器才能在節點上執行。選擇器必須符合節點的標籤,Pod 才能排程到該節點上。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/configuration/assign-pod-node/
nodeName (字串)
NodeName 指示此 Pod 排程在哪個節點中。如果為空,則此 Pod 是由 schedulerName 中定義的排程器排程的候選者。一旦設定此欄位,此節點的 kubelet 就會負責此 Pod 的生命週期。此欄位不應用於表達希望 Pod 排程在特定節點上的意願。https://kubernetes.dev.org.tw/docs/concepts/scheduling-eviction/assign-pod-node/#nodename
affinity (Affinity)
如果指定,則為 Pod 的排程約束
affinity.nodeAffinity (NodeAffinity)
描述 Pod 的節點親和性排程規則。
affinity.podAffinity (PodAffinity)
描述 Pod 親和性排程規則(例如,將此 Pod 與其他 Pod(s) 共置於相同的節點、區域等)。
affinity.podAntiAffinity (PodAntiAffinity)
描述 Pod 反親和性排程規則(例如,避免將此 Pod 與其他 Pod(s) 放置在相同的節點、區域等)。
tolerations ([]Toleration)
Atomic:將在合併期間被取代
如果指定,則為 Pod 的容忍度。
附加此容忍度的 Pod 可以容忍任何符合三重組 <key,value,effect> 的污點,使用比對運算子
。 tolerations.key (字串)
Key 是容忍度適用的污點鍵。空白表示符合所有污點鍵。如果鍵為空白,則運算子必須為 Exists;此組合表示符合所有值和所有鍵。
tolerations.operator (字串)
Operator 代表鍵與值之間的關係。有效運算子為 Exists 和 Equal。預設為 Equal。Exists 等同於值的萬用字元,因此 Pod 可以容忍特定類別的所有污點。
tolerations.value (字串)
Value 是容忍度比對的污點值。如果運算子為 Exists,則值應為空白,否則只是一般的字串。
tolerations.effect (字串)
Effect 指示要比對的污點效果。空白表示符合所有污點效果。指定時,允許的值為 NoSchedule、PreferNoSchedule 和 NoExecute。
tolerations.tolerationSeconds (int64)
TolerationSeconds 代表容忍度(必須為 NoExecute 效果,否則此欄位將被忽略)容忍污點的時間段。預設情況下,未設定此值,這表示永遠容忍污點(不驅逐)。系統會將零值和負值視為 0(立即驅逐)。
schedulerName (字串)
如果指定,Pod 將由指定的排程器調度。如果未指定,Pod 將由預設排程器調度。
runtimeClassName (字串)
RuntimeClassName 參考 node.k8s.io 群組中的 RuntimeClass 物件,該物件應適用於執行此 Pod。如果沒有 RuntimeClass 資源符合指定的類別,則 Pod 將不會執行。如果未設定或為空,將使用 "legacy" RuntimeClass,這是一個具有空定義的隱含類別,它使用預設的執行階段處理常式。更多資訊:https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
priorityClassName (字串)
如果指定,則指示 Pod 的優先順序。"system-node-critical" 和 "system-cluster-critical" 是兩個特殊的關鍵字,表示最高的優先順序,前者是最高優先順序。任何其他名稱都必須透過建立具有該名稱的 PriorityClass 物件來定義。如果未指定,Pod 優先順序將為預設值,如果沒有預設值,則為零。
priority (int32)
優先順序值。各種系統元件使用此欄位來尋找 Pod 的優先順序。當啟用優先順序許可控制器時,它會阻止使用者設定此欄位。許可控制器會從 PriorityClassName 填入此欄位。值越高,優先順序越高。
preemptionPolicy (字串)
PreemptionPolicy 是搶佔較低優先順序 Pod 的策略。可以是 Never、PreemptLowerPriority 其中之一。如果未設定,則預設為 PreemptLowerPriority。
topologySpreadConstraints ([]TopologySpreadConstraint)
Patch 策略:在鍵
topologyKey
上合併Map:在合併期間,鍵
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 (字串), 必填
TopologyKey 是節點標籤的鍵。具有此鍵和相同值的標籤的節點被視為在相同的拓撲中。我們將每個 <key, value> 視為一個「儲存區」,並嘗試將平衡數量的 Pod 放入每個儲存區中。我們將域定義為拓撲的特定實例。此外,我們將符合條件的域定義為其節點滿足 nodeAffinityPolicy 和 nodeTaintsPolicy 要求的域。例如,如果 TopologyKey 為 "kubernetes.io/hostname",則每個節點都是該拓撲的一個域。並且,如果 TopologyKey 為 "topology.kubernetes.io/zone",則每個區域都是該拓撲的一個域。這是必填欄位。
topologySpreadConstraints.whenUnsatisfiable (字串), 必填
WhenUnsatisfiable 指示在 Pod 不滿足分散約束時如何處理。- DoNotSchedule(預設)告訴排程器不要排程它。- ScheduleAnyway 告訴排程器在任何位置排程 Pod,但優先考慮有助於減少偏差的拓撲。當且僅當該 Pod 的每個可能的節點分配都會在某些拓撲上違反 "MaxSkew" 時,對於傳入的 Pod,約束才被視為「Unsatisfiable」。例如,在 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)
Atomic:將在合併期間被取代
MatchLabelKeys 是一組 Pod 標籤鍵,用於選擇將在其上計算分散的 Pod。這些鍵用於從傳入的 Pod 標籤中查閱值,這些鍵值標籤會與 labelSelector 進行 AND 運算,以選擇將在其上為傳入的 Pod 計算分散的現有 Pod 群組。禁止在 MatchLabelKeys 和 LabelSelector 中同時存在相同的鍵。當未設定 LabelSelector 時,無法設定 MatchLabelKeys。傳入的 Pod 標籤中不存在的鍵將被忽略。空值或空清單表示僅比對 labelSelector。
這是一個 Beta 欄位,需要啟用 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 (字串)
NodeAffinityPolicy 指示在計算 Pod 拓撲分散偏差時,我們將如何處理 Pod 的 nodeAffinity/nodeSelector。選項為:- Honor:僅包含符合 nodeAffinity/nodeSelector 的節點在計算中。- Ignore:忽略 nodeAffinity/nodeSelector。所有節點都包含在計算中。
如果此值為 nil,則行為等同於 Honor 策略。這是一個 Beta 級功能,預設由 NodeInclusionPolicyInPodTopologySpread 功能標誌啟用。
topologySpreadConstraints.nodeTaintsPolicy (字串)
NodeTaintsPolicy 指示在計算 Pod 拓撲分散偏差時,我們將如何處理節點污點。選項為:- Honor:包含沒有污點的節點,以及傳入的 Pod 具有容忍度的受污節點。- Ignore:忽略節點污點。所有節點都包含在內。
如果此值為 nil,則行為等同於 Ignore 策略。這是一個 Beta 級功能,預設由 NodeInclusionPolicyInPodTopologySpread 功能標誌啟用。
overhead (map[string]Quantity)
Overhead 代表與針對給定 RuntimeClass 執行 Pod 相關聯的資源開銷。此欄位將在許可時間由 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 (字串)
Pod 中所有容器的重新啟動策略。可以是 Always、OnFailure、Never 其中之一。在某些情況下,可能只允許這些值的子集。預設為 Always。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
terminationGracePeriodSeconds (int64)
Pod 需要正常終止的可選持續時間(以秒為單位)。可能會在刪除請求中減少。值必須為非負整數。值零表示透過 kill 訊號立即停止(沒有關閉的機會)。如果此值為 nil,則將改為使用預設寬限期。寬限期是在將終止訊號傳送給 Pod 中執行的程序之後,以及使用 kill 訊號強制停止程序的時間之間的持續時間(以秒為單位)。將此值設定為長於您的程序預期的清理時間。預設為 30 秒。
activeDeadlineSeconds (int64)
Pod 在節點上相對於 StartTime 可能處於活動狀態的可選持續時間(以秒為單位),之後系統將主動嘗試將其標記為失敗並終止相關聯的容器。值必須為正整數。
readinessGates ([]PodReadinessGate)
Atomic:將在合併期間被取代
如果指定,所有就緒閘道將針對 Pod 就緒狀態進行評估。當 Pod 的所有容器都就緒,並且就緒閘道中指定的所有條件的狀態都等於 "True" 時,Pod 即為就緒狀態。更多資訊:https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
PodReadinessGate 包含對 Pod 條件的參考
readinessGates.conditionType (字串), 必填
ConditionType 參考 Pod 條件清單中具有相符類型的條件。
主機名稱和名稱解析
hostname (字串)
指定 Pod 的主機名稱。如果未指定,Pod 的主機名稱將設定為系統定義的值。
setHostnameAsFQDN (布林值)
如果為 true,Pod 的主機名稱將配置為 Pod 的 FQDN,而不是葉節點名稱(預設值)。在 Linux 容器中,這表示在核心的主機名稱欄位中設定 FQDN(struct utsname 的 nodename 欄位)。在 Windows 容器中,這表示將登錄機碼 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 的主機名稱登錄值設定為 FQDN。如果 Pod 沒有 FQDN,則此設定無效。預設為 false。
subdomain (字串)
如果指定,完整限定的 Pod 主機名稱將為 "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>"。如果未指定,Pod 將完全沒有網域名稱。
hostAliases ([]HostAlias)
Patch 策略:在鍵
ip
上合併Map:在合併期間,鍵 ip 上的唯一值將被保留
HostAliases 是主機和 IP 的可選清單,如果指定,將注入到 Pod 的 hosts 檔案中。
HostAlias 保留 IP 和主機名稱之間的對應關係,該對應關係將作為條目注入到 Pod 的 hosts 檔案中。
hostAliases.ip (字串), 必填
hosts 檔案條目的 IP 位址。
hostAliases.hostnames ([]string)
Atomic:將在合併期間被取代
上述 IP 位址的主機名稱。
dnsConfig (PodDNSConfig)
指定 Pod 的 DNS 參數。此處指定的參數將根據 DNSPolicy 合併到產生的 DNS 配置中。
PodDNSConfig 除了從 DNSPolicy 產生的參數外,還定義了 Pod 的 DNS 參數。
dnsConfig.nameservers ([]string)
Atomic:將在合併期間被取代
DNS 名稱伺服器 IP 位址的清單。這將附加到從 DNSPolicy 產生的基本名稱伺服器。重複的名稱伺服器將被移除。
dnsConfig.options ([]PodDNSConfigOption)
Atomic:將在合併期間被取代
DNS 解析器選項的清單。這將與從 DNSPolicy 產生的基本選項合併。重複的條目將被移除。Options 中給出的解析選項將覆蓋基本 DNSPolicy 中出現的選項。
PodDNSConfigOption 定義 Pod 的 DNS 解析器選項。
dnsConfig.options.name (字串)
必填。
dnsConfig.options.value (字串)
dnsConfig.searches ([]string)
Atomic:將在合併期間被取代
用於主機名稱查找的 DNS 搜尋域的清單。這將附加到從 DNSPolicy 產生的基本搜尋路徑。重複的搜尋路徑將被移除。
dnsPolicy (字串)
設定 Pod 的 DNS 策略。預設為 "ClusterFirst"。有效值為 'ClusterFirstWithHostNet'、'ClusterFirst'、'Default' 或 'None'。DNSConfig 中給定的 DNS 參數將與透過 DNSPolicy 選擇的策略合併。若要設定 DNS 選項以及 hostNetwork,您必須明確將 DNS 策略指定為 'ClusterFirstWithHostNet'。
主機命名空間
hostNetwork (布林值)
為此 Pod 請求主機網路。使用主機的網路命名空間。如果設定此選項,則必須指定將使用的埠。預設為 false。
hostPID (布林值)
使用主機的 pid 命名空間。可選:預設為 false。
hostIPC (布林值)
使用主機的 ipc 命名空間。可選:預設為 false。
shareProcessNamespace (布林值)
在 Pod 中所有容器之間共用單一程序命名空間。當設定此選項時,容器將能夠檢視和發送信號給同一個 Pod 中其他容器的程序,並且每個容器中的第一個程序將不會被指派 PID 1。HostPID 和 ShareProcessNamespace 不能同時設定。可選:預設為 false。
服務帳戶
serviceAccountName (字串)
ServiceAccountName 是用於執行此 Pod 的 ServiceAccount 的名稱。更多資訊:https://kubernetes.dev.org.tw/docs/tasks/configure-pod-container/configure-service-account/
automountServiceAccountToken (布林值)
AutomountServiceAccountToken 指示是否應自動掛載服務帳戶權杖。
安全性內容
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 (字串), 必填
type 指示將套用哪種類型的 AppArmor 設定檔。有效選項為:Localhost - 節點上預先載入的設定檔。RuntimeDefault - 容器執行階段的預設設定檔。Unconfined - 無 AppArmor 強制執行。
securityContext.appArmorProfile.localhostProfile (字串)
localhostProfile 指示應使用的節點上載入的設定檔。設定檔必須在節點上預先配置才能運作。必須符合設定檔的載入名稱。當且僅當 type 為 "Localhost" 時才必須設定。
securityContext.fsGroup (int64)
適用於 Pod 中所有容器的特殊補充群組。某些卷類型允許 Kubelet 變更該卷的所有權,使其歸 Pod 所有
- 擁有 GID 將為 FSGroup 2. 設定了 setgid 位元(卷中建立的新檔案將歸 FSGroup 所有) 3. 權限位元與 rw-rw---- 進行 OR 運算
如果未設定,Kubelet 將不會修改任何卷的所有權和權限。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
securityContext.fsGroupChangePolicy (字串)
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 (布林值)
指示容器必須以非 root 使用者身分執行。如果為 true,Kubelet 將在執行階段驗證映像,以確保它不會以 UID 0(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 (字串), 必填
type 指示將套用哪種類型的 seccomp 設定檔。有效選項為
Localhost - 應使用在節點上的檔案中定義的設定檔。RuntimeDefault - 應使用容器執行階段預設設定檔。Unconfined - 不應套用任何設定檔。
securityContext.seccompProfile.localhostProfile (字串)
localhostProfile 指示應使用在節點上的檔案中定義的設定檔。設定檔必須在節點上預先配置才能運作。必須是相對於 kubelet 配置的 seccomp 設定檔位置的降序路徑。如果 type 為 "Localhost",則必須設定。對於任何其他類型,都不得設定。
securityContext.seLinuxOptions (SELinuxOptions)
要套用於所有容器的 SELinux 內容。如果未指定,容器執行階段將為每個容器分配隨機的 SELinux 內容。也可以在 SecurityContext 中設定。如果在 SecurityContext 和 PodSecurityContext 中都設定了,則 SecurityContext 中指定的值優先用於該容器。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
securityContext.seLinuxOptions.level (字串)
Level 是套用於容器的 SELinux 層級標籤。
securityContext.seLinuxOptions.role (字串)
Role 是套用於容器的 SELinux 角色標籤。
securityContext.seLinuxOptions.type (字串)
Type 是套用於容器的 SELinux 類型標籤。
securityContext.seLinuxOptions.user (字串)
User 是套用於容器的 SELinux 使用者標籤。
securityContext.supplementalGroups ([]int64)
Atomic:將在合併期間被取代
除了容器的主要 GID 和 fsGroup(如果指定)之外,還套用於每個容器中執行的第一個程序的群組清單。如果啟用了 SupplementalGroupsPolicy 功能,則 supplementalGroupsPolicy 欄位會決定這些群組是容器映像中定義的任何群組成員資格的補充還是取代。如果未指定,則不會新增其他群組,但仍可能使用容器映像中定義的群組成員資格,具體取決於 supplementalGroupsPolicy 欄位。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
securityContext.supplementalGroupsPolicy (字串)
定義如何計算第一個容器程序的補充群組。有效值為 "Merge" 和 "Strict"。如果未指定,則使用 "Merge"。(Alpha)使用此欄位需要啟用 SupplementalGroupsPolicy 功能閘道,並且容器執行階段必須實作對此功能的支援。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
securityContext.sysctls ([]Sysctl)
Atomic:將在合併期間被取代
Sysctls 保留用於 Pod 的命名空間 sysctl 清單。具有不受支援的 sysctl(由容器執行階段)的 Pod 可能無法啟動。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
securityContext.sysctls.name (字串), 必填
要設定的屬性的名稱
securityContext.sysctls.value (字串), 必填
要設定的屬性的值
securityContext.windowsOptions (WindowsSecurityContextOptions)
套用於所有容器的 Windows 特定設定。如果未指定,將使用容器 SecurityContext 中的選項。如果在 SecurityContext 和 PodSecurityContext 中都設定了,則 SecurityContext 中指定的值優先。請注意,當 spec.os.name 為 linux 時,無法設定此欄位。
WindowsSecurityContextOptions 包含 Windows 特定的選項和憑證。
securityContext.windowsOptions.gmsaCredentialSpec (字串)
GMSACredentialSpec 是 GMSA 許可 Webhook (https://github.com/kubernetes-sigs/windows-gmsa) 在其中內嵌 GMSACredentialSpecName 欄位命名的 GMSA 憑證規格內容的位置。
securityContext.windowsOptions.gmsaCredentialSpecName (字串)
GMSACredentialSpecName 是要使用的 GMSA 憑證規格的名稱。
securityContext.windowsOptions.hostProcess (布林值)
HostProcess 決定容器是否應作為「主機程序」容器執行。Pod 的所有容器都必須具有相同有效 HostProcess 值(不允許混合使用 HostProcess 容器和非 HostProcess 容器)。此外,如果 HostProcess 為 true,則 HostNetwork 也必須設定為 true。
securityContext.windowsOptions.runAsUserName (字串)
在 Windows 中執行容器程序進入點的 UserName。如果未指定,則預設為映像中指定的使用者。也可以在 PodSecurityContext 中設定。如果在 SecurityContext 和 PodSecurityContext 中都設定了,則 SecurityContext 中指定的值優先。
Alpha 層級
hostUsers (布林值)
使用主機的使用者命名空間。可選:預設為 true。如果設定為 true 或不存在,Pod 將在主機使用者命名空間中執行,這對於 Pod 需要僅主機使用者命名空間可用的功能(例如使用 CAP_SYS_MODULE 載入核心模組)時很有用。當設定為 false 時,將為 Pod 建立新的 userns。設定為 false 對於減輕容器逃逸漏洞很有用,甚至允許使用者以 root 身分執行其容器,而實際上沒有主機上的 root 權限。此欄位為 Alpha 層級,僅由啟用 UserNamespacesSupport 功能的伺服器支援。
resourceClaims ([]PodResourceClaim)
Patch 策略:retainKeys,在鍵
name
上合併Map:在合併期間,鍵名稱上的唯一值將被保留
ResourceClaims 定義在允許 Pod 啟動之前必須分配和保留哪些 ResourceClaim。資源將提供給那些依名稱使用它們的容器。
這是一個 Alpha 欄位,需要啟用 DynamicResourceAllocation 功能閘道。
此欄位為不可變。
*PodResourceClaim 準確地參考一個 ResourceClaim,可以直接參考,也可以透過命名 ResourceClaimTemplate,然後將其轉換為 Pod 的 ResourceClaim。
它為其新增一個名稱,以在 Pod 內唯一識別 ResourceClaim。需要存取 ResourceClaim 的容器會使用此名稱來參考它。
resourceClaims.name (字串), 必填
名稱在 Pod 內唯一識別此資源宣告。這必須是 DNS_LABEL。
resourceClaims.resourceClaimName (字串)
ResourceClaimName 是與此 Pod 相同命名空間中 ResourceClaim 物件的名稱。
ResourceClaimName 和 ResourceClaimTemplateName 必須恰好設定其中一個。
resourceClaims.resourceClaimTemplateName (字串)
ResourceClaimTemplateName 是與此 Pod 相同命名空間中 ResourceClaimTemplate 物件的名稱。
範本將用於建立新的 ResourceClaim,並將其繫結到此 Pod。當此 Pod 被刪除時,ResourceClaim 也將被刪除。Pod 名稱和資源名稱,以及產生的元件,將用於形成 ResourceClaim 的唯一名稱,該名稱將記錄在 pod.status.resourceClaimStatuses 中。
此欄位是不可變的,且在建立 ResourceClaim 後,控制平面不會對相應的 ResourceClaim 進行任何變更。
ResourceClaimName 和 ResourceClaimTemplateName 必須恰好設定其中一個。
schedulingGates ([]PodSchedulingGate)
Patch 策略:在鍵
name
上合併Map:在合併期間,鍵名稱上的唯一值將被保留
SchedulingGates 是不透明的值列表,如果指定,將阻止排程 Pod。如果 schedulingGates 不為空,Pod 將保持在 SchedulingGated 狀態,且排程器將不會嘗試排程 Pod。
SchedulingGates 只能在 Pod 建立時設定,且只能在之後移除。
PodSchedulingGate 與 Pod 相關聯,以保護其排程。
schedulingGates.name (字串), 必填
排程閘道的名稱。每個排程閘道都必須具有唯一的名稱欄位。
已棄用
serviceAccount (字串)
DeprecatedServiceAccount 是 ServiceAccountName 的已棄用別名。已棄用:請改用 serviceAccountName。
容器
您想要在 Pod 內執行的單一應用程式容器。
name (字串), 必填
容器的名稱,指定為 DNS_LABEL。Pod 中的每個容器都必須具有唯一的名稱 (DNS_LABEL)。無法更新。
映像檔
image (字串)
容器映像檔名稱。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/containers/images 此欄位是選用的,允許更高等級的組態管理在工作負載控制器(如 Deployments 和 StatefulSets)中預設或覆寫容器映像檔。
imagePullPolicy (字串)
映像檔提取原則。可以是 Always、Never、IfNotPresent 之一。如果指定 :latest 標籤,則預設為 Always,否則預設為 IfNotPresent。無法更新。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/containers/images#updating-images
進入點
command ([]字串)
Atomic:將在合併期間被取代
進入點陣列。不在 Shell 中執行。如果未提供,則使用容器映像檔的 ENTRYPOINT。變數參考 $(VAR_NAME) 會使用容器的環境進行擴充。如果變數無法解析,則輸入字串中的參考將保持不變。雙 $$ 會縮減為單個 $,這允許逸出 $(VAR_NAME) 語法:即 "$$(VAR_NAME)" 將產生字串文字 "$(VAR_NAME)"。逸出的參考永遠不會被擴充,無論變數是否存在。無法更新。更多資訊:https://kubernetes.dev.org.tw/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
args ([]字串)
Atomic:將在合併期間被取代
進入點的引數。如果未提供,則使用容器映像檔的 CMD。變數參考 $(VAR_NAME) 會使用容器的環境進行擴充。如果變數無法解析,則輸入字串中的參考將保持不變。雙 $$ 會縮減為單個 $,這允許逸出 $(VAR_NAME) 語法:即 "$$(VAR_NAME)" 將產生字串文字 "$(VAR_NAME)"。逸出的參考永遠不會被擴充,無論變數是否存在。無法更新。更多資訊:https://kubernetes.dev.org.tw/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
workingDir (字串)
容器的工作目錄。如果未指定,將使用容器執行階段的預設值,該預設值可能會在容器映像檔中設定。無法更新。
埠
ports ([]ContainerPort)
修補策略:在鍵
containerPort
上合併Map:在合併期間,將保留鍵
containerPort, protocol
上的唯一值要從容器公開的埠列表。在此處未指定埠並不會阻止該埠被公開。在容器內預設 "0.0.0.0" 位址上監聽的任何埠都可從網路存取。使用策略性合併修補程式修改此陣列可能會損壞資料。更多資訊請參閱 https://github.com/kubernetes/kubernetes/issues/108255。無法更新。
ports.containerPort (int32), 必填
要在 Pod 的 IP 位址上公開的埠號。這必須是有效的埠號,0 < x < 65536。
ports.hostIP (字串)
要將外部埠繫結到的主機 IP。
ports.hostPort (int32)
要在主機上公開的埠號。如果指定,這必須是有效的埠號,0 < x < 65536。如果指定 HostNetwork,則這必須與 ContainerPort 相符。大多數容器不需要此項。
ports.name (字串)
如果指定,則這必須是 IANA_SVC_NAME 且在 Pod 內是唯一的。Pod 中每個具名的埠都必須具有唯一的名稱。埠的名稱,可供服務參考。
ports.protocol (字串)
埠的協定。必須是 UDP、TCP 或 SCTP。預設為 "TCP"。
環境變數
env ([]EnvVar)
Patch 策略:在鍵
name
上合併Map:在合併期間,鍵名稱上的唯一值將被保留
要在容器中設定的環境變數列表。無法更新。
env.name (字串), 必填
環境變數的名稱。必須是 C_IDENTIFIER。
env.value (字串)
變數參考 $(VAR_NAME) 會使用容器中先前定義的環境變數和任何服務環境變數進行擴充。如果變數無法解析,則輸入字串中的參考將保持不變。雙 $$ 會縮減為單個 $,這允許逸出 $(VAR_NAME) 語法:即 "$$(VAR_NAME)" 將產生字串文字 "$(VAR_NAME)"。逸出的參考永遠不會被擴充,無論變數是否存在。預設為 ""。
env.valueFrom (EnvVarSource)
環境變數值的來源。如果 value 不為空,則無法使用。
env.valueFrom.configMapKeyRef (ConfigMapKeySelector)
選取 ConfigMap 的鍵。
env.valueFrom.configMapKeyRef.key (字串), 必填
要選取的鍵。
env.valueFrom.configMapKeyRef.name (字串)
參考對象的名稱。此欄位實際上是必填的,但由於回溯相容性,允許為空。此類型具有空值的實例幾乎肯定是錯誤的。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/overview/working-with-objects/names/#names
env.valueFrom.configMapKeyRef.optional (布林值)
指定是否必須定義 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.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 (字串), 必填
要從中選取的 Secret 的鍵。必須是有效的 Secret 鍵。
env.valueFrom.secretKeyRef.name (字串)
參考對象的名稱。此欄位實際上是必填的,但由於回溯相容性,允許為空。此類型具有空值的實例幾乎肯定是錯誤的。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/overview/working-with-objects/names/#names
env.valueFrom.secretKeyRef.optional (布林值)
指定是否必須定義 Secret 或其鍵
envFrom ([]EnvFromSource)
Atomic:將在合併期間被取代
用於在容器中填入環境變數的來源列表。在來源中定義的鍵必須是 C_IDENTIFIER。當容器啟動時,所有無效的鍵都將報告為事件。當一個鍵存在於多個來源中時,與最後一個來源相關聯的值將優先。由具有重複鍵的 Env 定義的值將優先。無法更新。
EnvFromSource 代表一組 ConfigMap 的來源
envFrom.configMapRef (ConfigMapEnvSource)
要從中選取的 ConfigMap
ConfigMapEnvSource 選取一個 ConfigMap 以填入環境變數。
目標 ConfigMap 的 Data 欄位的內容將表示鍵值對作為環境變數。
envFrom.configMapRef.name (字串)
參考對象的名稱。此欄位實際上是必填的,但由於回溯相容性,允許為空。此類型具有空值的實例幾乎肯定是錯誤的。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/overview/working-with-objects/names/#names
envFrom.configMapRef.optional (布林值)
指定是否必須定義 ConfigMap
envFrom.prefix (字串)
要前置到 ConfigMap 中每個鍵的可選識別符。必須是 C_IDENTIFIER。
envFrom.secretRef (SecretEnvSource)
要從中選取的 Secret
SecretEnvSource 選取一個 Secret 以填入環境變數。
目標 Secret 的 Data 欄位的內容將表示鍵值對作為環境變數。
envFrom.secretRef.name (字串)
參考對象的名稱。此欄位實際上是必填的,但由於回溯相容性,允許為空。此類型具有空值的實例幾乎肯定是錯誤的。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/overview/working-with-objects/names/#names
envFrom.secretRef.optional (布林值)
指定是否必須定義 Secret
磁碟區
volumeMounts ([]VolumeMount)
修補策略:在鍵
mountPath
上合併Map:在合併期間,將保留鍵 mountPath 上的唯一值
要掛載到容器檔案系統中的 Pod 磁碟區。無法更新。
volumeMounts.mountPath (字串), 必填
磁碟區應掛載在容器內的路徑。不得包含 ':'。
volumeMounts.name (字串), 必填
這必須與 Volume 的 Name 相符。
volumeMounts.mountPropagation (字串)
mountPropagation 決定掛載如何從主機傳播到容器,以及反之亦然。未設定時,使用 MountPropagationNone。此欄位在 1.10 版中為 Beta 版。當 RecursiveReadOnly 設定為 IfPossible 或 Enabled 時,MountPropagation 必須為 None 或未指定(預設為 None)。
volumeMounts.readOnly (布林值)
如果為 true,則以唯讀方式掛載,否則以讀寫方式掛載(false 或未指定)。預設為 false。
volumeMounts.recursiveReadOnly (字串)
RecursiveReadOnly 指定是否應以遞迴方式處理唯讀掛載。
如果 ReadOnly 為 false,則此欄位沒有意義,且必須未指定。
如果 ReadOnly 為 true,且此欄位設定為 Disabled,則掛載不會以遞迴方式設為唯讀。如果此欄位設定為 IfPossible,則掛載會以遞迴方式設為唯讀(如果容器執行階段支援)。如果此欄位設定為 Enabled,則掛載會以遞迴方式設為唯讀(如果容器執行階段支援),否則 Pod 將不會啟動,且將產生錯誤以指示原因。
如果此欄位設定為 IfPossible 或 Enabled,則 MountPropagation 必須設定為 None(或未指定,預設為 None)。
如果未指定此欄位,則將其視為等同於 Disabled。
volumeMounts.subPath (字串)
應從中掛載容器磁碟區的磁碟區內路徑。預設為 ""(磁碟區的根目錄)。
volumeMounts.subPathExpr (字串)
應從中掛載容器磁碟區的磁碟區內擴充路徑。行為類似於 SubPath,但變數參考 $(VAR_NAME) 會使用容器的環境進行擴充。預設為 ""(磁碟區的根目錄)。SubPathExpr 和 SubPath 互斥。
volumeDevices ([]VolumeDevice)
修補策略:在鍵
devicePath
上合併Map:在合併期間,將保留鍵 devicePath 上的唯一值
volumeDevices 是容器要使用的區塊裝置列表。
volumeDevices.devicePath (字串), 必填
devicePath 是裝置將映射到的容器內路徑。
volumeDevices.name (字串), 必填
name 必須與 Pod 中 persistentVolumeClaim 的名稱相符
資源
resources (ResourceRequirements)
此容器所需的計算資源。無法更新。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/configuration/manage-resources-containers/
ResourceRequirements 描述計算資源需求。
resources.claims ([]ResourceClaim)
Map:在合併期間,鍵名稱上的唯一值將被保留
Claims 列出 spec.resourceClaims 中定義的、此容器使用的資源名稱。
這是一個 Alpha 欄位,需要啟用 DynamicResourceAllocation 功能閘道。
此欄位是不可變的。它只能為容器設定。
ResourceClaim 參考 PodSpec.ResourceClaims 中的一個項目。
resources.claims.name (字串), 必填
Name 必須與使用此欄位的 Pod 的 pod.spec.resourceClaims 中的一個項目名稱相符。它使該資源在容器內可用。
resources.claims.request (字串)
Request 是為參考宣告中的請求選擇的名稱。如果為空,則提供宣告中的所有內容,否則僅提供此請求的結果。
resources.limits (map[字串]Quantity)
Limits 描述允許的最大計算資源量。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/configuration/manage-resources-containers/
resources.requests (map[字串]Quantity)
Requests 描述所需的最小計算資源量。如果容器省略了 Requests,則預設為 Limits(如果已明確指定),否則預設為實作定義的值。Requests 不能超過 Limits。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/configuration/manage-resources-containers/
resizePolicy ([]ContainerResizePolicy)
Atomic:將在合併期間被取代
容器的資源調整大小原則。
ContainerResizePolicy 代表容器的資源調整大小原則。
resizePolicy.resourceName (字串), 必填
此資源調整大小原則適用的資源名稱。支援的值:cpu、memory。
resizePolicy.restartPolicy (字串), 必填
當指定的資源調整大小時要套用的重新啟動原則。如果未指定,則預設為 NotRequired。
生命週期
lifecycle (Lifecycle)
管理系統應針對容器生命週期事件採取的動作。無法更新。
Lifecycle 描述管理系統應針對容器生命週期事件採取的動作。對於 PostStart 和 PreStop 生命周期處理常式,容器的管理會被封鎖,直到動作完成為止,除非容器程序失敗,在這種情況下,處理常式會中止。
lifecycle.postStart (LifecycleHandler)
PostStart 在容器建立後立即呼叫。如果處理常式失敗,則容器會根據其重新啟動原則終止並重新啟動。容器的其他管理會被封鎖,直到 Hook 完成。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
lifecycle.preStop (LifecycleHandler)
PreStop 在由於 API 請求或管理事件(例如存活/啟動探針失敗、搶佔、資源爭用等)而終止容器之前立即呼叫。如果容器崩潰或退出,則不會呼叫處理常式。Pod 的終止寬限期倒數在 PreStop Hook 執行之前開始。無論處理常式的結果如何,容器最終都會在 Pod 的終止寬限期內終止(除非被 Finalizers 延遲)。容器的其他管理會被封鎖,直到 Hook 完成或達到終止寬限期。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
terminationMessagePath (字串)
選用:檔案的路徑,容器的終止訊息將寫入到該檔案,並掛載到容器的檔案系統中。寫入的訊息旨在簡短的最終狀態,例如斷言失敗訊息。如果大於 4096 位元組,則將被節點截斷。所有容器的總訊息長度將限制為 12kb。預設為 /dev/termination-log。無法更新。
terminationMessagePolicy (字串)
指示應如何填入終止訊息。File 將使用 terminationMessagePath 的內容來填入成功和失敗時的容器狀態訊息。如果終止訊息檔案為空,且容器以錯誤退出,則 FallbackToLogsOnError 將使用容器日誌輸出的最後一塊。日誌輸出限制為 2048 位元組或 80 行,以較小者為準。預設為 File。無法更新。
livenessProbe (Probe)
容器存活狀態的定期探測。如果探測失敗,容器將重新啟動。無法更新。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/workloads/pods/pod-lifecycle#container-probes
readinessProbe (Probe)
容器服務就緒狀態的定期探測。如果探測失敗,容器將從服務端點中移除。無法更新。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/workloads/pods/pod-lifecycle#container-probes
startupProbe (Probe)
StartupProbe 指示 Pod 已成功初始化。如果指定,則在成功完成之前不會執行其他探測。如果此探測失敗,則 Pod 將重新啟動,就像 livenessProbe 失敗一樣。這可用於在 Pod 生命周期開始時提供不同的探測參數,此時可能需要很長時間才能載入資料或預熱快取,而在穩態運作期間則不然。這無法更新。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/workloads/pods/pod-lifecycle#container-probes
restartPolicy (字串)
RestartPolicy 定義 Pod 中個別容器的重新啟動行為。此欄位只能為 init 容器設定,且唯一允許的值為 "Always"。對於非 init 容器或未指定此欄位時,重新啟動行為由 Pod 的重新啟動原則和容器類型定義。將 init 容器的 RestartPolicy 設定為 "Always" 將具有以下效果:此 init 容器將在退出時持續重新啟動,直到所有常規容器都已終止。一旦所有常規容器都已完成,所有 restartPolicy 為 "Always" 的 init 容器都將關閉。此生命週期與常規 init 容器不同,通常稱為「Sidecar」容器。儘管此 init 容器仍以 init 容器序列啟動,但它不會等待容器完成才繼續下一個 init 容器。相反,下一個 init 容器會在啟動此 init 容器之後立即啟動,或在任何 startupProbe 成功完成之後啟動。
安全性環境
securityContext (SecurityContext)
SecurityContext 定義應使用其執行的容器安全性選項。如果設定,SecurityContext 的欄位將覆寫 PodSecurityContext 的等效欄位。更多資訊:https://kubernetes.dev.org.tw/docs/tasks/configure-pod-container/security-context/
SecurityContext 保留將套用於容器的安全性組態。某些欄位同時存在於 SecurityContext 和 PodSecurityContext 中。當兩者都設定時,SecurityContext 中的值優先。
securityContext.allowPrivilegeEscalation (布林值)
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 (字串), 必填
type 指示將套用哪種類型的 AppArmor 設定檔。有效選項為:Localhost - 節點上預先載入的設定檔。RuntimeDefault - 容器執行階段的預設設定檔。Unconfined - 無 AppArmor 強制執行。
securityContext.appArmorProfile.localhostProfile (字串)
localhostProfile 指示應使用的節點上載入的設定檔。設定檔必須在節點上預先配置才能運作。必須符合設定檔的載入名稱。當且僅當 type 為 "Localhost" 時才必須設定。
securityContext.capabilities (Capabilities)
執行容器時要新增/刪除的權能。預設為容器執行階段授予的預設權能集。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
securityContext.capabilities.add ([]字串)
Atomic:將在合併期間被取代
新增的權能
securityContext.capabilities.drop ([]字串)
Atomic:將在合併期間被取代
移除的權能
securityContext.procMount (字串)
procMount 表示要用於容器的 proc 掛載類型。預設值為 Default,它使用容器執行階段預設值作為唯讀路徑和遮罩路徑。這需要啟用 ProcMountType 功能閘道。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
securityContext.privileged (布林值)
在特權模式下執行容器。特權容器中的程序本質上等同於主機上的 root。預設為 false。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
securityContext.readOnlyRootFilesystem (布林值)
此容器是否具有唯讀根檔案系統。預設為 false。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
securityContext.runAsUser (int64)
要執行容器程序進入點的 UID。如果未指定,則預設為映像檔中指定的使用者。也可以在 PodSecurityContext 中設定。如果在 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
securityContext.runAsNonRoot (布林值)
指示容器必須以非 root 使用者身分執行。如果為 true,則 Kubelet 將在執行階段驗證映像檔,以確保它不會以 UID 0 (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 時,無法設定此欄位。
securityContext.seLinuxOptions.level (字串)
Level 是套用於容器的 SELinux 層級標籤。
securityContext.seLinuxOptions.role (字串)
Role 是套用於容器的 SELinux 角色標籤。
securityContext.seLinuxOptions.type (字串)
Type 是套用於容器的 SELinux 類型標籤。
securityContext.seLinuxOptions.user (字串)
User 是套用於容器的 SELinux 使用者標籤。
securityContext.seccompProfile (SeccompProfile)
此容器要使用的 seccomp 選項。如果在 Pod 和容器層級都提供了 seccomp 選項,則容器選項將覆寫 Pod 選項。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
SeccompProfile 定義 Pod/容器的 seccomp 設定檔設定。只能設定一個設定檔來源。
securityContext.seccompProfile.type (字串), 必填
type 指示將套用哪種類型的 seccomp 設定檔。有效選項為
Localhost - 應使用在節點上的檔案中定義的設定檔。RuntimeDefault - 應使用容器執行階段預設設定檔。Unconfined - 不應套用任何設定檔。
securityContext.seccompProfile.localhostProfile (字串)
localhostProfile 指示應使用在節點上的檔案中定義的設定檔。設定檔必須在節點上預先配置才能運作。必須是相對於 kubelet 配置的 seccomp 設定檔位置的降序路徑。如果 type 為 "Localhost",則必須設定。對於任何其他類型,都不得設定。
securityContext.windowsOptions (WindowsSecurityContextOptions)
套用於所有容器的 Windows 特定設定。如果未指定,將使用 PodSecurityContext 中的選項。如果在 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。請注意,當 spec.os.name 為 linux 時,無法設定此欄位。
WindowsSecurityContextOptions 包含 Windows 特定的選項和憑證。
securityContext.windowsOptions.gmsaCredentialSpec (字串)
GMSACredentialSpec 是 GMSA 許可 Webhook (https://github.com/kubernetes-sigs/windows-gmsa) 在其中內嵌 GMSACredentialSpecName 欄位命名的 GMSA 憑證規格內容的位置。
securityContext.windowsOptions.gmsaCredentialSpecName (字串)
GMSACredentialSpecName 是要使用的 GMSA 憑證規格的名稱。
securityContext.windowsOptions.hostProcess (布林值)
HostProcess 決定容器是否應作為「主機程序」容器執行。Pod 的所有容器都必須具有相同有效 HostProcess 值(不允許混合使用 HostProcess 容器和非 HostProcess 容器)。此外,如果 HostProcess 為 true,則 HostNetwork 也必須設定為 true。
securityContext.windowsOptions.runAsUserName (字串)
在 Windows 中執行容器程序進入點的 UserName。如果未指定,則預設為映像中指定的使用者。也可以在 PodSecurityContext 中設定。如果在 SecurityContext 和 PodSecurityContext 中都設定了,則 SecurityContext 中指定的值優先。
除錯
stdin (布林值)
此容器是否應在容器執行階段中為 stdin 分配緩衝區。如果未設定,則容器中從 stdin 的讀取將始終導致 EOF。預設為 false。
stdinOnce (布林值)
容器執行階段是否應在單個附加開啟 stdin 通道後關閉它。當 stdin 為 true 時,stdin 流將在多個附加會話中保持開啟。如果 stdinOnce 設定為 true,則 stdin 會在容器啟動時開啟,在第一個用戶端附加到 stdin 之前為空,然後保持開啟並接受資料,直到用戶端斷開連線,此時 stdin 會關閉並保持關閉狀態,直到容器重新啟動。如果此標誌為 false,則從 stdin 讀取的容器程序將永遠不會收到 EOF。預設為 false
tty (布林值)
此容器是否應為自身分配 TTY,也需要 'stdin' 為 true。預設為 false。
臨時容器
EphemeralContainer 是一個臨時容器,您可以將其新增到現有的 Pod 中,以進行使用者啟動的活動,例如除錯。臨時容器沒有資源或排程保證,並且它們在退出或 Pod 移除或重新啟動時不會重新啟動。如果臨時容器導致 Pod 超出其資源分配,則 kubelet 可能會驅逐 Pod。
若要新增臨時容器,請使用現有 Pod 的 ephemeralcontainers 子資源。臨時容器可能無法移除或重新啟動。
name (字串), 必填
臨時容器的名稱,指定為 DNS_LABEL。此名稱在所有容器、init 容器和臨時容器中必須是唯一的。
targetContainerName (字串)
如果設定,則為 PodSpec 中此臨時容器目標容器的名稱。臨時容器將在此容器的命名空間(IPC、PID 等)中執行。如果未設定,則臨時容器使用 Pod Spec 中組態的命名空間。
容器執行階段必須實作對此功能的支援。如果執行階段不支援命名空間目標設定,則設定此欄位的結果未定義。
映像檔
image (字串)
容器映像檔名稱。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/containers/images
imagePullPolicy (字串)
映像檔提取原則。可以是 Always、Never、IfNotPresent 之一。如果指定 :latest 標籤,則預設為 Always,否則預設為 IfNotPresent。無法更新。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/containers/images#updating-images
進入點
command ([]字串)
Atomic:將在合併期間被取代
進入點陣列。不在 Shell 中執行。如果未提供此項,則會使用映像檔的 ENTRYPOINT。變數參考 $(VAR_NAME) 會使用容器的環境進行擴充。如果變數無法解析,則輸入字串中的參考將保持不變。雙 $$ 會縮減為單個 $,這樣可以跳脫 $(VAR_NAME) 語法:即 "$$(VAR_NAME)" 將產生字串常值 "$(VAR_NAME)"。跳脫的參考永遠不會被擴充,無論變數是否存在。無法更新。更多資訊:https://kubernetes.dev.org.tw/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
args ([]字串)
Atomic:將在合併期間被取代
進入點的引數。如果未提供此項,則會使用映像檔的 CMD。變數參考 $(VAR_NAME) 會使用容器的環境進行擴充。如果變數無法解析,則輸入字串中的參考將保持不變。雙 $$ 會縮減為單個 $,這樣可以跳脫 $(VAR_NAME) 語法:即 "$$(VAR_NAME)" 將產生字串常值 "$(VAR_NAME)"。跳脫的參考永遠不會被擴充,無論變數是否存在。無法更新。更多資訊:https://kubernetes.dev.org.tw/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
workingDir (字串)
容器的工作目錄。如果未指定,將使用容器執行階段的預設值,該預設值可能會在容器映像檔中設定。無法更新。
環境變數
env ([]EnvVar)
Patch 策略:在鍵
name
上合併Map:在合併期間,鍵名稱上的唯一值將被保留
要在容器中設定的環境變數列表。無法更新。
env.name (字串), 必填
環境變數的名稱。必須是 C_IDENTIFIER。
env.value (字串)
變數參考 $(VAR_NAME) 會使用容器中先前定義的環境變數和任何服務環境變數進行擴充。如果變數無法解析,則輸入字串中的參考將保持不變。雙 $$ 會縮減為單個 $,這允許逸出 $(VAR_NAME) 語法:即 "$$(VAR_NAME)" 將產生字串文字 "$(VAR_NAME)"。逸出的參考永遠不會被擴充,無論變數是否存在。預設為 ""。
env.valueFrom (EnvVarSource)
環境變數值的來源。如果 value 不為空,則無法使用。
env.valueFrom.configMapKeyRef (ConfigMapKeySelector)
選取 ConfigMap 的鍵。
env.valueFrom.configMapKeyRef.key (字串), 必填
要選取的鍵。
env.valueFrom.configMapKeyRef.name (字串)
參考對象的名稱。此欄位實際上是必填的,但由於回溯相容性,允許為空。此類型具有空值的實例幾乎肯定是錯誤的。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/overview/working-with-objects/names/#names
env.valueFrom.configMapKeyRef.optional (布林值)
指定是否必須定義 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.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 (字串), 必填
要從中選取的 Secret 的鍵。必須是有效的 Secret 鍵。
env.valueFrom.secretKeyRef.name (字串)
參考對象的名稱。此欄位實際上是必填的,但由於回溯相容性,允許為空。此類型具有空值的實例幾乎肯定是錯誤的。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/overview/working-with-objects/names/#names
env.valueFrom.secretKeyRef.optional (布林值)
指定是否必須定義 Secret 或其鍵
envFrom ([]EnvFromSource)
Atomic:將在合併期間被取代
用於在容器中填入環境變數的來源列表。在來源中定義的鍵必須是 C_IDENTIFIER。當容器啟動時,所有無效的鍵都將報告為事件。當一個鍵存在於多個來源中時,與最後一個來源相關聯的值將優先。由具有重複鍵的 Env 定義的值將優先。無法更新。
EnvFromSource 代表一組 ConfigMap 的來源
envFrom.configMapRef (ConfigMapEnvSource)
要從中選取的 ConfigMap
ConfigMapEnvSource 選取一個 ConfigMap 以填入環境變數。
目標 ConfigMap 的 Data 欄位的內容將表示鍵值對作為環境變數。
envFrom.configMapRef.name (字串)
參考對象的名稱。此欄位實際上是必填的,但由於回溯相容性,允許為空。此類型具有空值的實例幾乎肯定是錯誤的。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/overview/working-with-objects/names/#names
envFrom.configMapRef.optional (布林值)
指定是否必須定義 ConfigMap
envFrom.prefix (字串)
要前置到 ConfigMap 中每個鍵的可選識別符。必須是 C_IDENTIFIER。
envFrom.secretRef (SecretEnvSource)
要從中選取的 Secret
SecretEnvSource 選取一個 Secret 以填入環境變數。
目標 Secret 的 Data 欄位的內容將表示鍵值對作為環境變數。
envFrom.secretRef.name (字串)
參考對象的名稱。此欄位實際上是必填的,但由於回溯相容性,允許為空。此類型具有空值的實例幾乎肯定是錯誤的。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/overview/working-with-objects/names/#names
envFrom.secretRef.optional (布林值)
指定是否必須定義 Secret
磁碟區
volumeMounts ([]VolumeMount)
修補策略:在鍵
mountPath
上合併Map:在合併期間,將保留鍵 mountPath 上的唯一值
要掛載到容器檔案系統中的 Pod 磁碟區。臨時容器不允許子路徑掛載。無法更新。
volumeMounts.mountPath (字串), 必填
磁碟區應掛載在容器內的路徑。不得包含 ':'。
volumeMounts.name (字串), 必填
這必須與 Volume 的 Name 相符。
volumeMounts.mountPropagation (字串)
mountPropagation 決定掛載如何從主機傳播到容器,以及反之亦然。未設定時,使用 MountPropagationNone。此欄位在 1.10 版中為 Beta 版。當 RecursiveReadOnly 設定為 IfPossible 或 Enabled 時,MountPropagation 必須為 None 或未指定(預設為 None)。
volumeMounts.readOnly (布林值)
如果為 true,則以唯讀方式掛載,否則以讀寫方式掛載(false 或未指定)。預設為 false。
volumeMounts.recursiveReadOnly (字串)
RecursiveReadOnly 指定是否應以遞迴方式處理唯讀掛載。
如果 ReadOnly 為 false,則此欄位沒有意義,且必須未指定。
如果 ReadOnly 為 true,且此欄位設定為 Disabled,則掛載不會以遞迴方式設為唯讀。如果此欄位設定為 IfPossible,則掛載會以遞迴方式設為唯讀(如果容器執行階段支援)。如果此欄位設定為 Enabled,則掛載會以遞迴方式設為唯讀(如果容器執行階段支援),否則 Pod 將不會啟動,且將產生錯誤以指示原因。
如果此欄位設定為 IfPossible 或 Enabled,則 MountPropagation 必須設定為 None(或未指定,預設為 None)。
如果未指定此欄位,則將其視為等同於 Disabled。
volumeMounts.subPath (字串)
應從中掛載容器磁碟區的磁碟區內路徑。預設為 ""(磁碟區的根目錄)。
volumeMounts.subPathExpr (字串)
應從中掛載容器磁碟區的磁碟區內擴充路徑。行為類似於 SubPath,但變數參考 $(VAR_NAME) 會使用容器的環境進行擴充。預設為 ""(磁碟區的根目錄)。SubPathExpr 和 SubPath 互斥。
volumeDevices ([]VolumeDevice)
修補策略:在鍵
devicePath
上合併Map:在合併期間,將保留鍵 devicePath 上的唯一值
volumeDevices 是容器要使用的區塊裝置列表。
volumeDevices.devicePath (字串), 必填
devicePath 是裝置將映射到的容器內路徑。
volumeDevices.name (字串), 必填
name 必須與 Pod 中 persistentVolumeClaim 的名稱相符
資源
resizePolicy ([]ContainerResizePolicy)
Atomic:將在合併期間被取代
容器的資源調整大小原則。
ContainerResizePolicy 代表容器的資源調整大小原則。
resizePolicy.resourceName (字串), 必填
此資源調整大小原則適用的資源名稱。支援的值:cpu、memory。
resizePolicy.restartPolicy (字串), 必填
當指定的資源調整大小時要套用的重新啟動原則。如果未指定,則預設為 NotRequired。
生命週期
terminationMessagePath (字串)
選用:檔案的路徑,容器的終止訊息將寫入到該檔案,並掛載到容器的檔案系統中。寫入的訊息旨在簡短的最終狀態,例如斷言失敗訊息。如果大於 4096 位元組,則將被節點截斷。所有容器的總訊息長度將限制為 12kb。預設為 /dev/termination-log。無法更新。
terminationMessagePolicy (字串)
指示應如何填入終止訊息。File 將使用 terminationMessagePath 的內容來填入成功和失敗時的容器狀態訊息。如果終止訊息檔案為空,且容器以錯誤退出,則 FallbackToLogsOnError 將使用容器日誌輸出的最後一塊。日誌輸出限制為 2048 位元組或 80 行,以較小者為準。預設為 File。無法更新。
restartPolicy (字串)
用於管理 Pod 內每個容器的重新啟動行為的容器重新啟動策略。這可能僅針對初始化容器設定。您無法在臨時容器上設定此欄位。
除錯
stdin (布林值)
此容器是否應在容器執行階段中為 stdin 分配緩衝區。如果未設定,則容器中從 stdin 的讀取將始終導致 EOF。預設為 false。
stdinOnce (布林值)
容器執行階段是否應在單個附加開啟 stdin 通道後關閉它。當 stdin 為 true 時,stdin 流將在多個附加會話中保持開啟。如果 stdinOnce 設定為 true,則 stdin 會在容器啟動時開啟,在第一個用戶端附加到 stdin 之前為空,然後保持開啟並接受資料,直到用戶端斷開連線,此時 stdin 會關閉並保持關閉狀態,直到容器重新啟動。如果此標誌為 false,則從 stdin 讀取的容器程序將永遠不會收到 EOF。預設為 false
tty (布林值)
此容器是否應為自身分配 TTY,也需要 'stdin' 為 true。預設為 false。
安全性內容
securityContext (SecurityContext)
選填:SecurityContext 定義臨時容器應使用的安全選項。如果設定,SecurityContext 的欄位會覆寫 PodSecurityContext 的對等欄位。
SecurityContext 保留將套用於容器的安全性組態。某些欄位同時存在於 SecurityContext 和 PodSecurityContext 中。當兩者都設定時,SecurityContext 中的值優先。
securityContext.allowPrivilegeEscalation (布林值)
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 (字串), 必填
type 指示將套用哪種類型的 AppArmor 設定檔。有效選項為:Localhost - 節點上預先載入的設定檔。RuntimeDefault - 容器執行階段的預設設定檔。Unconfined - 無 AppArmor 強制執行。
securityContext.appArmorProfile.localhostProfile (字串)
localhostProfile 指示應使用的節點上載入的設定檔。設定檔必須在節點上預先配置才能運作。必須符合設定檔的載入名稱。當且僅當 type 為 "Localhost" 時才必須設定。
securityContext.capabilities (Capabilities)
執行容器時要新增/刪除的權能。預設為容器執行階段授予的預設權能集。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
securityContext.capabilities.add ([]字串)
Atomic:將在合併期間被取代
新增的權能
securityContext.capabilities.drop ([]字串)
Atomic:將在合併期間被取代
移除的權能
securityContext.procMount (字串)
procMount 表示要用於容器的 proc 掛載類型。預設值為 Default,它使用容器執行階段預設值作為唯讀路徑和遮罩路徑。這需要啟用 ProcMountType 功能閘道。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
securityContext.privileged (布林值)
在特權模式下執行容器。特權容器中的程序本質上等同於主機上的 root。預設為 false。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
securityContext.readOnlyRootFilesystem (布林值)
此容器是否具有唯讀根檔案系統。預設為 false。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
securityContext.runAsUser (int64)
要執行容器程序進入點的 UID。如果未指定,則預設為映像檔中指定的使用者。也可以在 PodSecurityContext 中設定。如果在 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
securityContext.runAsNonRoot (布林值)
指示容器必須以非 root 使用者身分執行。如果為 true,則 Kubelet 將在執行階段驗證映像檔,以確保它不會以 UID 0 (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 時,無法設定此欄位。
securityContext.seLinuxOptions.level (字串)
Level 是套用於容器的 SELinux 層級標籤。
securityContext.seLinuxOptions.role (字串)
Role 是套用於容器的 SELinux 角色標籤。
securityContext.seLinuxOptions.type (字串)
Type 是套用於容器的 SELinux 類型標籤。
securityContext.seLinuxOptions.user (字串)
User 是套用於容器的 SELinux 使用者標籤。
securityContext.seccompProfile (SeccompProfile)
此容器要使用的 seccomp 選項。如果在 Pod 和容器層級都提供了 seccomp 選項,則容器選項將覆寫 Pod 選項。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。
SeccompProfile 定義 Pod/容器的 seccomp 設定檔設定。只能設定一個設定檔來源。
securityContext.seccompProfile.type (字串), 必填
type 指示將套用哪種類型的 seccomp 設定檔。有效選項為
Localhost - 應使用在節點上的檔案中定義的設定檔。RuntimeDefault - 應使用容器執行階段預設設定檔。Unconfined - 不應套用任何設定檔。
securityContext.seccompProfile.localhostProfile (字串)
localhostProfile 指示應使用在節點上的檔案中定義的設定檔。設定檔必須在節點上預先配置才能運作。必須是相對於 kubelet 配置的 seccomp 設定檔位置的降序路徑。如果 type 為 "Localhost",則必須設定。對於任何其他類型,都不得設定。
securityContext.windowsOptions (WindowsSecurityContextOptions)
套用於所有容器的 Windows 特定設定。如果未指定,將使用 PodSecurityContext 中的選項。如果在 SecurityContext 和 PodSecurityContext 中都設定,則 SecurityContext 中指定的值優先。請注意,當 spec.os.name 為 linux 時,無法設定此欄位。
WindowsSecurityContextOptions 包含 Windows 特定的選項和憑證。
securityContext.windowsOptions.gmsaCredentialSpec (字串)
GMSACredentialSpec 是 GMSA 許可 Webhook (https://github.com/kubernetes-sigs/windows-gmsa) 在其中內嵌 GMSACredentialSpecName 欄位命名的 GMSA 憑證規格內容的位置。
securityContext.windowsOptions.gmsaCredentialSpecName (字串)
GMSACredentialSpecName 是要使用的 GMSA 憑證規格的名稱。
securityContext.windowsOptions.hostProcess (布林值)
HostProcess 決定容器是否應作為「主機程序」容器執行。Pod 的所有容器都必須具有相同有效 HostProcess 值(不允許混合使用 HostProcess 容器和非 HostProcess 容器)。此外,如果 HostProcess 為 true,則 HostNetwork 也必須設定為 true。
securityContext.windowsOptions.runAsUserName (字串)
在 Windows 中執行容器程序進入點的 UserName。如果未指定,則預設為映像中指定的使用者。也可以在 PodSecurityContext 中設定。如果在 SecurityContext 和 PodSecurityContext 中都設定了,則 SecurityContext 中指定的值優先。
不允許
ports ([]ContainerPort)
修補策略:在鍵
containerPort
上合併Map:在合併期間,將保留鍵
containerPort, protocol
上的唯一值臨時容器不允許使用埠。
ports.containerPort (int32), 必填
要在 Pod 的 IP 位址上公開的埠號。這必須是有效的埠號,0 < x < 65536。
ports.hostIP (字串)
要將外部埠繫結到的主機 IP。
ports.hostPort (int32)
要在主機上公開的埠號。如果指定,這必須是有效的埠號,0 < x < 65536。如果指定 HostNetwork,則這必須與 ContainerPort 相符。大多數容器不需要此項。
ports.name (字串)
如果指定,則這必須是 IANA_SVC_NAME 且在 Pod 內是唯一的。Pod 中每個具名的埠都必須具有唯一的名稱。埠的名稱,可供服務參考。
ports.protocol (字串)
埠的協定。必須是 UDP、TCP 或 SCTP。預設為 "TCP"。
resources (ResourceRequirements)
臨時容器不允許使用資源。臨時容器使用已配置給 Pod 的備用資源。
ResourceRequirements 描述計算資源需求。
resources.claims ([]ResourceClaim)
Map:在合併期間,鍵名稱上的唯一值將被保留
Claims 列出 spec.resourceClaims 中定義的、此容器使用的資源名稱。
這是一個 Alpha 欄位,需要啟用 DynamicResourceAllocation 功能閘道。
此欄位是不可變的。它只能為容器設定。
ResourceClaim 參考 PodSpec.ResourceClaims 中的一個項目。
resources.claims.name (字串), 必填
Name 必須與使用此欄位的 Pod 的 pod.spec.resourceClaims 中的一個項目名稱相符。它使該資源在容器內可用。
resources.claims.request (字串)
Request 是為參考宣告中的請求選擇的名稱。如果為空,則提供宣告中的所有內容,否則僅提供此請求的結果。
resources.limits (map[字串]Quantity)
Limits 描述允許的最大計算資源量。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/configuration/manage-resources-containers/
resources.requests (map[字串]Quantity)
Requests 描述所需的最小計算資源量。如果容器省略了 Requests,則預設為 Limits(如果已明確指定),否則預設為實作定義的值。Requests 不能超過 Limits。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/configuration/manage-resources-containers/
lifecycle (Lifecycle)
臨時容器不允許使用生命週期。
Lifecycle 描述管理系統應針對容器生命週期事件採取的動作。對於 PostStart 和 PreStop 生命周期處理常式,容器的管理會被封鎖,直到動作完成為止,除非容器程序失敗,在這種情況下,處理常式會中止。
lifecycle.postStart (LifecycleHandler)
PostStart 在容器建立後立即呼叫。如果處理常式失敗,則容器會根據其重新啟動原則終止並重新啟動。容器的其他管理會被封鎖,直到 Hook 完成。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
lifecycle.preStop (LifecycleHandler)
PreStop 在由於 API 請求或管理事件(例如存活/啟動探針失敗、搶佔、資源爭用等)而終止容器之前立即呼叫。如果容器崩潰或退出,則不會呼叫處理常式。Pod 的終止寬限期倒數在 PreStop Hook 執行之前開始。無論處理常式的結果如何,容器最終都會在 Pod 的終止寬限期內終止(除非被 Finalizers 延遲)。容器的其他管理會被封鎖,直到 Hook 完成或達到終止寬限期。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
livenessProbe (Probe)
臨時容器不允許使用探針。
readinessProbe (Probe)
臨時容器不允許使用探針。
startupProbe (Probe)
臨時容器不允許使用探針。
LifecycleHandler
LifecycleHandler 定義應在生命週期 hook 中採取的特定動作。欄位中必須只指定一個,TCPSocket 除外。
exec (ExecAction)
Exec 指定要採取的動作。
exec.command ([]string)
Atomic:將在合併期間被取代
Command 是要在容器內執行的命令列,命令的工作目錄是容器檔案系統中的根目錄 ('/')。命令只是簡單地 exec'd,它不在 Shell 內執行,因此傳統的 Shell 指令 ('|' 等) 將無法運作。若要使用 Shell,您需要明確呼叫該 Shell。結束狀態 0 被視為存活/健康,而非零則為不健康。
httpGet (HTTPGetAction)
HTTPGet 指定要執行的 http 請求。
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)
Atomic:將在合併期間被取代
要在請求中設定的自訂標頭。HTTP 允許重複的標頭。
HTTPHeader 描述要在 HTTP 探針中使用的自訂標頭
httpGet.httpHeaders.name (string),必填
標頭欄位名稱。這將在輸出時進行正規化,因此大小寫變化的名稱將被理解為相同的標頭。
httpGet.httpHeaders.value (string),必填
標頭欄位值
httpGet.path (string)
要在 HTTP 伺服器上存取的路徑。
httpGet.scheme (string)
用於連線到主機的協定。預設為 HTTP。
sleep (SleepAction)
Sleep 表示容器在終止前應休眠的持續時間。
sleep.seconds (int64),必填
Seconds 是要休眠的秒數。
tcpSocket (TCPSocketAction)
已棄用。TCPSocket 不支援作為 LifecycleHandler,保留用於向後相容性。此欄位沒有驗證,並且在執行階段指定 tcp 處理常式時,生命週期 hook 將會失敗。
NodeAffinity
節點親和性是一組節點親和性排程規則。
preferredDuringSchedulingIgnoredDuringExecution ([]PreferredSchedulingTerm)
Atomic:將在合併期間被取代
排程器會偏好將 Pod 排程到滿足此欄位指定的親和性表達式的節點,但它可能會選擇違反一個或多個表達式的節點。最偏好的節點是權重總和最大的節點,即對於每個滿足所有排程需求(資源請求、requiredDuringScheduling 親和性表達式等)的節點,透過迭代此欄位的元素並在節點符合相應的 matchExpressions 時將「權重」加到總和來計算總和;總和最高的節點是最偏好的節點。
空的偏好排程詞彙符合權重為 0 的所有物件(即,它是無操作)。空的偏好排程詞彙不符合任何物件(即,也是無操作)。
preferredDuringSchedulingIgnoredDuringExecution.preference (NodeSelectorTerm),必填
節點選取器詞彙,與對應的權重相關聯。
空的或空的節點選取器詞彙不符合任何物件。它們的需求是 AND 運算。TopologySelectorTerm 類型實作 NodeSelectorTerm 的子集。
preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions ([]NodeSelectorRequirement)
Atomic:將在合併期間被取代
節點標籤的節點選取器需求清單。
preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields ([]NodeSelectorRequirement)
Atomic:將在合併期間被取代
節點欄位的節點選取器需求清單。
preferredDuringSchedulingIgnoredDuringExecution.weight (int32),必填
與符合對應的 nodeSelectorTerm 相關聯的權重,範圍為 1-100。
requiredDuringSchedulingIgnoredDuringExecution (NodeSelector)
如果在排程時未滿足此欄位指定的親和性需求,則 Pod 將不會排程到節點上。如果此欄位指定的親和性需求在 Pod 執行期間的某個時間點停止滿足(例如,由於更新),系統可能會或可能不會嘗試最終從其節點驅逐 Pod。
節點選取器表示一組節點上一個或多個標籤查詢的結果的聯集;也就是說,它表示由節點選取器詞彙表示的選取器的 OR 運算。
requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms ([]NodeSelectorTerm),必填
Atomic:將在合併期間被取代
必填。節點選取器詞彙清單。詞彙是 OR 運算。
空的或空的節點選取器詞彙不符合任何物件。它們的需求是 AND 運算。TopologySelectorTerm 類型實作 NodeSelectorTerm 的子集。
requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)
Atomic:將在合併期間被取代
節點標籤的節點選取器需求清單。
requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)
Atomic:將在合併期間被取代
節點欄位的節點選取器需求清單。
PodAffinity
Pod 親和性是一組 Pod 間親和性排程規則。
preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)
Atomic:將在合併期間被取代
排程器會偏好將 Pod 排程到滿足此欄位指定的親和性表達式的節點,但它可能會選擇違反一個或多個表達式的節點。最偏好的節點是權重總和最大的節點,即對於每個滿足所有排程需求(資源請求、requiredDuringScheduling 親和性表達式等)的節點,透過迭代此欄位的元素並在節點具有符合對應的 podAffinityTerm 的 Pod 時將「權重」加到總和來計算總和;總和最高的節點是最偏好的節點。
每個節點都會加入所有符合的 WeightedPodAffinityTerm 欄位的權重,以找出最偏好的節點
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm),必填
必填。Pod 親和性詞彙,與對應的權重相關聯。
定義一組 Pod(即那些符合相對於給定命名空間的 labelSelector 的 Pod),此 Pod 應與其共置(親和性)或不共置(反親和性),其中共置定義為在節點上執行,該節點的標籤值具有鍵
符合一組 Pod 的任何 Pod 在其上執行的任何節點的標籤值 preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey (string),必填
此 Pod 應與指定命名空間中符合 labelSelector 的 Pod 共置(親和性)或不共置(反親和性),其中共置定義為在節點上執行,該節點的標籤值具有鍵 topologyKey 符合任何選定 Pod 在其上執行的任何節點的標籤值。不允許使用空的 topologyKey。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector (LabelSelector)
對一組資源(在此案例中為 Pod)的標籤查詢。如果為空值,則此 PodAffinityTerm 不符合任何 Pod。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.matchLabelKeys ([]string)
Atomic:將在合併期間被取代
MatchLabelKeys 是一組 Pod 標籤鍵,用於選取將被納入考量的 Pod。這些鍵用於從傳入的 Pod 標籤中查閱值,這些鍵值標籤與
labelSelector
合併為key in (value)
,以選取現有 Pod 群組,這些 Pod 將被納入考量以用於傳入 Pod 的 Pod(反)親和性。在傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。相同的鍵禁止同時存在於 matchLabelKeys 和 labelSelector 中。此外,當未設定 labelSelector 時,無法設定 matchLabelKeys。這是 Beta 欄位,需要啟用 MatchLabelKeysInPodAffinity 功能閘道(預設為啟用)。preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys ([]string)
Atomic:將在合併期間被取代
MismatchLabelKeys 是一組 Pod 標籤鍵,用於選取將被納入考量的 Pod。這些鍵用於從傳入的 Pod 標籤中查閱值,這些鍵值標籤與
labelSelector
合併為key notin (value)
,以選取現有 Pod 群組,這些 Pod 將被納入考量以用於傳入 Pod 的 Pod(反)親和性。在傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。相同的鍵禁止同時存在於 mismatchLabelKeys 和 labelSelector 中。此外,當未設定 labelSelector 時,無法設定 mismatchLabelKeys。這是 Beta 欄位,需要啟用 MatchLabelKeysInPodAffinity 功能閘道(預設為啟用)。preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)
對詞彙套用到的命名空間集合的標籤查詢。詞彙套用於由此欄位選取的命名空間與 namespaces 欄位中列出的命名空間的聯集。空值選取器和空值或空的命名空間清單表示「此 Pod 的命名空間」。空的選取器 ({}) 符合所有命名空間。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)
Atomic:將在合併期間被取代
namespaces 指定詞彙套用到的命名空間名稱的靜態清單。詞彙套用於此欄位中列出的命名空間與 namespaceSelector 選取的命名空間的聯集。空值或空的命名空間清單和空值 namespaceSelector 表示「此 Pod 的命名空間」。
preferredDuringSchedulingIgnoredDuringExecution.weight (int32),必填
與符合對應的 podAffinityTerm 相關聯的權重,範圍為 1-100。
requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)
Atomic:將在合併期間被取代
如果在排程時未滿足此欄位指定的親和性需求,則 Pod 將不會排程到節點上。如果此欄位指定的親和性需求在 Pod 執行期間的某個時間點停止滿足(例如,由於 Pod 標籤更新),系統可能會或可能不會嘗試最終從其節點驅逐 Pod。當有多個元素時,對應於每個 podAffinityTerm 的節點清單會被交集,即必須滿足所有詞彙。
定義一組 Pod(即那些符合相對於給定命名空間的 labelSelector 的 Pod),此 Pod 應與其共置(親和性)或不共置(反親和性),其中共置定義為在節點上執行,該節點的標籤值具有鍵
符合一組 Pod 的任何 Pod 在其上執行的任何節點的標籤值 requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string),必填
此 Pod 應與指定命名空間中符合 labelSelector 的 Pod 共置(親和性)或不共置(反親和性),其中共置定義為在節點上執行,該節點的標籤值具有鍵 topologyKey 符合任何選定 Pod 在其上執行的任何節點的標籤值。不允許使用空的 topologyKey。
requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)
對一組資源(在此案例中為 Pod)的標籤查詢。如果為空值,則此 PodAffinityTerm 不符合任何 Pod。
requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys ([]string)
Atomic:將在合併期間被取代
MatchLabelKeys 是一組 Pod 標籤鍵,用於選取將被納入考量的 Pod。這些鍵用於從傳入的 Pod 標籤中查閱值,這些鍵值標籤與
labelSelector
合併為key in (value)
,以選取現有 Pod 群組,這些 Pod 將被納入考量以用於傳入 Pod 的 Pod(反)親和性。在傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。相同的鍵禁止同時存在於 matchLabelKeys 和 labelSelector 中。此外,當未設定 labelSelector 時,無法設定 matchLabelKeys。這是 Beta 欄位,需要啟用 MatchLabelKeysInPodAffinity 功能閘道(預設為啟用)。requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys ([]string)
Atomic:將在合併期間被取代
MismatchLabelKeys 是一組 Pod 標籤鍵,用於選取將被納入考量的 Pod。這些鍵用於從傳入的 Pod 標籤中查閱值,這些鍵值標籤與
labelSelector
合併為key notin (value)
,以選取現有 Pod 群組,這些 Pod 將被納入考量以用於傳入 Pod 的 Pod(反)親和性。在傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。相同的鍵禁止同時存在於 mismatchLabelKeys 和 labelSelector 中。此外,當未設定 labelSelector 時,無法設定 mismatchLabelKeys。這是 Beta 欄位,需要啟用 MatchLabelKeysInPodAffinity 功能閘道(預設為啟用)。requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)
對詞彙套用到的命名空間集合的標籤查詢。詞彙套用於由此欄位選取的命名空間與 namespaces 欄位中列出的命名空間的聯集。空值選取器和空值或空的命名空間清單表示「此 Pod 的命名空間」。空的選取器 ({}) 符合所有命名空間。
requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)
Atomic:將在合併期間被取代
namespaces 指定詞彙套用到的命名空間名稱的靜態清單。詞彙套用於此欄位中列出的命名空間與 namespaceSelector 選取的命名空間的聯集。空值或空的命名空間清單和空值 namespaceSelector 表示「此 Pod 的命名空間」。
PodAntiAffinity
Pod 反親和性是一組 Pod 間反親和性排程規則。
preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)
Atomic:將在合併期間被取代
排程器會偏好將 Pod 排程到滿足此欄位指定的反親和性表達式的節點,但它可能會選擇違反一個或多個表達式的節點。最偏好的節點是權重總和最大的節點,即對於每個滿足所有排程需求(資源請求、requiredDuringScheduling 反親和性表達式等)的節點,透過迭代此欄位的元素並在節點具有符合對應的 podAffinityTerm 的 Pod 時將「權重」加到總和來計算總和;總和最高的節點是最偏好的節點。
每個節點都會加入所有符合的 WeightedPodAffinityTerm 欄位的權重,以找出最偏好的節點
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm),必填
必填。Pod 親和性詞彙,與對應的權重相關聯。
定義一組 Pod(即那些符合相對於給定命名空間的 labelSelector 的 Pod),此 Pod 應與其共置(親和性)或不共置(反親和性),其中共置定義為在節點上執行,該節點的標籤值具有鍵
符合一組 Pod 的任何 Pod 在其上執行的任何節點的標籤值 preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey (string),必填
此 Pod 應與指定命名空間中符合 labelSelector 的 Pod 共置(親和性)或不共置(反親和性),其中共置定義為在節點上執行,該節點的標籤值具有鍵 topologyKey 符合任何選定 Pod 在其上執行的任何節點的標籤值。不允許使用空的 topologyKey。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector (LabelSelector)
對一組資源(在此案例中為 Pod)的標籤查詢。如果為空值,則此 PodAffinityTerm 不符合任何 Pod。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.matchLabelKeys ([]string)
Atomic:將在合併期間被取代
MatchLabelKeys 是一組 Pod 標籤鍵,用於選取將被納入考量的 Pod。這些鍵用於從傳入的 Pod 標籤中查閱值,這些鍵值標籤與
labelSelector
合併為key in (value)
,以選取現有 Pod 群組,這些 Pod 將被納入考量以用於傳入 Pod 的 Pod(反)親和性。在傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。相同的鍵禁止同時存在於 matchLabelKeys 和 labelSelector 中。此外,當未設定 labelSelector 時,無法設定 matchLabelKeys。這是 Beta 欄位,需要啟用 MatchLabelKeysInPodAffinity 功能閘道(預設為啟用)。preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys ([]string)
Atomic:將在合併期間被取代
MismatchLabelKeys 是一組 Pod 標籤鍵,用於選取將被納入考量的 Pod。這些鍵用於從傳入的 Pod 標籤中查閱值,這些鍵值標籤與
labelSelector
合併為key notin (value)
,以選取現有 Pod 群組,這些 Pod 將被納入考量以用於傳入 Pod 的 Pod(反)親和性。在傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。相同的鍵禁止同時存在於 mismatchLabelKeys 和 labelSelector 中。此外,當未設定 labelSelector 時,無法設定 mismatchLabelKeys。這是 Beta 欄位,需要啟用 MatchLabelKeysInPodAffinity 功能閘道(預設為啟用)。preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)
對詞彙套用到的命名空間集合的標籤查詢。詞彙套用於由此欄位選取的命名空間與 namespaces 欄位中列出的命名空間的聯集。空值選取器和空值或空的命名空間清單表示「此 Pod 的命名空間」。空的選取器 ({}) 符合所有命名空間。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)
Atomic:將在合併期間被取代
namespaces 指定詞彙套用到的命名空間名稱的靜態清單。詞彙套用於此欄位中列出的命名空間與 namespaceSelector 選取的命名空間的聯集。空值或空的命名空間清單和空值 namespaceSelector 表示「此 Pod 的命名空間」。
preferredDuringSchedulingIgnoredDuringExecution.weight (int32),必填
與符合對應的 podAffinityTerm 相關聯的權重,範圍為 1-100。
requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)
Atomic:將在合併期間被取代
如果在排程時未滿足此欄位指定的反親和性需求,則 Pod 將不會排程到節點上。如果此欄位指定的反親和性需求在 Pod 執行期間的某個時間點停止滿足(例如,由於 Pod 標籤更新),系統可能會或可能不會嘗試最終從其節點驅逐 Pod。當有多個元素時,對應於每個 podAffinityTerm 的節點清單會被交集,即必須滿足所有詞彙。
定義一組 Pod(即那些符合相對於給定命名空間的 labelSelector 的 Pod),此 Pod 應與其共置(親和性)或不共置(反親和性),其中共置定義為在節點上執行,該節點的標籤值具有鍵
符合一組 Pod 的任何 Pod 在其上執行的任何節點的標籤值 requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string),必填
此 Pod 應與指定命名空間中符合 labelSelector 的 Pod 共置(親和性)或不共置(反親和性),其中共置定義為在節點上執行,該節點的標籤值具有鍵 topologyKey 符合任何選定 Pod 在其上執行的任何節點的標籤值。不允許使用空的 topologyKey。
requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)
對一組資源(在此案例中為 Pod)的標籤查詢。如果為空值,則此 PodAffinityTerm 不符合任何 Pod。
requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys ([]string)
Atomic:將在合併期間被取代
MatchLabelKeys 是一組 Pod 標籤鍵,用於選取將被納入考量的 Pod。這些鍵用於從傳入的 Pod 標籤中查閱值,這些鍵值標籤與
labelSelector
合併為key in (value)
,以選取現有 Pod 群組,這些 Pod 將被納入考量以用於傳入 Pod 的 Pod(反)親和性。在傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。相同的鍵禁止同時存在於 matchLabelKeys 和 labelSelector 中。此外,當未設定 labelSelector 時,無法設定 matchLabelKeys。這是 Beta 欄位,需要啟用 MatchLabelKeysInPodAffinity 功能閘道(預設為啟用)。requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys ([]string)
Atomic:將在合併期間被取代
MismatchLabelKeys 是一組 Pod 標籤鍵,用於選取將被納入考量的 Pod。這些鍵用於從傳入的 Pod 標籤中查閱值,這些鍵值標籤與
labelSelector
合併為key notin (value)
,以選取現有 Pod 群組,這些 Pod 將被納入考量以用於傳入 Pod 的 Pod(反)親和性。在傳入 Pod 標籤中不存在的鍵將被忽略。預設值為空。相同的鍵禁止同時存在於 mismatchLabelKeys 和 labelSelector 中。此外,當未設定 labelSelector 時,無法設定 mismatchLabelKeys。這是 Beta 欄位,需要啟用 MatchLabelKeysInPodAffinity 功能閘道(預設為啟用)。requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)
對詞彙套用到的命名空間集合的標籤查詢。詞彙套用於由此欄位選取的命名空間與 namespaces 欄位中列出的命名空間的聯集。空值選取器和空值或空的命名空間清單表示「此 Pod 的命名空間」。空的選取器 ({}) 符合所有命名空間。
requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)
Atomic:將在合併期間被取代
namespaces 指定詞彙套用到的命名空間名稱的靜態清單。詞彙套用於此欄位中列出的命名空間與 namespaceSelector 選取的命名空間的聯集。空值或空的命名空間清單和空值 namespaceSelector 表示「此 Pod 的命名空間」。
Probe
Probe 描述要針對容器執行的健康檢查,以判斷它是否存活或準備好接收流量。
exec (ExecAction)
Exec 指定要採取的動作。
exec.command ([]string)
Atomic:將在合併期間被取代
Command 是要在容器內執行的命令列,命令的工作目錄是容器檔案系統中的根目錄 ('/')。命令只是簡單地 exec'd,它不在 Shell 內執行,因此傳統的 Shell 指令 ('|' 等) 將無法運作。若要使用 Shell,您需要明確呼叫該 Shell。結束狀態 0 被視為存活/健康,而非零則為不健康。
httpGet (HTTPGetAction)
HTTPGet 指定要執行的 http 請求。
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)
Atomic:將在合併期間被取代
要在請求中設定的自訂標頭。HTTP 允許重複的標頭。
HTTPHeader 描述要在 HTTP 探針中使用的自訂標頭
httpGet.httpHeaders.name (string),必填
標頭欄位名稱。這將在輸出時進行正規化,因此大小寫變化的名稱將被理解為相同的標頭。
httpGet.httpHeaders.value (string),必填
標頭欄位值
httpGet.path (string)
要在 HTTP 伺服器上存取的路徑。
httpGet.scheme (string)
用於連線到主機的協定。預設為 HTTP。
tcpSocket (TCPSocketAction)
TCPSocket 指定涉及 TCP 埠的動作。
initialDelaySeconds (int32)
容器啟動後,在啟動存活探針之前的秒數。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/workloads/pods/pod-lifecycle#container-probes
terminationGracePeriodSeconds (int64)
Pod 在探針失敗時優雅終止所需的選填持續時間 (秒)。寬限期是在將終止訊號傳送給 Pod 中執行的程序之後,以及使用 kill 訊號強制停止程序的時間之間的持續時間 (秒)。將此值設定為長於程序的預期清理時間。如果此值為空值,則將使用 Pod 的 terminationGracePeriodSeconds。否則,此值會覆寫 Pod 規格提供的值。值必須是非負整數。值零表示透過 kill 訊號立即停止(沒有關閉的機會)。這是 Beta 欄位,需要啟用 ProbeTerminationGracePeriod 功能閘道。最小值為 1。如果未設定,則使用 spec.terminationGracePeriodSeconds。
periodSeconds (int32)
執行探針的頻率(以秒為單位)。預設為 10 秒。最小值為 1。
timeoutSeconds (int32)
探針逾時的秒數。預設為 1 秒。最小值為 1。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/workloads/pods/pod-lifecycle#container-probes
failureThreshold (int32)
在探針成功後,被視為失敗的最小連續失敗次數。預設為 3。最小值為 1。
successThreshold (int32)
在探針失敗後,被視為成功的最小連續成功次數。預設為 1。對於存活和啟動探針必須為 1。最小值為 1。
grpc (GRPCAction)
GRPC 指定涉及 GRPC 埠的動作。
grpc.port (int32),必填
gRPC 服務的埠號。編號必須在 1 到 65535 的範圍內。
grpc.service (string)
Service 是要放置在 gRPC HealthCheckRequest 中的服務名稱(請參閱 https://github.com/grpc/grpc/blob/master/doc/health-checking.md)。
如果未指定此項,則預設行為由 gRPC 定義。
PodStatus
PodStatus 表示關於 Pod 狀態的資訊。狀態可能會落後於系統的實際狀態,尤其是在託管 Pod 的節點無法聯繫控制平面的情況下。
nominatedNodeName (string)
nominatedNodeName 僅在此 Pod 搶佔節點上的其他 Pod 時設定,但由於搶佔受害者會收到其優雅終止期間,因此它無法立即排程。此欄位不保證 Pod 將排程在此節點上。如果其他節點更快可用,排程器可能會決定將 Pod 放置在其他地方。排程器也可能決定將此節點上的資源提供給在搶佔後建立的更高優先順序的 Pod。因此,當 Pod 被排程時,此欄位可能與 PodSpec.nodeName 不同。
hostIP (string)
hostIP 保留 Pod 被指派到的主機的 IP 位址。如果 Pod 尚未啟動,則為空。Pod 可以指派給在 kubelet 中有問題的節點,這反過來意味著即使節點已指派給 Pod,HostIP 也將不會更新
hostIPs ([]HostIP)
Patch 策略:在鍵
ip
上合併Atomic:將在合併期間被取代
hostIPs 保留配置給主機的 IP 位址。如果指定此欄位,則第一個項目必須符合 hostIP 欄位。如果 Pod 尚未啟動,則此清單為空。Pod 可以指派給在 kubelet 中有問題的節點,這反過來意味著即使節點已指派給此 Pod,HostIPs 也將不會更新。
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.dev.org.tw/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
message (string)
人類可讀的訊息,指示關於 Pod 處於此條件的原因的詳細資訊。
reason (string)
簡短的 CamelCase 訊息,指示關於 Pod 處於此狀態的原因的詳細資訊。例如 'Evicted'
podIP (string)
配置給 Pod 的 podIP 位址。至少在叢集內可路由。如果尚未配置,則為空。
podIPs ([]PodIP)
Patch 策略:在鍵
ip
上合併Map:在合併期間,鍵 ip 上的唯一值將被保留
podIPs 保留配置給 Pod 的 IP 位址。如果指定此欄位,則第 0 個項目必須符合 podIP 欄位。對於 IPv4 和 IPv6,Pod 最多可以配置每個值 1 個。如果尚未配置 IP,則此清單為空。
podIPs.ip (string),必填
IP 是指派給 Pod 的 IP 位址
conditions ([]PodCondition)
Patch 策略:在鍵
type
上合併Map:在合併期間,將保留鍵類型上的唯一值
Pod 的目前服務狀態。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
PodCondition 包含此 Pod 目前條件的詳細資訊。
conditions.status (string),必填
Status 是條件的狀態。可以是 True、False、Unknown。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
conditions.type (string),必填
Type 是條件的類型。更多資訊:https://kubernetes.dev.org.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.reason (string)
條件上次轉換的唯一、單字、CamelCase 原因。
qosClass (string)
根據資源需求指派給 Pod 的服務品質 (QOS) 分類 請參閱 PodQOSClass 類型以取得可用的 QOS 類別 更多資訊:https://kubernetes.dev.org.tw/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
initContainerStatuses ([]ContainerStatus)
Atomic:將在合併期間被取代
清單中每個資訊清單中的初始化容器都有一個項目。最近成功的初始化容器將具有 ready = true,最近啟動的容器將設定 startTime。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
ContainerStatus 包含此容器目前狀態的詳細資訊。
initContainerStatuses.allocatedResources (map[string]Quantity)
AllocatedResources 表示節點為此容器配置的計算資源。在 Pod 成功准入以及成功准入所需的 Pod 大小調整後,Kubelet 會將此值設定為 Container.Resources.Requests。
initContainerStatuses.allocatedResourcesStatus ([]ResourceStatus)
Patch 策略:在鍵
name
上合併Map:在合併期間,鍵名稱上的唯一值將被保留
AllocatedResourcesStatus 表示為此 Pod 配置的各種資源的狀態。
initContainerStatuses.allocatedResourcesStatus.name (string),必填
資源的名稱。在 Pod 內必須是唯一的,並且符合 Pod 規格中的資源之一。
initContainerStatuses.allocatedResourcesStatus.resources ([]ResourceHealth)
Map:在合併期間,將保留鍵 resourceID 上的唯一值
唯一資源健康狀況的清單。清單中的每個元素都包含唯一的資源 ID 和資源健康狀況。至少,ResourceID 必須在 Pod 的生命週期內唯一識別配置給節點上 Pod 的資源。請參閱 ResourceID 類型以取得其定義。
ResourceHealth 表示資源的健康狀況。它具有最新的裝置健康資訊。這是 KEP https://kep.k8s.io/4680 的一部分,並且計劃在 KEP 的未來迭代中新增歷史健康狀況變更。
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.dev.org.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)
關於執行中容器的詳細資訊
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 (字串)
關於容器尚未執行的原因訊息。
initContainerStatuses.lastState.waiting.reason (字串)
容器尚未執行的(簡要)原因。
initContainerStatuses.name (字串), 必填
Name 是一個 DNS_LABEL,代表容器的唯一名稱。Pod 中的每個容器在所有容器類型中都必須具有唯一的名稱。無法更新。
initContainerStatuses.ready (布林值), 必填
Ready 指定容器目前是否通過其就緒檢查。當就緒探測持續執行時,此值將會變更。如果未指定就緒探測,則一旦容器完全啟動(請參閱 Started 欄位),此欄位預設為 true。
此值通常用於判斷容器是否已準備好接受流量。
initContainerStatuses.resources (ResourceRequirements)
Resources 代表在執行中的容器啟動或成功調整大小後,已成功在該容器上實施的運算資源請求和限制。
ResourceRequirements 描述計算資源需求。
initContainerStatuses.resources.claims ([]ResourceClaim)
Map:在合併期間,鍵名稱上的唯一值將被保留
Claims 列出 spec.resourceClaims 中定義的、此容器使用的資源名稱。
這是一個 Alpha 欄位,需要啟用 DynamicResourceAllocation 功能閘道。
此欄位是不可變的。它只能為容器設定。
ResourceClaim 參考 PodSpec.ResourceClaims 中的一個項目。
initContainerStatuses.resources.claims.name (字串), 必填
Name 必須與使用此欄位的 Pod 的 pod.spec.resourceClaims 中的一個項目名稱相符。它使該資源在容器內可用。
initContainerStatuses.resources.claims.request (字串)
Request 是為參考宣告中的請求選擇的名稱。如果為空,則提供宣告中的所有內容,否則僅提供此請求的結果。
initContainerStatuses.resources.limits (map[string]Quantity)
Limits 描述允許的最大計算資源量。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/configuration/manage-resources-containers/
initContainerStatuses.resources.requests (map[string]Quantity)
Requests 描述所需的最小計算資源量。如果容器省略了 Requests,則預設為 Limits(如果已明確指定),否則預設為實作定義的值。Requests 不能超過 Limits。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/configuration/manage-resources-containers/
initContainerStatuses.restartCount (int32), 必填
RestartCount 保留容器已重新啟動的次數。Kubelet 會盡力始終遞增此值,但在某些情況下,由於節點重新啟動,狀態可能會遺失,然後此值可能會重設為 0。此值永遠不會為負數。
initContainerStatuses.started (布林值)
Started 指出容器是否已完成其 postStart 生命周期鉤子並通過其啟動探測。初始值為 false,在啟動探測被視為成功後變為 true。當容器重新啟動,或 kubelet 暫時遺失狀態時,重設為 false。在這兩種情況下,啟動探測將再次執行。當未定義 startupProbe 且容器正在執行並已通過 postStart 生命周期鉤子時,始終為 true。Null 值必須視為與 false 相同。
initContainerStatuses.state (ContainerState)
State 保留關於容器目前狀況的詳細資訊。
ContainerState 保留容器的可能狀態。只能指定其成員之一。如果未指定任何成員,則預設值為 ContainerStateWaiting。
initContainerStatuses.state.running (ContainerStateRunning)
關於執行中容器的詳細資訊
initContainerStatuses.state.terminated (ContainerStateTerminated)
關於已終止容器的詳細資訊
ContainerStateTerminated 是容器的已終止狀態。
initContainerStatuses.state.terminated.containerID (字串)
容器的 ID,格式為 '<type>://<container_id>'
initContainerStatuses.state.terminated.exitCode (int32), 必填
容器上次終止的結束狀態碼
initContainerStatuses.state.terminated.startedAt (時間)
容器先前執行開始的時間
Time 是 time.Time 的包裝器,它支援正確地封送處理到 YAML 和 JSON。為 time 套件提供的許多工廠方法提供了包裝器。
initContainerStatuses.state.terminated.finishedAt (時間)
容器上次終止的時間
Time 是 time.Time 的包裝器,它支援正確地封送處理到 YAML 和 JSON。為 time 套件提供的許多工廠方法提供了包裝器。
initContainerStatuses.state.terminated.message (字串)
關於容器上次終止的訊息
initContainerStatuses.state.terminated.reason (字串)
容器上次終止的(簡短)原因
initContainerStatuses.state.terminated.signal (int32)
容器上次終止的訊號
initContainerStatuses.state.waiting (ContainerStateWaiting)
關於等待中容器的詳細資訊
ContainerStateWaiting 是容器的等待狀態。
initContainerStatuses.state.waiting.message (字串)
關於容器尚未執行的原因訊息。
initContainerStatuses.state.waiting.reason (字串)
容器尚未執行的(簡要)原因。
initContainerStatuses.user (ContainerUser)
User 代表最初附加到容器第一個程序的使用者身分資訊
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)
Atomic:將在合併期間被取代
SupplementalGroups 是最初附加到容器中第一個程序的補充群組
initContainerStatuses.volumeMounts ([]VolumeMountStatus)
修補策略:在鍵
mountPath
上合併Map:在合併期間,將保留鍵 mountPath 上的唯一值
Volume 掛載的狀態。
VolumeMountStatus 顯示 Volume 掛載的狀態。
initContainerStatuses.volumeMounts.mountPath (字串), 必填
MountPath 對應於原始的 VolumeMount。
initContainerStatuses.volumeMounts.name (字串), 必填
Name 對應於原始 VolumeMount 的名稱。
initContainerStatuses.volumeMounts.readOnly (布林值)
ReadOnly 對應於原始的 VolumeMount。
initContainerStatuses.volumeMounts.recursiveReadOnly (字串)
RecursiveReadOnly 必須設定為 Disabled、Enabled 或未指定(對於非唯讀掛載)。原始 VolumeMount 中的 IfPossible 值必須根據掛載結果轉換為 Disabled 或 Enabled。
containerStatuses ([]ContainerStatus)
Atomic:將在合併期間被取代
此列表在 manifest 中每個容器各有一個項目。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
ContainerStatus 包含此容器目前狀態的詳細資訊。
containerStatuses.allocatedResources (map[string]Quantity)
AllocatedResources 表示節點為此容器配置的計算資源。在 Pod 成功准入以及成功准入所需的 Pod 大小調整後,Kubelet 會將此值設定為 Container.Resources.Requests。
containerStatuses.allocatedResourcesStatus ([]ResourceStatus)
Patch 策略:在鍵
name
上合併Map:在合併期間,鍵名稱上的唯一值將被保留
AllocatedResourcesStatus 表示為此 Pod 配置的各種資源的狀態。
containerStatuses.allocatedResourcesStatus.name (字串), 必填
資源的名稱。在 Pod 內必須是唯一的,並且符合 Pod 規格中的資源之一。
containerStatuses.allocatedResourcesStatus.resources ([]ResourceHealth)
Map:在合併期間,將保留鍵 resourceID 上的唯一值
唯一資源健康狀況的清單。清單中的每個元素都包含唯一的資源 ID 和資源健康狀況。至少,ResourceID 必須在 Pod 的生命週期內唯一識別配置給節點上 Pod 的資源。請參閱 ResourceID 類型以取得其定義。
ResourceHealth 表示資源的健康狀況。它具有最新的裝置健康資訊。這是 KEP https://kep.k8s.io/4680 的一部分,並且計劃在 KEP 的未來迭代中新增歷史健康狀況變更。
containerStatuses.allocatedResourcesStatus.resources.resourceID (字串), 必填
ResourceID 是資源的唯一識別碼。請參閱 ResourceID 類型以取得更多資訊。
containerStatuses.allocatedResourcesStatus.resources.health (字串)
資源的健康狀況。可以是以下之一
- Healthy:運作正常
- Unhealthy:報告為不健康。我們將此視為暫時的健康問題,因為我們目前沒有機制來區分暫時性和永久性問題。
- Unknown:無法判斷狀態。例如,裝置外掛程式已取消註冊,並且自那時起尚未重新註冊。
在未來,我們可能想要引入 PermanentlyUnhealthy 狀態。
containerStatuses.containerID (字串)
ContainerID 是容器的 ID,格式為 '<type>://<container_id>'。其中 type 是容器執行階段識別碼,從 CRI API 的 Version 呼叫傳回(例如 "containerd")。
containerStatuses.image (字串), 必填
Image 是容器正在執行的容器映像檔的名稱。容器映像檔可能與 PodSpec 中使用的映像檔不符,因為它可能已由執行階段解析。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/containers/images。
containerStatuses.imageID (字串), 必填
ImageID 是容器映像檔的映像檔 ID。映像檔 ID 可能與 PodSpec 中使用的映像檔的映像檔 ID 不符,因為它可能已由執行階段解析。
containerStatuses.lastState (ContainerState)
LastTerminationState 保留容器的上次終止狀態,以協助偵錯容器崩潰和重新啟動。如果容器仍在執行中且 RestartCount 為 0,則不會填入此欄位。
ContainerState 保留容器的可能狀態。只能指定其成員之一。如果未指定任何成員,則預設值為 ContainerStateWaiting。
containerStatuses.lastState.running (ContainerStateRunning)
關於執行中容器的詳細資訊
containerStatuses.lastState.terminated (ContainerStateTerminated)
關於已終止容器的詳細資訊
ContainerStateTerminated 是容器的已終止狀態。
containerStatuses.lastState.terminated.containerID (字串)
容器的 ID,格式為 '<type>://<container_id>'
containerStatuses.lastState.terminated.exitCode (int32), 必填
容器上次終止的結束狀態碼
containerStatuses.lastState.terminated.startedAt (時間)
容器先前執行開始的時間
Time 是 time.Time 的包裝器,它支援正確地封送處理到 YAML 和 JSON。為 time 套件提供的許多工廠方法提供了包裝器。
containerStatuses.lastState.terminated.finishedAt (時間)
容器上次終止的時間
Time 是 time.Time 的包裝器,它支援正確地封送處理到 YAML 和 JSON。為 time 套件提供的許多工廠方法提供了包裝器。
containerStatuses.lastState.terminated.message (字串)
關於容器上次終止的訊息
containerStatuses.lastState.terminated.reason (字串)
容器上次終止的(簡短)原因
containerStatuses.lastState.terminated.signal (int32)
容器上次終止的訊號
containerStatuses.lastState.waiting (ContainerStateWaiting)
關於等待中容器的詳細資訊
ContainerStateWaiting 是容器的等待狀態。
containerStatuses.lastState.waiting.message (字串)
關於容器尚未執行的原因訊息。
containerStatuses.lastState.waiting.reason (字串)
容器尚未執行的(簡要)原因。
containerStatuses.name (字串), 必填
Name 是一個 DNS_LABEL,代表容器的唯一名稱。Pod 中的每個容器在所有容器類型中都必須具有唯一的名稱。無法更新。
containerStatuses.ready (布林值), 必填
Ready 指定容器目前是否通過其就緒檢查。當就緒探測持續執行時,此值將會變更。如果未指定就緒探測,則一旦容器完全啟動(請參閱 Started 欄位),此欄位預設為 true。
此值通常用於判斷容器是否已準備好接受流量。
containerStatuses.resources (ResourceRequirements)
Resources 代表在執行中的容器啟動或成功調整大小後,已成功在該容器上實施的運算資源請求和限制。
ResourceRequirements 描述計算資源需求。
containerStatuses.resources.claims ([]ResourceClaim)
Map:在合併期間,鍵名稱上的唯一值將被保留
Claims 列出 spec.resourceClaims 中定義的、此容器使用的資源名稱。
這是一個 Alpha 欄位,需要啟用 DynamicResourceAllocation 功能閘道。
此欄位是不可變的。它只能為容器設定。
ResourceClaim 參考 PodSpec.ResourceClaims 中的一個項目。
containerStatuses.resources.claims.name (字串), 必填
Name 必須與使用此欄位的 Pod 的 pod.spec.resourceClaims 中的一個項目名稱相符。它使該資源在容器內可用。
containerStatuses.resources.claims.request (字串)
Request 是為參考宣告中的請求選擇的名稱。如果為空,則提供宣告中的所有內容,否則僅提供此請求的結果。
containerStatuses.resources.limits (map[string]Quantity)
Limits 描述允許的最大計算資源量。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/configuration/manage-resources-containers/
containerStatuses.resources.requests (map[string]Quantity)
Requests 描述所需的最小計算資源量。如果容器省略了 Requests,則預設為 Limits(如果已明確指定),否則預設為實作定義的值。Requests 不能超過 Limits。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/configuration/manage-resources-containers/
containerStatuses.restartCount (int32), 必填
RestartCount 保留容器已重新啟動的次數。Kubelet 會盡力始終遞增此值,但在某些情況下,由於節點重新啟動,狀態可能會遺失,然後此值可能會重設為 0。此值永遠不會為負數。
containerStatuses.started (布林值)
Started 指出容器是否已完成其 postStart 生命周期鉤子並通過其啟動探測。初始值為 false,在啟動探測被視為成功後變為 true。當容器重新啟動,或 kubelet 暫時遺失狀態時,重設為 false。在這兩種情況下,啟動探測將再次執行。當未定義 startupProbe 且容器正在執行並已通過 postStart 生命周期鉤子時,始終為 true。Null 值必須視為與 false 相同。
containerStatuses.state (ContainerState)
State 保留關於容器目前狀況的詳細資訊。
ContainerState 保留容器的可能狀態。只能指定其成員之一。如果未指定任何成員,則預設值為 ContainerStateWaiting。
containerStatuses.state.running (ContainerStateRunning)
關於執行中容器的詳細資訊
containerStatuses.state.terminated (ContainerStateTerminated)
關於已終止容器的詳細資訊
ContainerStateTerminated 是容器的已終止狀態。
containerStatuses.state.terminated.containerID (字串)
容器的 ID,格式為 '<type>://<container_id>'
containerStatuses.state.terminated.exitCode (int32), 必填
容器上次終止的結束狀態碼
containerStatuses.state.terminated.startedAt (時間)
容器先前執行開始的時間
Time 是 time.Time 的包裝器,它支援正確地封送處理到 YAML 和 JSON。為 time 套件提供的許多工廠方法提供了包裝器。
containerStatuses.state.terminated.finishedAt (時間)
容器上次終止的時間
Time 是 time.Time 的包裝器,它支援正確地封送處理到 YAML 和 JSON。為 time 套件提供的許多工廠方法提供了包裝器。
containerStatuses.state.terminated.message (字串)
關於容器上次終止的訊息
containerStatuses.state.terminated.reason (字串)
容器上次終止的(簡短)原因
containerStatuses.state.terminated.signal (int32)
容器上次終止的訊號
containerStatuses.state.waiting (ContainerStateWaiting)
關於等待中容器的詳細資訊
ContainerStateWaiting 是容器的等待狀態。
containerStatuses.state.waiting.message (字串)
關於容器尚未執行的原因訊息。
containerStatuses.state.waiting.reason (字串)
容器尚未執行的(簡要)原因。
containerStatuses.user (ContainerUser)
User 代表最初附加到容器第一個程序的使用者身分資訊
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)
Atomic:將在合併期間被取代
SupplementalGroups 是最初附加到容器中第一個程序的補充群組
containerStatuses.volumeMounts ([]VolumeMountStatus)
修補策略:在鍵
mountPath
上合併Map:在合併期間,將保留鍵 mountPath 上的唯一值
Volume 掛載的狀態。
VolumeMountStatus 顯示 Volume 掛載的狀態。
containerStatuses.volumeMounts.mountPath (字串), 必填
MountPath 對應於原始的 VolumeMount。
containerStatuses.volumeMounts.name (字串), 必填
Name 對應於原始 VolumeMount 的名稱。
containerStatuses.volumeMounts.readOnly (布林值)
ReadOnly 對應於原始的 VolumeMount。
containerStatuses.volumeMounts.recursiveReadOnly (字串)
RecursiveReadOnly 必須設定為 Disabled、Enabled 或未指定(對於非唯讀掛載)。原始 VolumeMount 中的 IfPossible 值必須根據掛載結果轉換為 Disabled 或 Enabled。
ephemeralContainerStatuses ([]ContainerStatus)
Atomic:將在合併期間被取代
此 Pod 中任何已執行之臨時容器的狀態。
ContainerStatus 包含此容器目前狀態的詳細資訊。
ephemeralContainerStatuses.allocatedResources (map[string]Quantity)
AllocatedResources 表示節點為此容器配置的計算資源。在 Pod 成功准入以及成功准入所需的 Pod 大小調整後,Kubelet 會將此值設定為 Container.Resources.Requests。
ephemeralContainerStatuses.allocatedResourcesStatus ([]ResourceStatus)
Patch 策略:在鍵
name
上合併Map:在合併期間,鍵名稱上的唯一值將被保留
AllocatedResourcesStatus 表示為此 Pod 配置的各種資源的狀態。
ephemeralContainerStatuses.allocatedResourcesStatus.name (字串), 必填
資源的名稱。在 Pod 內必須是唯一的,並且符合 Pod 規格中的資源之一。
ephemeralContainerStatuses.allocatedResourcesStatus.resources ([]ResourceHealth)
Map:在合併期間,將保留鍵 resourceID 上的唯一值
唯一資源健康狀況的清單。清單中的每個元素都包含唯一的資源 ID 和資源健康狀況。至少,ResourceID 必須在 Pod 的生命週期內唯一識別配置給節點上 Pod 的資源。請參閱 ResourceID 類型以取得其定義。
ResourceHealth 表示資源的健康狀況。它具有最新的裝置健康資訊。這是 KEP https://kep.k8s.io/4680 的一部分,並且計劃在 KEP 的未來迭代中新增歷史健康狀況變更。
ephemeralContainerStatuses.allocatedResourcesStatus.resources.resourceID (字串), 必填
ResourceID 是資源的唯一識別碼。請參閱 ResourceID 類型以取得更多資訊。
ephemeralContainerStatuses.allocatedResourcesStatus.resources.health (字串)
資源的健康狀況。可以是以下之一
- Healthy:運作正常
- Unhealthy:報告為不健康。我們將此視為暫時的健康問題,因為我們目前沒有機制來區分暫時性和永久性問題。
- Unknown:無法判斷狀態。例如,裝置外掛程式已取消註冊,並且自那時起尚未重新註冊。
在未來,我們可能想要引入 PermanentlyUnhealthy 狀態。
ephemeralContainerStatuses.containerID (字串)
ContainerID 是容器的 ID,格式為 '<type>://<container_id>'。其中 type 是容器執行階段識別碼,從 CRI API 的 Version 呼叫傳回(例如 "containerd")。
ephemeralContainerStatuses.image (字串), 必填
Image 是容器正在執行的容器映像檔的名稱。容器映像檔可能與 PodSpec 中使用的映像檔不符,因為它可能已由執行階段解析。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/containers/images。
ephemeralContainerStatuses.imageID (字串), 必填
ImageID 是容器映像檔的映像檔 ID。映像檔 ID 可能與 PodSpec 中使用的映像檔的映像檔 ID 不符,因為它可能已由執行階段解析。
ephemeralContainerStatuses.lastState (ContainerState)
LastTerminationState 保留容器的上次終止狀態,以協助偵錯容器崩潰和重新啟動。如果容器仍在執行中且 RestartCount 為 0,則不會填入此欄位。
ContainerState 保留容器的可能狀態。只能指定其成員之一。如果未指定任何成員,則預設值為 ContainerStateWaiting。
ephemeralContainerStatuses.lastState.running (ContainerStateRunning)
關於執行中容器的詳細資訊
ephemeralContainerStatuses.lastState.terminated (ContainerStateTerminated)
關於已終止容器的詳細資訊
ContainerStateTerminated 是容器的已終止狀態。
ephemeralContainerStatuses.lastState.terminated.containerID (字串)
容器的 ID,格式為 '<type>://<container_id>'
ephemeralContainerStatuses.lastState.terminated.exitCode (int32), 必填
容器上次終止的結束狀態碼
ephemeralContainerStatuses.lastState.terminated.startedAt (時間)
容器先前執行開始的時間
Time 是 time.Time 的包裝器,它支援正確地封送處理到 YAML 和 JSON。為 time 套件提供的許多工廠方法提供了包裝器。
ephemeralContainerStatuses.lastState.terminated.finishedAt (時間)
容器上次終止的時間
Time 是 time.Time 的包裝器,它支援正確地封送處理到 YAML 和 JSON。為 time 套件提供的許多工廠方法提供了包裝器。
ephemeralContainerStatuses.lastState.terminated.message (字串)
關於容器上次終止的訊息
ephemeralContainerStatuses.lastState.terminated.reason (字串)
容器上次終止的(簡短)原因
ephemeralContainerStatuses.lastState.terminated.signal (int32)
容器上次終止的訊號
ephemeralContainerStatuses.lastState.waiting (ContainerStateWaiting)
關於等待中容器的詳細資訊
ContainerStateWaiting 是容器的等待狀態。
ephemeralContainerStatuses.lastState.waiting.message (字串)
關於容器尚未執行的原因訊息。
ephemeralContainerStatuses.lastState.waiting.reason (字串)
容器尚未執行的(簡要)原因。
ephemeralContainerStatuses.name (字串), 必填
Name 是一個 DNS_LABEL,代表容器的唯一名稱。Pod 中的每個容器在所有容器類型中都必須具有唯一的名稱。無法更新。
ephemeralContainerStatuses.ready (布林值), 必填
Ready 指定容器目前是否通過其就緒檢查。當就緒探測持續執行時,此值將會變更。如果未指定就緒探測,則一旦容器完全啟動(請參閱 Started 欄位),此欄位預設為 true。
此值通常用於判斷容器是否已準備好接受流量。
ephemeralContainerStatuses.resources (ResourceRequirements)
Resources 代表在執行中的容器啟動或成功調整大小後,已成功在該容器上實施的運算資源請求和限制。
ResourceRequirements 描述計算資源需求。
ephemeralContainerStatuses.resources.claims ([]ResourceClaim)
Map:在合併期間,鍵名稱上的唯一值將被保留
Claims 列出 spec.resourceClaims 中定義的、此容器使用的資源名稱。
這是一個 Alpha 欄位,需要啟用 DynamicResourceAllocation 功能閘道。
此欄位是不可變的。它只能為容器設定。
ResourceClaim 參考 PodSpec.ResourceClaims 中的一個項目。
ephemeralContainerStatuses.resources.claims.name (字串), 必填
Name 必須與使用此欄位的 Pod 的 pod.spec.resourceClaims 中的一個項目名稱相符。它使該資源在容器內可用。
ephemeralContainerStatuses.resources.claims.request (字串)
Request 是為參考宣告中的請求選擇的名稱。如果為空,則提供宣告中的所有內容,否則僅提供此請求的結果。
ephemeralContainerStatuses.resources.limits (map[string]Quantity)
Limits 描述允許的最大計算資源量。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/configuration/manage-resources-containers/
ephemeralContainerStatuses.resources.requests (map[string]Quantity)
Requests 描述所需的最小計算資源量。如果容器省略了 Requests,則預設為 Limits(如果已明確指定),否則預設為實作定義的值。Requests 不能超過 Limits。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/configuration/manage-resources-containers/
ephemeralContainerStatuses.restartCount (int32), 必填
RestartCount 保留容器已重新啟動的次數。Kubelet 會盡力始終遞增此值,但在某些情況下,由於節點重新啟動,狀態可能會遺失,然後此值可能會重設為 0。此值永遠不會為負數。
ephemeralContainerStatuses.started (布林值)
Started 指出容器是否已完成其 postStart 生命周期鉤子並通過其啟動探測。初始值為 false,在啟動探測被視為成功後變為 true。當容器重新啟動,或 kubelet 暫時遺失狀態時,重設為 false。在這兩種情況下,啟動探測將再次執行。當未定義 startupProbe 且容器正在執行並已通過 postStart 生命周期鉤子時,始終為 true。Null 值必須視為與 false 相同。
ephemeralContainerStatuses.state (ContainerState)
State 保留關於容器目前狀況的詳細資訊。
ContainerState 保留容器的可能狀態。只能指定其成員之一。如果未指定任何成員,則預設值為 ContainerStateWaiting。
ephemeralContainerStatuses.state.running (ContainerStateRunning)
關於執行中容器的詳細資訊
ephemeralContainerStatuses.state.terminated (ContainerStateTerminated)
關於已終止容器的詳細資訊
ContainerStateTerminated 是容器的已終止狀態。
ephemeralContainerStatuses.state.terminated.containerID (字串)
容器的 ID,格式為 '<type>://<container_id>'
ephemeralContainerStatuses.state.terminated.exitCode (int32), 必填
容器上次終止的結束狀態碼
ephemeralContainerStatuses.state.terminated.startedAt (時間)
容器先前執行開始的時間
Time 是 time.Time 的包裝器,它支援正確地封送處理到 YAML 和 JSON。為 time 套件提供的許多工廠方法提供了包裝器。
ephemeralContainerStatuses.state.terminated.finishedAt (時間)
容器上次終止的時間
Time 是 time.Time 的包裝器,它支援正確地封送處理到 YAML 和 JSON。為 time 套件提供的許多工廠方法提供了包裝器。
ephemeralContainerStatuses.state.terminated.message (字串)
關於容器上次終止的訊息
ephemeralContainerStatuses.state.terminated.reason (字串)
容器上次終止的(簡短)原因
ephemeralContainerStatuses.state.terminated.signal (int32)
容器上次終止的訊號
ephemeralContainerStatuses.state.waiting (ContainerStateWaiting)
關於等待中容器的詳細資訊
ContainerStateWaiting 是容器的等待狀態。
ephemeralContainerStatuses.state.waiting.message (字串)
關於容器尚未執行的原因訊息。
ephemeralContainerStatuses.state.waiting.reason (字串)
容器尚未執行的(簡要)原因。
ephemeralContainerStatuses.user (ContainerUser)
User 代表最初附加到容器第一個程序的使用者身分資訊
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)
Atomic:將在合併期間被取代
SupplementalGroups 是最初附加到容器中第一個程序的補充群組
ephemeralContainerStatuses.volumeMounts ([]VolumeMountStatus)
修補策略:在鍵
mountPath
上合併Map:在合併期間,將保留鍵 mountPath 上的唯一值
Volume 掛載的狀態。
VolumeMountStatus 顯示 Volume 掛載的狀態。
ephemeralContainerStatuses.volumeMounts.mountPath (字串), 必填
MountPath 對應於原始的 VolumeMount。
ephemeralContainerStatuses.volumeMounts.name (字串), 必填
Name 對應於原始 VolumeMount 的名稱。
ephemeralContainerStatuses.volumeMounts.readOnly (布林值)
ReadOnly 對應於原始的 VolumeMount。
ephemeralContainerStatuses.volumeMounts.recursiveReadOnly (字串)
RecursiveReadOnly 必須設定為 Disabled、Enabled 或未指定(對於非唯讀掛載)。原始 VolumeMount 中的 IfPossible 值必須根據掛載結果轉換為 Disabled 或 Enabled。
resourceClaimStatuses ([]PodResourceClaimStatus)
Patch 策略:retainKeys,在鍵
name
上合併Map:在合併期間,鍵名稱上的唯一值將被保留
資源宣告的狀態。
PodResourceClaimStatus 儲存在每個 PodResourceClaim 的 PodStatus 中,這些 PodResourceClaim 參考 ResourceClaimTemplate。它儲存對應 ResourceClaim 的產生名稱。
resourceClaimStatuses.name (字串), 必填
Name 唯一識別 Pod 內部的此資源宣告。這必須與 pod.spec.resourceClaims 中項目的名稱相符,這表示字串必須是 DNS_LABEL。
resourceClaimStatuses.resourceClaimName (字串)
ResourceClaimName 是為 Pod 在 Pod 的命名空間中產生的 ResourceClaim 名稱。如果未設定,則不需要產生 ResourceClaim。在這種情況下,可以忽略 pod.spec.resourceClaims 項目。
resize (字串)
Pod 容器所需的資源調整大小狀態。如果沒有資源調整大小正在擱置,則為空。對容器資源的任何變更都會自動將此設定為 "Proposed"
PodList
PodList 是 Pod 的列表。
items ([]Pod), 必填
Pod 的列表。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
apiVersion (字串)
APIVersion 定義此物件表示法的版本化綱要。伺服器應將可辨識的綱要轉換為最新的內部值,並可能拒絕無法辨識的值。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind (字串)
Kind 是一個字串值,表示此物件所代表的 REST 資源。伺服器可以從用戶端提交請求的端點推斷出此值。無法更新。以 CamelCase 格式。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata (ListMeta)
標準列表 metadata。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
Operations
get
讀取指定的 Pod
HTTP Request
GET /api/v1/namespaces/{namespace}/pods/{name}
Parameters
Response
200 (Pod): OK
401: 未經授權
get
讀取指定 Pod 的臨時容器
HTTP Request
GET /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers
Parameters
Response
200 (Pod): OK
401: 未經授權
get
讀取指定 Pod 的日誌
HTTP Request
GET /api/v1/namespaces/{namespace}/pods/{name}/log
Parameters
name (在路徑中): 字串, 必填
Pod 的名稱
namespace (在路徑中): 字串, 必填
container (在查詢中): 字串
要串流日誌的容器。如果 Pod 中只有一個容器,則預設為僅限該容器。
follow (在查詢中): 布林值
追蹤 Pod 的日誌串流。預設為 false。
insecureSkipTLSVerifyBackend (在查詢中): 布林值
insecureSkipTLSVerifyBackend 表示 apiserver 不應確認其連線後端的伺服器憑證的有效性。這將使 apiserver 和後端之間的 HTTPS 連線變得不安全。這表示 apiserver 無法驗證其接收的日誌資料是否來自真正的 kubelet。如果 kubelet 設定為驗證 apiserver 的 TLS 憑證,則不表示與真正 kubelet 的連線容易受到中間人攻擊(例如,攻擊者無法攔截來自真正 kubelet 的實際日誌資料)。
limitBytes (在查詢中): 整數
如果設定,則為在終止日誌輸出之前從伺服器讀取的位元組數。這可能不會顯示完整的最後一行日誌,並且可能傳回略多或略少於指定的限制。
pretty (在查詢中): 字串
previous (在查詢中): 布林值
傳回先前的已終止容器日誌。預設為 false。
sinceSeconds (在查詢中): 整數
從目前時間開始往前推算多少秒以顯示日誌的相對時間。如果此值早於 Pod 啟動時間,則僅會傳回自 Pod 啟動以來的日誌。如果此值在未來,則不會傳回任何日誌。sinceSeconds 和 sinceTime 只能指定其中一個。
tailLines (在查詢中): 整數
如果設定,則為要顯示的日誌結尾行數。如果未指定,則會從容器建立時或自 sinceSeconds 或 sinceTime 起顯示日誌
timestamps (在查詢中): 布林值
如果為 true,則在每行日誌輸出的開頭新增 RFC3339 或 RFC3339Nano 時間戳記。預設為 false。
Response
200 (字串): OK
401: 未經授權
get
讀取指定 Pod 的狀態
HTTP Request
GET /api/v1/namespaces/{namespace}/pods/{name}/status
Parameters
Response
200 (Pod): OK
401: 未經授權
list
列出或監看 Pod 種類的物件
HTTP Request
GET /api/v1/namespaces/{namespace}/pods
Parameters
namespace (在路徑中): 字串, 必填
allowWatchBookmarks (在查詢中): 布林值
continue (在查詢中): 字串
fieldSelector (在查詢中): 字串
labelSelector (在查詢中): 字串
limit (在查詢中): 整數
pretty (在查詢中): 字串
resourceVersion (在查詢中): 字串
resourceVersionMatch (在查詢中): 字串
sendInitialEvents (在查詢中): 布林值
timeoutSeconds (在查詢中): 整數
watch (在查詢中): 布林值
Response
200 (PodList): OK
401: 未經授權
list
列出或監看 Pod 種類的物件
HTTP Request
GET /api/v1/pods
Parameters
allowWatchBookmarks (在查詢中): 布林值
continue (在查詢中): 字串
fieldSelector (在查詢中): 字串
labelSelector (在查詢中): 字串
limit (在查詢中): 整數
pretty (在查詢中): 字串
resourceVersion (在查詢中): 字串
resourceVersionMatch (在查詢中): 字串
sendInitialEvents (在查詢中): 布林值
timeoutSeconds (在查詢中): 整數
watch (在查詢中): 布林值
Response
200 (PodList): OK
401: 未經授權
create
建立 Pod
HTTP Request
POST /api/v1/namespaces/{namespace}/pods
Parameters
namespace (在路徑中): 字串, 必填
body: Pod, 必填
dryRun (在查詢中): 字串
fieldManager (在查詢中): 字串
fieldValidation (在查詢中): 字串
pretty (在查詢中): 字串
Response
200 (Pod): OK
201 (Pod): 已建立
202 (Pod): 已接受
401: 未經授權
update
取代指定的 Pod
HTTP Request
PUT /api/v1/namespaces/{namespace}/pods/{name}
Parameters
name (在路徑中): 字串, 必填
Pod 的名稱
namespace (在路徑中): 字串, 必填
body: Pod, 必填
dryRun (在查詢中): 字串
fieldManager (在查詢中): 字串
fieldValidation (在查詢中): 字串
pretty (在查詢中): 字串
Response
200 (Pod): OK
201 (Pod): 已建立
401: 未經授權
update
取代指定 Pod 的臨時容器
HTTP Request
PUT /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers
Parameters
name (在路徑中): 字串, 必填
Pod 的名稱
namespace (在路徑中): 字串, 必填
body: Pod, 必填
dryRun (在查詢中): 字串
fieldManager (在查詢中): 字串
fieldValidation (在查詢中): 字串
pretty (在查詢中): 字串
Response
200 (Pod): OK
201 (Pod): 已建立
401: 未經授權
update
取代指定 Pod 的狀態
HTTP Request
PUT /api/v1/namespaces/{namespace}/pods/{name}/status
Parameters
name (在路徑中): 字串, 必填
Pod 的名稱
namespace (在路徑中): 字串, 必填
body: Pod, 必填
dryRun (在查詢中): 字串
fieldManager (在查詢中): 字串
fieldValidation (在查詢中): 字串
pretty (在查詢中): 字串
Response
200 (Pod): OK
201 (Pod): 已建立
401: 未經授權
patch
部分更新指定的 Pod
HTTP Request
PATCH /api/v1/namespaces/{namespace}/pods/{name}
Parameters
name (在路徑中): 字串, 必填
Pod 的名稱
namespace (在路徑中): 字串, 必填
body: Patch, 必填
dryRun (在查詢中): 字串
fieldManager (在查詢中): 字串
fieldValidation (在查詢中): 字串
force (在查詢中): 布林值
pretty (在查詢中): 字串
Response
200 (Pod): OK
201 (Pod): 已建立
401: 未經授權
patch
部分更新指定 Pod 的臨時容器
HTTP Request
PATCH /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers
Parameters
name (在路徑中): 字串, 必填
Pod 的名稱
namespace (在路徑中): 字串, 必填
body: Patch, 必填
dryRun (在查詢中): 字串
fieldManager (在查詢中): 字串
fieldValidation (在查詢中): 字串
force (在查詢中): 布林值
pretty (在查詢中): 字串
Response
200 (Pod): OK
201 (Pod): 已建立
401: 未經授權
patch
部分更新指定 Pod 的狀態
HTTP Request
PATCH /api/v1/namespaces/{namespace}/pods/{name}/status
Parameters
name (在路徑中): 字串, 必填
Pod 的名稱
namespace (在路徑中): 字串, 必填
body: Patch, 必填
dryRun (在查詢中): 字串
fieldManager (在查詢中): 字串
fieldValidation (在查詢中): 字串
force (在查詢中): 布林值
pretty (在查詢中): 字串
Response
200 (Pod): OK
201 (Pod): 已建立
401: 未經授權
delete
刪除 Pod
HTTP Request
DELETE /api/v1/namespaces/{namespace}/pods/{name}
Parameters
name (在路徑中): 字串, 必填
Pod 的名稱
namespace (在路徑中): 字串, 必填
body: DeleteOptions
dryRun (在查詢中): 字串
gracePeriodSeconds (在查詢中): 整數
pretty (在查詢中): 字串
propagationPolicy (在查詢中): 字串
Response
200 (Pod): OK
202 (Pod): 已接受
401: 未經授權
deletecollection
刪除 Pod 的集合
HTTP Request
DELETE /api/v1/namespaces/{namespace}/pods
Parameters
namespace (在路徑中): 字串, 必填
body: DeleteOptions
continue (在查詢中): 字串
dryRun (在查詢中): 字串
fieldSelector (在查詢中): 字串
gracePeriodSeconds (在查詢中): 整數
labelSelector (在查詢中): 字串
limit (在查詢中): 整數
pretty (在查詢中): 字串
propagationPolicy (在查詢中): 字串
resourceVersion (在查詢中): 字串
resourceVersionMatch (在查詢中): 字串
sendInitialEvents (在查詢中): 布林值
timeoutSeconds (在查詢中): 整數
Response
200 (Status): OK
401: 未經授權
此頁面為自動產生。
如果您計畫回報此頁面的問題,請在您的問題描述中註明此頁面為自動產生。此修正可能需要在 Kubernetes 專案的其他地方進行。