自动化扩容插件
import docker
import requests
import time
client = docker.from_env()
PROMETHEUS_URL = "http://prometheus:9090/api/v1/query"
SERVICE_NAME = "my_web_service"
CPU_THRESHOLD = 0.8
CHECK_INTERVAL = 30 # 每30秒检查一次
def get_cpu_usage():
response = requests.get(PROMETHEUS_URL, params={"query": f"avg(rate(container_cpu_usage_seconds_total{{name=\"\"}}[1m]))"})
return float(response.json()['data']['result'][0]['value'][1])
def scale_service(replicas):
client.services.scale(SERVICE_NAME, replicas=replicas)
while True:
cpu_usage = get_cpu_usage()
if cpu_usage > CPU_THRESHOLD:
scale_service(int(cpu_usage * 10)) # 假设每个副本能处理0.1的CPU负载
elif cpu_usage < (CPU_THRESHOLD / 2):
scale_service(int(cpu_usage * 5)) # 假设每个副本能处理0.2的CPU负载
time.sleep(CHECK_INTERVAL)