Kubernetes Object
為 K8S 中的持久性實體(Persistent Entity),用以表示 Cluster 中的狀態。K8S Object 說明了:
- 正在運行哪個容器化 App
- 該 App 的可用資源
- 該 App 的行為,例如:重啟規則、更新規則、失敗容許等...
一旦創建 K8S Object,K8S 會確保 Object 存續。
Object Spec and Status
- Spec:用來描述/定義 Object 的行為,在創建 Object 時提供。
- Status:用來描述 Object 的狀態,由 K8S 管理。
定義 Object
創建 Object 時,一定要提供 Spec。可以透過 K8S API 創建 Object,可以在此時以 API 參數,或是 yaml 檔案定義 Spec。
yaml 必填
- apiVersion:K8S API 版本
- kind:K8S Object 類型,例如:Pod、Deployment、Service
- metadata:協助用來識別 Object 的資料
- spec:Object 的內容物
Object Name and IDs
每個 K8S Object 都有個 Name 跟 UID。
Name
- 相同 type 中唯一,可自訂。
- 如果 Name 作為 DNS Subdomain 使用,須符合以下規則:
- 少於 253 字元
- 只能小寫字母及
- - 開頭結尾皆為字母
- 如果 Name 作為 DNS Label 使用,須符合以下規則:
- 少於 63 字元
- 只能小寫字母及
- - 開頭結尾皆為字母
- 如果 Name 作為 Path Segment 使用,只能使用小寫字母及
-
UID
Cluster 中唯一,由 K8S 派發。
Namespace
Cluster 中的 Virtual Cluster。適合用在多組團隊/多專案共用 Cluster 的情況。
- Name 只需在 Namespace 中唯一即可;跨 Namespace 重複沒有關係。
- 大多數的 K8S 服務都在 Namespace 中;除了 Nodes。
DNS
創建 Service 時,同時會創建 DNS Entry,以 <service-name>.<namespace>.svc.cluster.local 呈現。