用于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中深度复制双链表   为什么Eclipse会生成。类文件,如果我的Java源文件中存在语法错误?   java递归计算嵌套向量中的唯一对象   java使用CriteriaQuery选择通用主键   java如何使JComboBox中的某些项不可选择?   使用自定义背景色时,swing组件的java错误重绘()   java JSONDoc未显示有关服务的详细信息   java对象或基本类型   jaxb的javaxml解析问题   java如何创建自定义按钮形状类   java我的合并排序对于数组长度10不起作用,有什么原因吗   java jTextField从数据库自动完成   java如何创建tar。从文件列表中选择gz文件?   eclipse如何纠正java项目中的所有有效LIB?