Kubernetes配置地图更新

问题描述 投票:1回答:2

我正在编写一个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的PATCH方法更新kubernetes配置映射时我得到了

 "reason":"UnsupportedMediaType" //STATUS_CODE 415

我怎么能处理这个问题。

python rest http kubernetes
2个回答
0
投票

您必须阅读一下以确定是否支持这个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
...

所以,现在如果我有所有细节,我需要在python或其他任何东西构建方法,希望有意义和/或帮助,尝试使用patch命令。


0
投票

我建议您使用Kubernetes客户端库,而不是自己进行原始HTTP调用。然后你不需要弄清楚低级连接的东西,因为库会为你抽象出来。

我一直在使用Pykube,它提供了一个很好的pythonic API,虽然现在似乎已经放弃了。

您还可以使用官方client-python,这是积极维护的。该库有点笨重,因为它基于自动生成的OpenAPI客户端,但它涵盖了许多用例,如流式传输结果。

© www.soinside.com 2019 - 2024. All rights reserved.