簡體   English   中英

Kubernetes CRD:在附加打印機列中顯示持續時間

[英]Kubernetes CRD: Show durations in additionalPrinterColumns

在 Kubernetes CustomResourceDefinitions (CRDs) 中,我們可以指定additionalPrinterColumns ,(例如)用於kubectl get與 CRD。 列的值通常使用jsonPath從 CRD 的狀態中提取。 Kubernetes 文檔中,我們還可以看到時間戳以用戶友好的方式呈現(例如, 5m2h ,表示從該時間戳到現在的持續時間):

additionalPrinterColumns:
  - name: Duration
    type: date
    jsonPath: .status.completitionTimestamp

Kubernetes Job資源是資源的一個示例,它不僅顯示它何時存在,而且它運行了很長時間

NAME               COMPLETIONS   DURATION   AGE
hello-4111706356   0/1                      0s
hello-4111706356   0/1           0s         0s
hello-4111706356   1/1           5s         5s

我正在尋找為我的 CRD 構建類似的東西,即:以相同的方式顯示兩個時間戳之間的持續時間。 更具體地說,我想獲得由 Kubernetes 評估和格式化的.status.startTimestamp.status.completitionTimestamp等兩個狀態字段之間的持續時間。

由於在Job資源中完成了完全相同的事情,我想知道這是否可能,或者這是否是 kubectl 內置的特殊行為?

我將部分回答您的問題,以便您對什么/如何/在哪里有一些了解和想法。


kubectl 獲取

當執行kubectl get jobs時, kubernetes API server決定提供哪些字段作為響應:

kubectl工具依賴於服務器端的 output 格式。 集群的 API 服務器決定kubectl get命令顯示哪些列

這里

jobsDuration字段也在服務器端計算。 發生這種情況是因為job是 kubernetes 服務器的眾所周知的資源,並且它內置在代碼“如何打印響應”中。 請參閱JobDuration - 打印機

這也可以通過運行常規命令來檢查:

kubectl get job job-name --v=8

然后使用server-print標志設置為false (出於人類可讀的原因,默認為true ):

kubectl get job job-name --v=8 --server-print=false

最后一個命令將只返回一般信息, nameage將顯示在 output 中。


可以做什么

讓我們從CRD 和控制器開始:

就其本身而言,自定義資源可讓您存儲和檢索結構化數據。 當您將自定義資源與自定義 controller 結合使用時,自定義資源將提供真正的聲明性 API。

Kubernetes 聲明性 API 強制執行職責分離。 您聲明資源的所需 state。 The Kubernetes controller keeps the current state of Kubernetes objects in sync with your declared desired state. 這與命令式 API 形成對比,您可以在其中指示服務器做什么。

前進到feature gates 我們對CustomResourceSubresources感興趣:

對從CustomResourceDefinition創建的資源啟用/status/scale子資源。

從 kubernetes 1.16開始,默認啟用此feature gate

因此,可以在 CRD subresource的狀態中創建諸如duration-execution之類的自定義字段,並且自定義 controller 可以在使用watch update funtion function 更改值時更新給定字段的值。

第2部分

應該考慮到controller prunning

默認情況下,所有版本的自定義資源的所有未指定字段都會被修剪。 不過,可以通過在結構 OpenAPI v3 驗證模式中添加x-kubernetes-preserve-unknown-fields: true來選擇退出特定的字段子樹。

這是關於自定義字段和additionalPrinterColumns的非常相似的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM