【问题标题】:How to use python kubernetes-client to get given resources' corresponding YAML file如何使用 python kubernetes-client 获取给定资源的对应 YAML 文件
【发布时间】:2022-02-02 05:38:44
【问题描述】:

使用 kubectl,如果我想查看特定资源的 YAML 文件,我知道我可以在命令下面运行

kubectl -n <some namespace> get <some resource> <some resource name> -o yaml

如何使用 python 的 kubernetes-client 获得相同的数据? 到目前为止,我发现的所有内容都只涉及从给定的 yaml 文件创建资源。

在查看docs 时,我注意到每种资源类型通常都有一个返回V1ApiResourceListget_api_resources() 函数,其中每个项目都是V1ApiResource。我希望有一种方法可以通过使用 V1ApiResource 对象来获取资源的 yaml 输出,但似乎不是这样。

大家有什么建议吗?使用 kubernetes-client API 可以做到这一点吗?

【问题讨论】:

    标签: python kubernetes


    【解决方案1】:

    如果您查看对象上可用的方法,例如:

    >>> import kubernetes.config
    >>> client = kubernetes.config.new_client_from_config()
    >>> core = kubernetes.client.CoreV1Api(client)
    >>> res = core.read_namespace('kube-system')
    >>> dir(res)
    ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_api_version', '_kind', '_metadata', '_spec', '_status', 'api_version', 'attribute_map', 'discriminator', 'kind', 'local_vars_configuration', 'metadata', 'openapi_types', 'spec', 'status', 'to_dict', 'to_str']
    

    ...你会看到有一个to_dict 方法。将对象返回为 一个字典,然后您可以将其序列化为 YAML 或 JSON 或 随便:

    >>> import yaml
    >>> print(yaml.safe_dump(res.to_dict()))
    api_version: v1
    kind: Namespace
    metadata:
    [...]
    

    【讨论】:

    • 谢谢@larsks 你的回答让我成功了 99%。我只需要改用 read_namespaced_pod(pod_name, namespace_name)
    猜你喜欢
    • 1970-01-01
    • 2018-11-27
    • 2021-04-30
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 2016-09-03
    • 2013-05-23
    相关资源
    最近更新 更多