在 Kubernetes 的 kubectl/run.go 程式碼中,Generate 函數傳回一個結果列表,其中包括兩種類型:runtime.Object 和 error。然而函數的最後一行是 return &deployment, nil,這首先引發了一個問題:&deployment 如何滿足runtime.Object 類型。
runtime.Object 是一個在k8s.io/apimachinery/pkg/runtime 套件中定義的介面。它代表 Kubernetes API 中的抽象物件。要實作該接口,類型必須具有以下方法:
在本例中,deployment 是一個類型為 extensionsv1beta1.Deployment 的本地變量,它是 Kubernetes API 類型。 extensionsv1beta1.Deployment 擴充了metav1.TypeMeta,它提供了 GetObjectKind() 方法。此外,extensionsv1beta1.Deployment 也直接實作了 DeepCopyObject() 方法。
Go 中的 & 運算子建立指向變數的指標。指標的類型與其基底類型不同。然而,在這種情況下:
根據 Go 規範,介面類型可以儲存任何類型的值,其方法集是介面的超集。在這種情況下,*extensionsv1beta1.Deployment 的方法集是runtime.Object 的方法集的超集。因此,&deployment可以被賦值為runtime.Object類型的變量,滿足Generate函數的回傳類型。
以上是部署指標如何滿足Kubernetes中的runtime.Object介面?的詳細內容。更多資訊請關注PHP中文網其他相關文章!