如何理解Kubernetes资源模型中的"不透明整数资源"?

lit*_*hua 3 kubernetes

我正在阅读一些关于k8s资源模型的文档,但是我对这里的 "不透明整数资源"感到困惑,究竟什么是"不透明"呢?

谢谢你的帮助〜

Jan*_*art 5

Kubernetes 了解 CPU和内存是什么,并可以通过各种方式发现这些资源.因此一个节点可能有4个CPU和32GB内存.Pod可以请求这些资源,调度程序将确保在具有足够可用资源的节点上调度Pod.

但是可以有其他类型的资源.假设你的一些节点有特殊的USB加密狗连接用于BitCoin挖掘,8插入每个节点.此资源称为不透明资源,因为Kubernetes 不了解 BitCoin挖掘加密狗是什么(即浪费金钱).

使用Opaque Integer Resources功能,您可以声明存在BitCoin挖掘加密狗这样的东西,并且特定节点有8个.它被称为整数资源,因为它不可能将3.5个加密狗连接到节点,并且Pod也可能不会请求1.5加密狗来完成它的工作.

另一个例子可能是你的一些节点配备了1TB SSD.您可以以MB为单位指定其大小,并将此信息附加到节点.我们来称呼资源ssdmb.现在,您的数据库应用程序可以获得400个ssdmb资源.Altough Kubernetes不知道ssdmb现在它了解您的Pod需要在具有ssdmb可用资源的节点上进行调度,并且至少有400个仍然可用.

要将名为node-2的节点标记为具有1000个ssdmb(该URL假定您kubectl proxy在计算机上运行):

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
Run Code Online (Sandbox Code Playgroud)

同样可以实现

kubectl patch node node-2 \
  --patch='[{"op":"add", "path":"/status/capacity/pod.alpha.kubernetes.io~1opaque-int
-resource-ssdmb", "value":"1000"}]'
Run Code Online (Sandbox Code Playgroud)

然后,要使您的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
Run Code Online (Sandbox Code Playgroud)

创建这个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
Run Code Online (Sandbox Code Playgroud)