簡體   English   中英

Kubectl修補程序和curl修補程序無法修補資源

[英]Kubectl patch and curl patch unable to patch a resource

我試圖將擴展資源添加到群集中的一個節點。 我跟着這個任務,從官方文檔

我已按照說明逐步進行操作,但是PATCH似乎沒有效果。

運行后:

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/kubernetes-3/status

我得到回應,並添加了更多資源

"capacity": {
  "cpu": "8",
  "example.com/dongle": "4",
  "memory": "8218052Ki",
  "pods": "110"
},

但是,如果我運行kubectl describe node kubernetes-3則容量具有舊值:

Capacity: cpu: 8 memory: 8218052Ki pods: 110

我檢查了apiserver日志,一切看起來都不錯:

PATCH /api/v1/nodes/kubernetes-3/status: (39.112896ms) 200 [[curl/7.59.0] 127.0.0.1:49234]

但是,如果我使用kubectl patch命令,該命令將返回node "kubernetes-3" not patched

我運行的命令: kubectl patch node kubernetes-3 --type='json' -p '[{"op": "add", "path": "/status/capacity/example.com~1dongle", "value": "4"}]'

再次,apiserver日志顯示響應成功(狀態200 ):

PATCH /api/v1/nodes/kubernetes-3: (4.831866ms) 200 [[kubectl/v1.8.0+coreos.0 (linux/amd64) kubernetes/a65654e] 127.0.0.1:50004]

kubectl版本輸出:

Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.0+coreos.0", GitCommit:"a65654ef5b593ac19fbfaf33b1a1873c0320353b", GitTreeState:"clean", BuildDate:"2017-09-29T21:51:03Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.0+coreos.0", GitCommit:"a65654ef5b593ac19fbfaf33b1a1873c0320353b", GitTreeState:"clean", BuildDate:"2017-09-29T21:51:03Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

我已經在Kubernetes集群v1.11.1上嘗試過

Curl版本工作正常,但是需要一些時間(5-10秒)才能在“ get”輸出中顯示它:

curl --header "Content-Type: application/json-patch+json" \
--request PATCH \
--data '[{"op": "add", "path": "/status/capacity/example.com~1dongle", "value": "2"}]' \
http://localhost:8001/api/v1/nodes/node-name/status

kubectl get node node-name -o yaml
...
 capacity:
    cpu: "2"
    ephemeral-storage: 20263528Ki
    example.com/dongle: "2"
    example2.com/dongle: "4"
    example3.com/dongle: "4"
    example4.com/dongle: "4"
    hugepages-1Gi: "0"
    hugepages-2Mi: "0"
    memory: 7652316Ki
    pods: "110"
...

kubectl版本仍然無法正常工作,但是我想這是因為它請求的地址是錯誤的/api/v1/nodes/node-name ,而不是/api/v1/nodes/node-name/status

命令

kubectl -v=9 patch node/node-name --type='json' -p='[{"op": "add", "path": "/status/capacity/example.com-dongle", "value": "6"}]'

給了我日志:

I0803 13:08:38.552155 694 round_trippers.go:386] curl -k -v -XPATCH -H“ Accept:application / json” -H“ Content-Type:application / json-patch + json” -H“ User-Agent :kubectl / v1.11.1(linux / amd64)kubernetes / b1b2997“' https://10.156.0.8:6443/api/v1/nodes/node-name '

如果我們在kubeclt代理連接上檢查類似的請求:

它不起作用:

curl -XPATCH  -H "Accept: application/json" -H "Content-Type: application/json-patch+json" -H "User-Agent: kubectl/v1.11.1 (linux/amd64) kubernetes/b1b2997" --data '[{"op": "add", "path": "/status/capacity/example4.com~1dongle", "value": "4"}]' \
'http://127.0.0.1:8001/api/v1/nodes/node-name' 

但是最后使用“ / status”可以很好地工作:

curl -XPATCH  -H "Accept: application/json" -H "Content-Type: application/json-patch+json" -H "User-Agent: kubectl/v1.11.1 (linux/amd64) kubernetes/b1b2997" --data '[{"op": "add", "path": "/status/capacity/example4.com~1dongle", "value": "4"}]' \
'http://127.0.0.1:8001/api/v1/nodes/node-name/status'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM