2017-02-19 28 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