我正在使用python脚本以编程方式更新configmap。
示例脚本如下所示。
import requests
headers = {"Content-Type": "application/json-patch+json"}
configData = {
"apiVersion": "v1",
"kind": "ConfigMap",
"data": {
"test2.load": "testimtest"
},
"metadata": {
"name": "nginx2"
}
}
r = requests.patch("http://localhost:8080/api/v1/namespaces/default/configmaps/nginx2", json=configData)
这个问题的有趣之处在于我对POST和GET方法没有问题,但是当我想用HTTP的PATCH方法更新kubernetes configmaps时,我会得到
"reason":"UnsupportedMediaType" //STATUS_CODE 415
如何处理此问题。
答案 0 :(得分:0)
您必须阅读一点信息,以了解实际上是否支持此HTTP动词,也许您遇到权限问题?
无论如何,我对您的建议是使用kubectl的详细选项来找出类似的东西。
例如,假设我要删除广告连播,我会这样做:
kubectl -v=9 delete pod myapp
输出(我整理了一下)应该包含您要查找的信息:
I1315 14:42:19.153664 30452 round_trippers.go:417]
curl -k -v -XDELETE -H "Accept: application/json, */*"
-H "User-Agent: kubectl/v1.8.5 (linux/amd64) kubernetes/cce11c6"
https://<ip>:<port>/api/v1/namespaces/default/pods/myapp
...
现在,如果我有用python或其他方法构造方法所需的所有详细信息,希望有道理和/或有帮助,请尝试使用patch
命令。
答案 1 :(得分:0)
我建议您使用Kubernetes客户端库,而不要自己进行原始HTTP调用。然后,您无需弄清底层连接的内容,因为该库将为您抽象出来。
我一直在使用Pykube,它提供了一个不错的pythonic API,尽管现在看来它确实已经被放弃了。
您还可以使用官方维护的client-python。该库有点笨拙,因为它基于自动生成的OpenAPI客户端,但是它涵盖了很多用例,例如流式传输结果。