在本地开启api代理
#kube-proxy
使用curl的方式PATCH Node kube-node1的资源项
curl --header "Content-Type: application/json-patch+json" \
--request PATCH \
--data '[{"op": "add", "path": "/status/capacity/panmeng.com~1diskcount", "value": "4"}]' \
http://localhost:8001/api/v1/nodes/kube-node1/status
使用curl的方式PATCH Node kube-node2的资源项
curl --header "Content-Type: application/json-patch+json" \
--request PATCH \
--data '[{"op": "add", "path": "/status/capacity/panmeng.com~1diskcount", "value": "4"}]' \
http://localhost:8001/api/v1/nodes/kube-node2/status
#kubectl descirbe node kube-node1
添加的扩展资源可以在Node的Allocatable中看到
新建yaml配置extended-resource-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: extended-resource-demo
spec:
containers:
- name: extended-resource-demo-ctr
image: nginx
resources:
requests:
panmeng.com/diskcount: 3
limits:
panmeng.com/diskcount: 3
应用yaml新建pod,查看pod状态
#kubectl describe pod extended-resource-demo
查看各个node上的资源分配情况
#kubectl describe node kube-node1
#kubectl describe node kube-node2
可以看到由于pod调度到了kube-node2上,所以kube-node2已经分配了panmeng.com/discount 3, 如果在新建一个pod extended-resource-demo2,同样请求资源为3,则必然会调度到kube-node1上
再次新建一个pod extended-resource-demo3,同样请求资源为3,则会因为资源不足而无法创建。
#kubectl get pods
kube-node1有一个多余的example.com/dongle的资源项
可以使用类似的方法删除多余的扩展资源项
curl --header "Content-Type: application/json-patch+json" \
--request PATCH \
--data '[{"op": "remove", "path": "/status/capacity/example.com~1dongle"}]' \
网友评论