扩展资源是 kubernetes.io 域名之外的标准资源名称。它们使得集群管理员能够颁布非Kubernetes 内置资源,而用户可以使用他们。
自定义扩展资源无法使用 kubernetes.io 作为资源域名。
cat ~/.kube/config
echo LS0tL...== | base64 -d > admin.crt
echo LS0tL...== | base64 -d > admin.key
curl --key admin.key --cert admin.crt --header "Content-Type: application/json-patch+json" --request PATCH -k --data '[{"op": "add", "path": "/status/capacity/extended-cpu", "value": "2"}]' https://192.168.0.6:6443/api/v1/nodes/node1/status
这里会报错,因为匿名用户没有patch的权限,需要授权。
k create clusterrolebinding test:anonymous --clusterrole=cluster-admin --user=system:anonymous
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
resources:
limits:
# 这里先超出额外资源做测试
wgh/extended-cpu: 3
requests:
wgh/extended-cpu: 3
k create -f deployment.yaml
k get po
由于设置的额外资源只有2,deployment中requests需要3,所以pod处于pending状态。
curl --key admin.key --cert admin.crt --header "Content-Type: application/json-patch+json" --request PATCH -k --data '[{"op": "remove", "path": "/status/capacity/wgh~1extended-cpu", "value": "2"}]' https://192.168.0.6:6443/api/v1/nodes/node1/status
已经没有wgh/extended-cpu的资源了。