首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
Kubernetes IP Masquerade Agent 用户指南
Kubernetes云管理控制器
Kubernetes安全地清空一个节点
Kubernetes保护集群
Kubernetes调试DNS问题
Kubernetes改变默认 StorageClass
Kubernetes更改PersistentVolume的回收策略
Kubernetes关键插件Pod的调度保证
Kubernetes静态加密Secret数据
Kubernetes开发云控制器管理器
Kubernetes控制节点上的CPU管理策略
Kubernetes控制节点上的拓扑管理策略
Kubernetes名字空间演练
Kubernetes配置API对象配额
启用/禁用 Kubernetes API
Kubernetes迁移多副本的控制面
Kubernetes升级集群
Kubernetes声明网络策略
Kubernetes使用CoreDNS进行服务发现
Kubernetes使用KMS驱动进行数据加密
使用Kubernetes API访问集群
Kubernetes使用NUMA感知的内存管理器
Kubernetes通过名字空间共享集群
Kubernetes通过配置文件设置Kubelet参数
为Kubernetes运行etcd集群
Kubernetes为节点发布扩展资源
Kubernetes限制存储使用量
Kubernetes验证已签名容器镜像
以非root用户身份运行Kubernetes节点组件
在Kubernetes集群中使用NodeLocal DNSCache
在Kubernetes集群中使用sysctl
Kubernetes在集群中使用级联删除
在运行中的集群上重新配置节点的 kubelet
Kubernetes自定义DNS服务
Kubernetes自动扩缩集群DNS服务
当前位置:
首页>>
技术小册>>
Kubernetes中文教程(五)
小册名称:Kubernetes中文教程(五)
本文展示了如何为节点指定扩展资源(Extended Resource)。 扩展资源允许集群管理员发布节点级别的资源,这些资源在不进行发布的情况下无法被 Kubernetes 感知。 ## 获取你的节点名称 ```shell kubectl get nodes ``` 选择一个节点用于此练习。 ## 在你的一个节点上发布一种新的扩展资源 为在一个节点上发布一种新的扩展资源,需要发送一个 HTTP PATCH 请求到 Kubernetes API server。 例如:假设你的一个节点上带有四个 dongle 资源。 下面是一个 PATCH 请求的示例,该请求为你的节点发布四个 dongle 资源。 ``` PATCH /api/v1/nodes/<your-node-name>/status HTTP/1.1 Accept: application/json Content-Type: application/json-patch+json Host: k8s-master:8080 [ { "op": "add", "path": "/status/capacity/example.com~1dongle", "value": "4" } ] ``` 注意:Kubernetes 不需要了解 dongle 资源的含义和用途。 前面的 PATCH 请求告诉 Kubernetes 你的节点拥有四个你称之为 dongle 的东西。 启动一个代理(proxy),以便你可以很容易地向 Kubernetes API server 发送请求: ```shell kubectl proxy ``` 在另一个命令窗口中,发送 HTTP PATCH 请求。 用你的节点名称替换 `<your-node-name>`: ```shell curl --header "Content-Type: application/json-patch+json" \ --request PATCH \ --data '[{"op": "add", "path": "/status/capacity/example.com~1dongle", "value": "4"}]' \ http://localhost:8001/api/v1/nodes/<your-node-name>/status ``` 在前面的请求中,`~1` 为 patch 路径中 “/” 符号的编码。 JSON-Patch 中的操作路径值被解析为 JSON 指针。 更多细节,请查看 [IETF RFC 6901] 的第 3 节。 输出显示该节点的 dongle 资源容量(capacity)为 4: ``` "capacity": { "cpu": "2", "memory": "2049008Ki", "example.com/dongle": "4", ``` 描述你的节点: ``` kubectl describe node <your-node-name> ``` 输出再次展示了 dongle 资源: ```yaml Capacity: cpu: 2 memory: 2049008Ki example.com/dongle: 4 ``` 现在,应用开发者可以创建请求一定数量 dongle 资源的 Pod 了。 参见[将扩展资源分配给容器]。 ## 讨论 扩展资源类似于内存和 CPU 资源。例如,正如一个节点拥有一定数量的内存和 CPU 资源, 它们被节点上运行的所有组件共享,该节点也可以拥有一定数量的 dongle 资源, 这些资源同样被节点上运行的所有组件共享。 此外,正如应用开发者可以创建请求一定数量的内存和 CPU 资源的 Pod, 他们也可以创建请求一定数量 dongle 资源的 Pod。 扩展资源对 Kubernetes 是不透明的。Kubernetes 不知道扩展资源含义相关的任何信息。 Kubernetes 只了解一个节点拥有一定数量的扩展资源。 扩展资源必须以整形数量进行发布。 例如,一个节点可以发布 4 个 dongle 资源,但是不能发布 4.5 个。 ### 存储示例 假设一个节点拥有一种特殊类型的磁盘存储,其容量为 800 GiB。 你可以为该特殊存储创建一个名称,如 `example.com/special-storage`。 然后你就可以按照一定规格的块(如 100 GiB)对其进行发布。 在这种情况下,你的节点将会通知它拥有八个 `example.com/special-storage` 类型的资源。 ```yaml Capacity: ... example.com/special-storage: 8 ``` 如果你想要允许针对特殊存储任意(数量)的请求,你可以按照 1 字节大小的块来发布特殊存储。 在这种情况下,你将会发布 800Gi 数量的 example.com/special-storage 类型的资源。 ```yaml Capacity: ... example.com/special-storage: 800Gi ``` 然后,容器就能够请求任意数量(多达 800Gi)字节的特殊存储。 ```yaml Capacity: ... example.com/special-storage: 800Gi ``` ## 清理 这里是一个从节点移除 dongle 资源发布的 PATCH 请求。 ``` PATCH /api/v1/nodes/<your-node-name>/status HTTP/1.1 Accept: application/json Content-Type: application/json-patch+json Host: k8s-master:8080 [ { "op": "remove", "path": "/status/capacity/example.com~1dongle", } ] ``` 启动一个代理,以便你可以很容易地向 Kubernetes API 服务器发送请求: ```shell kubectl proxy ``` 在另一个命令窗口中,发送 HTTP PATCH 请求。用你的节点名称替换 `<your-node-name>`: ```shell curl --header "Content-Type: application/json-patch+json" \ --request PATCH \ --data '[{"op": "remove", "path": "/status/capacity/example.com~1dongle"}]' \ http://localhost:8001/api/v1/nodes/<your-node-name>/status ``` 验证 dongle 资源的发布已经被移除: ``` kubectl describe node <your-node-name> | grep dongle ``` ## ### 针对应用开发人员 - [将扩展资源分配给容器] ### 针对集群管理员 - [为名字空间配置最小和最大内存约束] - [为名字空间配置最小和最大 CPU 约束]
上一篇:
为Kubernetes运行etcd集群
下一篇:
Kubernetes限制存储使用量
该分类下的相关小册推荐:
Kubernets合辑10-网络
云原生-K8S入门实战
Kubernets合辑15-持续部署
Kubernets合辑4-kubernetes入门
Kubernets合辑7-存储
Kubernets合辑12-配置中心
Kubernets合辑2-部署Ingress
Kubernetes中文教程(三)
Kubernets合辑9-资源约束
Kubernetes中文教程(四)
Kubernetes中文教程(一)
Kubernets合辑8-权限控制