关于使用Python Kubernetes库的create_namespaced_custom_object实现server side dry run的疑问
关于使用Python Kubernetes库的
create_namespaced_custom_object实现Server-Side Dry Run的疑问 嘿,我来帮你捋捋这个问题!其实在Python Kubernetes客户端里,create_namespaced_custom_object的dry_run参数支持的All这个值,就是对应Kubernetes API里的服务器端Dry Run哦。
你可以参考下面的代码来实现:
from kubernetes import client, config # 加载Kubernetes配置,可根据环境选择加载kubeconfig或集群内配置 config.load_kube_config() # 初始化CustomObjectsApi客户端 custom_objects_api = client.CustomObjectsApi() # 定义你的自定义资源内容 custom_resource_body = { "apiVersion": "your.custom.group/v1", "kind": "YourCustomResourceKind", "metadata": { "name": "demo-resource", "namespace": "default" }, "spec": { # 这里填写你的自定义资源规格字段 } } try: # 执行服务器端Dry Run,dry_run参数传入["All"]即可 dry_run_response = custom_objects_api.create_namespaced_custom_object( group="your.custom.group", version="v1", namespace="default", plural="yourcustomresources", # 对应CRD的plural名称 body=custom_resource_body, dry_run=["All"] ) print("Server-Side Dry Run 执行成功!资源配置通过服务器端校验") print(dry_run_response) except client.ApiException as e: print(f"Server-Side Dry Run 失败,错误信息:{e.body}")
还有几个关键点要提醒你:
dry_run参数需要传列表类型的["All"],这个值会触发Kubernetes服务器端完整的校验流程,不会实际创建资源- 确认你的Kubernetes集群版本在1.13及以上,因为服务器端Dry Run是从这个版本开始正式支持的
- 这次Dry Run会和真实创建资源一样,完成所有校验:CRD是否存在、字段格式是否合法、当前用户是否有创建权限、资源命名是否符合规范等等
你之前查文档没找到明确说明,大概率是因为文档没有直接把All这个参数值和服务器端Dry Run做关联说明,其实它就是专门干这个用的哦。
备注:内容来源于stack exchange,提问作者Pranav Gautam
相关产品推荐
相关产品推荐

