用于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.