后端云原生容器编排【免费下载链接】pythonOfficial Python client library for kubernetes项目地址https://gitcode.com/gh_mirrors/python1/python点击查看免费下载本篇技术指南聚焦 Kubernetes 官方 Python 客户端kubernetes-python-client本仓库即其源码镜像中用于描述HTTP GET 探针动作的模型类V1HTTPGetAction。它是配置容器存活探针livenessProbe、就绪探针readinessProbe、启动探针startupProbe以及 Pod 生命周期钩子postStart/preStop中 HTTP 探测方式的底层数据模型。读完本文你将掌握该类的全部字段语义、JSON/字典序列化规则、蛇形与驼峰命名转换机制以及它在V1Probe与V1LifecycleHandler中的实际组合用法。一、模型定位HTTPGetAction 是什么在 Kubernetes 中HTTPGetAction描述的是基于 HTTP GET 请求的动作——kubelet 定期向容器内指定地址发起一次 HTTP GET 请求根据响应状态码2xx/3xx判断容器是否健康。官方 OpenAPI 定义见 scripts/swagger.json 中的v1.HTTPGetAction将其建模为独立对象本仓库的生成代码在同步客户端与异步客户端中各提供一份实现同步版kubernetes/client/models/v1_http_get_action.py异步版本文档对应模块kubernetes/aio/client/models/v1_http_get_action.py该模块由 OpenAPI Generator 基于release-1.37版本的 OpenAPI 文档自动生成模块 docstring 明确标注 Do not edit the class manually对应的 API 参考文档页为 doc/source/kubernetes.aio.client.models.v1_http_get_action.rst其中通过 Sphinxautomodule指令展开该类的全部成员。二、类定义与构造签名V1HTTPGetAction继承自pydantic.BaseModel当前仓库的生成代码已全面切换到 Pydantic v2 模型体系构造参数为V1HTTPGetAction( host: Optional[str] None, http_headers: Optional[List[V1HTTPHeader]] None, path: Optional[str] None, port: StrictInt | StrictStr, # 必填唯一无默认值的字段 protocol: Optional[str] None, scheme: Optional[str] None, )模块级还定义了三个类属性用于描述字段类型与 JSON 键映射关系源码第 113-130 行类属性内容openapi_types{host: str, http_headers: List[V1HTTPHeader], path: str, port: object, protocol: str, scheme: str}attribute_map{host: host, http_headers: httpHeaders, path: path, port: port, protocol: protocol, scheme: scheme}__properties[host, httpHeaders, path, port, protocol, scheme]其中attribute_map揭示了 Python 属性名与 Kubernetes API wire 格式camelCase之间的对应关系这是后续序列化与反序列化的核心依据。三、字段属性详解根据源码中每个字段的Field定义与官方 OpenAPI 描述六个字段语义如下host可选类型str语义要连接的主机名默认值为 Pod IP。官方注释特别提醒You probably want to set Host in httpHeaders instead——即当需要通过 HTTPHost头指定虚拟主机时更推荐放到http_headers中而非直接修改host因为host字段同时影响实际连接的地址。http_headers可选类型List[V1HTTPHeader]语义请求中设置的自定义请求头HTTP 协议允许同一请求头重复出现如多个Accept头。关联模型元素类型为 kubernetes/aio/client/models/v1_http_header.py 中的V1HTTPHeader该模型仅含两个必填字段name请求头字段名输出时会被规范化大小写因此大小写变体视为同一请求头与value请求头字段值。path可选类型str语义要访问的 HTTP 服务器上的路径。例如/healthz、/ready。注意路径中不应携带主机部分仅指路径与查询串。port必填类型Union[int, str]OpenAPI 中的int-or-string见 scripts/swagger.json语义容器上要访问的端口。数字形式必须在 1 到 65535 范围内名称形式必须是合法的 IANA_SVC_NAME即标准的服务名如http、https。这是模型中唯一必填字段缺失时构造会直接报错。protocol可选较新版本新增类型str语义选择探针连接的线协议wire protocol默认为 HTTP/1.1。留空None即使用 HTTP/1.1这也是为什么早期生成的 HTML 文档中不包含该字段而当前源码基于 release-1.37 已将其纳入。scheme可选类型str语义连接主机时使用的协议方案默认值为 HTTP。可设置为HTTP或HTTPS。一个值得注意的历史差异参考文档对应的 HTML 展开页 doc/html/kubernetes.aio.client.models.v1_http_get_action.html 基于release-1.36生成其中openapi_types/attribute_map仅包含 5 个字段host、http_headers、path、port、scheme且构造签名形式为V1HTTPGetAction(hostNone, http_headersNone, pathNone, portNone, schemeNone, local_vars_configurationNone)。而当前源码基于 release-1.37已新增protocol字段、移除旧版遗留参数。以当前仓库源码为准迁移旧代码时需注意这一差异。四、命名转换snake_case 与 camelCase 的双向映射由于 Kubernetes API 使用 camelCase JSON 键httpHeaders而 Python 习惯使用 snake_case 属性名http_headers模型通过两层机制完成双向转换字段声明层http_headers使用validation_aliasAliasChoices(httpHeaders, http_headers)与serialization_aliashttpHeaders源码第 108 行意味着反序列化时两种写法都接受序列化时统一输出httpHeaders。反序列化预处理层类方法__preprocess_input_names源码第 132-144 行会在from_dict前把输入字典规范化——若存在http_headers键但无httpHeaders键则自动补写httpHeaders并删除http_headers保证下游 Pydantic 校验的一致性。因此以下两种构造方式等价# 方式一snake_case 关键字参数 probe_http V1HTTPGetAction(port8080, path/healthz, http_headers[V1HTTPHeader(nameX-Token, valueabc)]) # 方式二通过 dict 以 camelCase 键传入 action V1HTTPGetAction.from_dict({port: 8080, path: /healthz, httpHeaders: [{name: X-Token, value: abc}]})此外模型配置源码第 146-152 行开启validate_by_nameTrue、validate_by_aliasTrue、validate_assignmentTrue并设置extraforbid——即传入未声明的多余字段会直接报错有助于尽早发现拼写错误。五、序列化与反序列化 API模型提供一套完整的转换方法源码第 155-264 行覆盖 JSON、dict、字符串三种形态方法作用to_str()返回 pprint 美化后的字符串表示repr()与print()默认调用它to_json()使用 aliascamelCase输出 JSON 字符串from_json(json_str)从 JSON 字符串反序列化为实例to_dict(serializeFalse)返回字段字典serializeTrue时http_headers输出为httpHeadersfrom_dict(obj)从字典反序列化内部先经__preprocess_input_names规范化再对httpHeaders列表中每个元素递归调用V1HTTPHeader.from_dict__eq__/__ne__基于to_dict()结果做值相等性比较便于测试断言官方生成的模型文档 kubernetes/aio/docs/V1HTTPGetAction.md 给出了标准的使用循环示例from kubernetes.aio.client.models.v1_http_get_action import V1HTTPGetAction # 从 JSON 字符串创建实例 json_str {port: 8080, path: /healthz} instance V1HTTPGetAction.from_json(json_str) # 打印 JSON 字符串表示to_json 是类方法也可在实例上调用 print(V1HTTPGetAction.to_json()) # 转换为 dict action_dict instance.to_dict() # 从 dict 再创建实例 restored V1HTTPGetAction.from_dict(action_dict) assert instance restored六、实战组合在探针与生命周期钩子中使用V1HTTPGetAction不会单独出现在 API 调用中而是作为更高层模型的字段被组合使用。从源码可以确认它的两处主要宿主1. V1Probe探针中的 httpGet 动作kubernetes/aio/client/models/v1_probe.py 定义了V1ProbeProbe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic其中http_get: Optional[V1HTTPGetAction]字段序列化名为httpGet正是承载 HTTP 探测动作的位置。V1Probe同时提供execV1ExecAction、tcpSocketV1TCPSocketAction、grpcV1GRPCAction等备选动作而httpGet是最常用的 Web 服务健康检查方式。一个完整的 HTTP 存活探针组合示例from kubernetes.client.models import V1Probe, V1HTTPGetAction, V1HTTPHeader probe V1Probe( http_getV1HTTPGetAction( port8080, path/healthz, schemeHTTP, http_headers[V1HTTPHeader(nameAuthorization, valueBearer xxxx)], ), initial_delay_seconds5, period_seconds10, timeout_seconds1, failure_threshold3, success_threshold1, )其中V1Probe的failure_threshold默认 3、period_seconds默认 10、timeout_seconds默认 1 等字段描述均可从源码 docstring 中确认。2. V1LifecycleHandler生命周期钩子中的 httpGet 动作kubernetes/aio/client/models/v1_lifecycle_handler.py 定义了V1LifecycleHandler用于 Pod 的postStart/preStop钩子其http_get字段同样引用V1HTTPGetAction支持在容器启动后或终止前发起一次 HTTP 请求如通知注册中心下线。from kubernetes.client.models import V1LifecycleHandler, V1HTTPGetAction handler V1LifecycleHandler( http_getV1HTTPGetAction( port8080, path/shutdown, schemeHTTP, ), )七、测试验证必填字段与序列化仓库的生成代码测试 kubernetes/test/test_generated_api.py 将V1HTTPGetAction列为必填字段序列化用例之一(V1HTTPGetAction, {}, ((port, port),)),该用例验证在不提供任何字段的空字典上port是唯一被要求必须存在且能正确按 wire 名序列化的字段——这与 OpenAPI 定义中required: [port]scripts/swagger.json完全一致可作为模型契约正确性的直接证据。八、同步与异步客户端的选择本仓库同时提供两套客户端kubernetes.client同步与kubernetes.aio.client异步两者的V1HTTPGetAction实现保持字段与行为一致对比 kubernetes/client/models/v1_http_get_action.py 与 kubernetes/aio/client/models/v1_http_get_action.py 可知二者结构完全相同。选择依据在于上层 API 调用的同步/异步方式在基于 asyncio 的程序中使用kubernetes.aio在传统同步脚本中使用kubernetes.client。模型对象的构造与序列化方式在两个包中通用。小结V1HTTPGetAction是 Kubernetes Python 客户端中一个轻量但关键的模型它以六个字段完整刻画了一次 HTTP GET 健康探测的全部要素——目标端口必填、路径、主机、请求头、线协议与传输方案借助 Pydantic v2 的别名机制和生成代码的预处理逻辑实现了 snake_case 与 camelCase 的无缝双向转换。理解该模型后你可以直接在V1Probe与V1LifecycleHandler中组合出符合生产规范的 HTTP 健康检查与生命周期钩子配置。赞分享后端云原生容器编排【免费下载链接】pythonOfficial Python client library for kubernetes项目地址https://gitcode.com/gh_mirrors/python1/python点击查看免费下载相关推荐Kubernetes Python Client 中 AuthenticationV1TokenRequest 模型详解ServiceAccount 令牌请求的完整指南Kubernetes Python Client 中 AuthenticationV1TokenRequest 模型详解ServiceAccount 令牌请求后端云原生容器编排ImGui-SFML高级技巧多窗口管理与事件处理最佳实践ImGui SFML高级技巧多窗口管理与事件处理最佳实践 ImGui SFML是一个强大的库它允许开发者在SFML框架中无缝集成Dear ImGui轻松创UI库/组件游戏开发图形学Kubernetes Python 客户端 V1HTTPHeader 模型详解HTTP 探针自定义请求头的完整实战指南Kubernetes Python 客户端 V1HTTPHeader 模型详解HTTP 探针自定义请求头的完整实战指南 导读 在 Kubernetes 中H后端云原生容器编排上一篇免费开源音频编辑器Audacity从新手到专业用户的完整指南下一篇BG3ModManager深度解析从零开始掌握博德之门3模组管理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考