2017-02-19 25 views
3

我正在閱讀一些關於k8s資源模型的文檔,但我對here中的「不透明整數資源」感到困惑,究竟是什麼「不透明」意味着什麼?如何理解Kubernetes資源模型中的「不透明整數資源」?

感謝您的幫助〜

+0

歡迎來到Stack Overflow!請參考[遊覽](http://stackoverflow.com/tour),環顧四周,閱讀[幫助中心](http://stackoverflow.com/help),特別是[我該如何問一個好問題?](http://stackoverflow.com/help/how-to-ask)和[我可以問什麼問題?](http://stackoverflow.com/help/on-topic)。 –

+0

我其實很喜歡這個問題:-) –

回答

1

在這種情況下,不透明只是意味着,Kubernetes不知道,也不需要知道你要定義什麼樣的資源。這是否是網絡帶寬,磁盤空間或moos並不重要。集羣管理員負責定義和管理這些值。

5

Kubernetes 瞭解什麼CPU和內存是和可以通過各種方式發現這些資源。所以一個節點可能有4個CPU和32GB內存。豆莢可以請求這些資源,調度程序將確保豆莢在具有足夠的這些資源仍然可用的節點上進行調度。

但也可以有其他類型的資源。假設您的一些節點有特殊的USB dongles attached for BitCoin mining,8個插入每個節點。這個資源被稱爲不透明資源,因爲Kubernetes不知道明白什麼是BitCoin挖掘加密狗(即浪費金錢)。

使用Opaque Integer Resources功能,您可以聲明存在BitCoin採礦軟件狗這樣的事情,並且特定的節點有8個。它被稱爲整數資源,因爲它不可能有3.5節點連接到一個節點,並且Pod可能不會請求1.5節點來完成它的工作。

另一個例子可能是您的一些節點配備了1TB SSD。您可以以MB爲單位指定它們的大小,並將此信息附加到節點。我們來調用資源ssdmb。現在您的數據庫應用程序可能需要ssdmb資源中的400個。雖然Kubernetes不知道ssdmb現在是什麼,但它明白您的Pod需要在具有ssdmb資源的節點上進行調度,並且至少有400個資源仍可用。

爲了紀念名爲節點2節點爲具有ssdmb(假設你正在你的機器上運行kubectl proxy網址)1000:

curl -X PATCH \ 
    --header "Accept: application/json" \ 
    --header "Content-Type: application/json-patch+json" \ 
    --data-raw '[{"op":"add", "path":"/status/capacity/pod.alpha.kubernetes.io~1opaque-int 
-resource-ssdmb", "value":"1000"}]' \ 
    http://127.0.0.1:8001/api/v1/nodes/node-2/status 

這也可以用

kubectl patch node node-2 \ 
    --patch='[{"op":"add", "path":"/status/capacity/pod.alpha.kubernetes.io~1opaque-int 
-resource-ssdmb", "value":"1000"}]' 
實現

然後,要讓Pod請求此資源,您可以:

apiVersion: v1 
kind: Pod 
metadata: 
    name: my-pod 
spec: 
    containers: 
    - name: my-container 
    image: myimage 
    resources: 
     requests: 
     cpu: 1 
     pod.alpha.kubernetes.io/opaque-int-resource-ssdmb: 400 

在創建此Pod並執行kubectl describe node node-2之後,您將看到如下所示的內容:

Capacity:                            
cpu:             2  
pod.alpha.kubernetes.io/opaque-int-resource-ssdmb:  1k 
pods:             110 
Allocatable: 
cpu:             1 
pod.alpha.kubernetes.io/opaque-int-resource-ssdmb:  600 
pods:             109