0

我有一个 kubernetes 多资源文件,其中包含要应用的不同资源,例如部署定义、服务定义、pv、pvc 等。有没有办法通过 kubernetes python 客户端使用这个单个文件来部署所有这些资源一下子?虽然我的情况有点不同。我有一个文件,它使用 CRD 以及自定义 kubernetes 资源对象,例如Deployment + Ambassador's Mapping。如何使用kubernetes python 客户端来实现这一点?

4

3 回答 3

0

对于客户,您必须分别进行所有操作。当您在 YAML 文件中有多个文档时,kubectl 会为您拆分它们并为每个文档进行 API 调用。

于 2020-03-02T10:07:06.507 回答
0

您可以使用 config.new_client_from_config 来管理多个集群

或使用字典中的 kube 配置而不是本地文件。

from kubernetes import client, config
from kubernetes.client import Configuration, ApiClient

def new_client_from_dict(conf: dict, context: str):
    """
    create client via conf dict
    """
    client_config = type.__call__(Configuration)
    config.load_kube_config_from_dict(config_dict=conf, context=context, persist_config=False,
                                  client_configuration=client_config)
    return ApiClient(configuration=client_config)

client1 = client.CoreV1Api(api_client=new_client_from_dict(CLUSTER1_KUBE_CONFIG, context='cluster1'))
client2 = client.CoreV1Api(api_client=new_client_from_dict(CLUSTER2_KUBE_CONFIG, context='cluster2'))
client1.list_namespaced_pod()
client2.list_namespaced_pod()
于 2020-10-23T03:09:06.260 回答
0

我有一个 kubernetes 多资源文件有没有办法通过 kubernetes python 客户端使用这个单个文件来一次部署所有这些资源?

请检查examples目录的内容。

    from os import path

    import yaml

    from kubernetes import client, config


    def main():
        # Configs can be set in Configuration class directly or using helper
        # utility. If no argument provided, the config will be loaded from
        # default location.
        config.load_kube_config()

        with open(path.join(path.dirname(__file__), "nginx-deployment.yaml")) as f:
            dep = yaml.safe_load(f)
            k8s_beta = client.ExtensionsV1beta1Api()
            resp = k8s_beta.create_namespaced_deployment(
                body=dep, namespace="default")
            print("Deployment created. status='%s'" % str(resp.status))


    if __name__ == '__main__':
        main()

重要提示:如果 yaml 文件包含多个资源,则必须在 yaml 文件顶部和资源之间使用三个破折号。

.../utils/create_from_yaml.py.../examples/create_deployment_from_yaml.py也值得检查。

我有一个使用 CRD 和自定义 kubernetes 资源对象的文件

正如@coderanger 所说,该示例可以在.../docs/CustomObjectsApi.md中找到

希望有帮助。

于 2020-03-02T15:55:26.520 回答