用于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 Android测试运行失败:没有测试结果   java设置JMenuItems与Nimbus LaF的边界   java是使用springboot、Crudepository和MySQL检查重复值的好方法吗   谷歌电子表格的Java时代日期   java向xml文件添加EditText不起作用   java ORA00933:SQL命令未正确结束WHERE子句   如何在java中防止JTextField上使用CTRL+C?   java绑定到TypeLiteral在google guice中是好的还是坏的做法   java找到了原始类型,缺少泛型类的返回参数   Kafka Streams API中ArrayList Serde的java问题   java在hibernate中,哪种持久化上下文的性能更好?   java通过本机查询获取数据库url、名称和模式版本   如何为Java枚举编写通用for循环?   在Java应用程序中播放MP3   如何使用VisualVM度量短时间运行的Java应用程序的性能?   java从当前日期获取datetime(秒)   简单JMH基准中的javagrpcoome和NPE   java如何加载Maven项目库中Spring jar的应用程序上下文   JavaCC XPath解析器   用于Scala和Java的类型安全生成器库