Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Kubernetes配置映射更新_Python_Rest_Http_Kubernetes - Fatal编程技术网

Python Kubernetes配置映射更新

Python Kubernetes配置映射更新,python,rest,http,kubernetes,Python,Rest,Http,Kubernetes,我正在编写一个python脚本,以编程方式更新configmaps 位于的脚本示例如下所示 import requests headers = {"Content-Type": "application/json-patch+json"} configData = { "apiVersion": "v1", "kind": "ConfigMap", "data": { "test2.load": "testimtest" }, "metadata": { "name": "ng

我正在编写一个python脚本,以编程方式更新configmaps

位于的脚本示例如下所示

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的补丁方法更新kubernetes configmaps时,我得到了

 "reason":"UnsupportedMediaType" //STATUS_CODE 415

我如何处理这个问题

您必须阅读一些内容才能弄清楚是否支持此HTTP谓词,也许您有权限问题

不管怎样,我给你的建议是使用kubectl的详细选项来解决类似的问题

例如,假设我想删除一个pod,我会:

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
...
i131514:42:19.15366430452往返车。go:417]
curl-k-v-XDELETE-H“接受:应用程序/json,*/*”
-H“用户代理:kubectl/v1.8.5(linux/amd64)kubernetes/cce11c6”
https://:/api/v1/namespace/default/pods/myapp
...

现在,如果我已经掌握了用python或其他任何语言构造方法所需的所有细节,希望有意义和/或有帮助,请使用
patch
命令进行尝试。

我建议您使用Kubernetes客户端库,而不是自己进行原始HTTP调用。然后,您不需要找出低级连接的内容,因为库将为您抽象出这些内容

我一直在使用,它提供了一个很好的pythonicapi,尽管它现在看起来确实被放弃了


您还可以使用“官方”,它是主动维护的。该库有点笨重,因为它基于自动生成的OpenAPI客户端,但它涵盖了许多用例,如流式处理结果。

感谢您的建议,但我的主要问题是关于pod和容器设计。在我的例子中,一个pod mut访问kubernetes集群主节点。所以我不想把kubectl放在吊舱里。我用少量的头更改处理了所有问题,这就是代码:我用kubernetes端的rolebinding升级了服务帐户和角色,还更改了python代码的头。谢谢您的建议:))这是代码: