用于autoqube负载测试的kubernetes处理程序模块

autoqube-kubernetes的Python项目详细描述


此库包含:

  • 对象
    • 创建、更新和删除kubernetes集群。
    • 在kubernetes集群上部署各种对象。
    • 在kubernetes集群上运行jmeter负载测试。

目录

安装

python-autoqube-kubernetes与python 3.x兼容。它列在PyPi as ‘autoqube_kubernetes’上。建议的安装方式是通过pip

pip install autoqube_kubernetes

先决条件

  • kops:kops是管理kubernetes集群所需的命令行实用工具。安装信息可在kops installation找到。
  • {STR 1 } Kubttl :KuBeTl是一个命令行实用工具,用于管理现有的KubNeNETs集群上的各种对象。安装信息可在kubectl installation找到。
  • dns区域:应该为aws创建一个公共托管区域,该区域将与集群的名称相同。请参考creating dns-zone

Kuberneteshandler

kuberneteshandler对象将创建、删除集群并运行负载测试。

kubernetes簇

目前,集群创建仅在aws云平台上受支持。

要创建新的kubernetes集群,需要以下参数:

  • 云提供商:需要在其上创建群集的云提供商。
  • 群集配置:群集的配置详细信息。
  • env_config:用于存储云提供商基本密钥的环境配置。

典型的集群配置文件如下

config={"cloud_provider":"AWS","cluster_config":{'node-count':2,'master-size':'t2.small','master-zones':'us-west-2a','zones':'us-west-2a','name':'aq.autoqube.io','node-size':'t2.small','ssh-public-key':'/Users/autoqube/.ssh/id_rsa.pub','dns-zone':'aq.autoqube.io',},"env_config":{'AWS_ACCESS_KEY_ID':'*********************','AWS_SECRET_ACCESS_KEY':'***********************','AWS_REGION':'us-west-2','KUBECONFIG':'/Users/autoqube/kubernetes/aq.autoqube.io/kubeconfig','KOPS_STATE_STORE':'s3://agent-kops-store'},}

为了更好地理解或调试后面运行的各种进程,请设置日志功能。

fromautoqube_kubernetesimportKubernetesHandlerimportconfigimportloggingroot_logger=logging.getLogger()console_handler=logging.StreamHandler()root_logger.setLevel(logging.INFO)root_logger.addHandler(console_handler)kubernetes_handler=KubernetesHandler(config)kubernetes_handler.create_cluster()# Creation of cluster with the above configuration.# kubeconfig will be stored in the path specified in the configuration.kubernetes_handler.delete_cluster()# Deletion of cluster with the above configuration.

负载测试

  • 目前在kubernetes集群上只支持“jmeter”负载测试。
  • 在kubernetes集群上使用jmeter进行负载测试的灵感来自以下blog
  • 负载测试的结果可以在Grafana服务仪表板上直观地看到。
  • jmeter负载测试所需的各种kubernetes对象的部署模板可以从Jmeter Load Test Templates下载。
  • 提取下载的模板并将其放置在python可访问的位置。
  • 负载测试需要以下参数
    • load_config-关于负载测试类型和kubernetes对象模板的配置详细信息。
    • test_file_config-有关负载测试的测试文件的配置详细信息。

示例配置如下

load_config={'test_type':'jmeter','templates_path':'/Users/autoqube/kubernetes/load_testing/k8s_templates/jmeter/'}test_file_config={'test_files':['./tmp/sample.jmx','./tmp/sample.csv']}

kuberneteshandler将在集群上创建必要的对象并运行负载测试。

# After creation of kubernetes cluster using 'kubernetes_handler'.kubernetes_handler.create_load_test(load_config)# Creates pods, deployments, services and other objects required for# load testing on cluster.kubernetes_handler.run_load_test(test_file_config)# Run load tests using the test files provided in the configurationkubernetes_handler.destroy_load_test(load_config)# Once the tests are complete, all the resources created can be destroyed# and only empty cluster will remain.

kubernetesclient

KubernetesClient可以用于对现有的集群进行各种动作:
  • 从yaml文件创建对象
  • 正在销毁群集上的资源
  • 列出集群上的所有pod和服务
  • 在特定POD上执行命令
  • 将文件复制到特定的pod

需要群集的kubeconfig。

fromautoqube_kubernetesimportKubernetesClientkubernetes_client=KubernetesClient('/path/to/kubeconfig')namespace='autoqube'# Namespace on which the operations are to be performed.kubernetes_client.create_object('/path/to/yaml',namespace)# Creates object from yaml file.kubernetes_client.get_pod_list(namespace)# Lists all the pods.kubernetes_client.get_service_list(namespace)# Lists all the services.podname='autoqube-jmeter'commands_list=['cd ~','ls']kubernetes_client.execute_commands(podname,commands_list,namespace)# Executes the commands on a specific pod.kubernetes_client.destroy_all_resources(namespace)# Destroys all resources in a given namespace.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何向第二个组合框模型项添加数组值从第一个组合框所选项获取数组名称?   使用Java与WebSphere的SSL握手错误   eclipse线程“main”Java中的第一个Java程序异常。lang.NoClassDefFoundError   java将Javafx应用作为Web应用移植的最佳方式   IDE的java右JVM文件夹   java如何在基本适配器中停止文本到语音   java If block使用substring和equals方法以假值执行   在本例中,如何在java中返回多个值?   java第二个主类在maven构建期间覆盖第一个主类   如何在java中设置运行时ArrayList的泛型类型?   java从主机读取文件