k8s mysql 弹性_kubernetes云平台管理实战:k8s弹性伸缩(十八)

一、什么是弹性伸缩

Horizontal Pod Autoscaler的操作对象是Replication Controller、ReplicaSet或Deployment对应的Pod,根据观察到的CPU使用量与用户的阈值进行比对,做出是否需要增减实例数量的决策。controller目前使用heapSter来检测CPU使用量,检测周期默认是30秒

二、创建hpa

nginx-rc.yaml

[root@master hpa]# cat nginx-rc.yaml

apiVersion: v1

kind: ReplicationController

metadata:

name: myweb1

spec:

replicas: 2

selector:

app: myweb1

template:

metadata:

labels:

app: myweb1

spec:

containers:

- name: myweb1

image: 192.168.118.18:5000/nginx:1.13

ports:

- containerPort: 80

resources:

limits:

cpu: 100m

memory: 50Mi

requests:

cpu: 100m

memory: 50Mi

创建检查

[root@master hpa]# kubectl create -f nginx-rc.yaml

replicationcontroller "myweb1" created

[root@master hpa]# kubectl get pods -o wide --all-namespaces

NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE

default mysql-3qkf1 1/1 Running 0 1d 172.16.60.7 192.168.118.19

default myweb1-g1x3r 1/1 Running 0 25s 172.16.56.5 192.168.118.18

default myweb1-xxxqs 1/1 Running 0 25s 172.16.60.2 192.168.118.19

kube-system heapster-hrfmb 1/1 Running 0 36m 172.16.56.3 192.168.118.18

kube-system influxdb-grafana-0lj0n 2/2 Running 0 36m 172.16.56.4 192.168.118.18

kube-system kube-dns-1835838994-jm5bk 4/4 Running 0 7h 172.16.99.3 192.168.118.20

kube-system kubernetes-dashboard-latest-2728556226-fc2pc 1/1 Running 0 5h 172.16.60.6 192.168.118.19

luoahong myweb-qsml7 1/1 Running 0 3h 172.16.60.8 192.168.118.19

luoahong myweb-sbsw2 1/1 Running 0 3h 172.16.99.4 192.168.118.20

[root@master hpa]# kubectl get rc -o wide --all-namespaces

NAMESPACE NAME DESIRED CURRENT READY AGE CONTAINER(S) IMAGE(S) SELECTOR

default mysql 1 1 1 1d mysql 192.168.118.18:5000/mysql:5.7 app=mysql

default myweb1 2 2 2 45s myweb1 192.168.118.18:5000/nginx:1.13 app=myweb1

kube-system heapster 1 1 1 36m heapster 192.168.118.18:5000/heapster:canary k8s-app=heapster,version=v6

kube-system influxdb-grafana 1 1 1 36m influxdb,grafana 192.168.118.18:5000/heapster_influxdb:v0.5,192.168.118.18:5000/heapster_grafana:v2.6.0 name=influxGrafana

luoahong myweb 2 2 2 3h myweb 192.168.118.18:5000/nginx:1.13 app=myweb

创建hpa

[root@master hpa]# kubectl autoscale replicationcontroller myweb1 --max=8 --min=1 --cpu-percent=10

replicationcontroller "myweb1" autoscaled

[root@master hpa]# kubectl get pods -o wide --all-namespaces

NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE

default mysql-3qkf1 1/1 Running 0 1d 172.16.60.7 192.168.118.19

default myweb1-xxxqs 1/1 Running 0 7m 172.16.60.2 192.168.118.19

kube-system heapster-hrfmb 1/1 Running 0 42m 172.16.56.3 192.168.118.18

kube-system influxdb-grafana-0lj0n 2/2 Running 0 42m 172.16.56.4 192.168.118.18

kube-system kube-dns-1835838994-jm5bk 4/4 Running 0 7h 172.16.99.3 192.168.118.20

kube-system kubernetes-dashboard-latest-2728556226-fc2pc 1/1 Running 0 6h 172.16.60.6 192.168.118.19

luoahong myweb-qsml7 1/1 Running 0 3h 172.16.60.8 192.168.118.19

luoahong myweb-sbsw2 1/1 Running 0 3h 172.16.99.4 192.168.118.2

三、压力测试

1、执行压力测试命令

[root@master hpa]# ab -n 500000 -c 100 http://172.16.60.2/index.html

This is ApacheBench, Version 2.3

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 172.16.60.2 (be patient)

Completed 50000 requests

Completed 100000 requests

Completed 150000 requests

Completed 200000 requests

Completed 250000 requests

Completed 300000 requests

Completed 350000 requests

Completed 400000 requests

Completed 450000 requests

Completed 500000 requests

Finished 500000 requests

Server Software: nginx/1.13.12

Server Hostname: 172.16.60.2

Server Port: 80

Document Path: /index.html

Document Length: 612 bytes

Concurrency Level: 100

Time taken for tests: 389.121 seconds

Complete requests: 500000

Failed requests: 0

Write errors: 0

Total transferred: 423000000 bytes

HTML transferred: 306000000 bytes

Requests per second: 1284.95 [#/sec] (mean)

Time per request: 77.824 [ms] (mean)

Time per request: 0.778 [ms] (mean, across all concurrent requests)

Transfer rate: 1061.59 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 0 18 146.3 3 15028

Processing: 0 60 80.5 74 5091

Waiting: 0 59 79.2 73 5091

Total: 2 78 171.3 77 15103

Percentage of the requests served within a certain time (ms)

50% 77

66% 89

75% 96

80% 98

90% 100

95% 284

98% 303

99% 1077

100% 15103 (longest request)

2、查看容器状态描述

1、查看pod数量

[root@master kubernetes]# kubectl get pods -o wide |grep myweb1

myweb1-46kz9 1/1 Running 0 11s 172.16.99.5 192.168.118.20

myweb1-9nq3c 1/1 Running 0 4m 172.16.99.2 192.168.118.20

myweb1-9nsks 1/1 Running 0 11s 172.16.60.4 192.168.118.19

myweb1-flbds 1/1 Running 0 11s 172.16.60.3 192.168.118.19

myweb1-nhkqr 1/1 Running 0 11s 172.16.56.7 192.168.118.18

myweb1-q722p 1/1 Running 0 4m 172.16.56.6 192.168.118.18

myweb1-q78qh 1/1 Running 0 4m 172.16.56.5 192.168.118.18

myweb1-xxxqs 1/1 Running 0 14m 172.16.60.2 192.168.118.19

2、查看HPA状态描述

[root@master kubernetes]# kubectl describe hpa myweb1

Name:myweb1

Namespace:default

Labels:

Annotations:

CreationTimestamp:Wed, 13 May 2020 17:59:04 +0800

Reference:ReplicationController/myweb1

Target CPU utilization:10%

Current CPU utilization:25%

Min replicas:1

Max replicas:8

ReplicationController pods:8 current / 8 desired

Events:

FirstSeenLastSeenCountFromSubObjectPathTypeReasonMessage

------------------------------------------------------------

12m12m2{horizontal-pod-autoscaler }NormalMetricsNotAvailableYetunable to get metrics for resource cpu: no metrics returned from heapster

12m12m3{horizontal-pod-autoscaler }NormalDesiredReplicasComputedComputed the desired num of replicas: 0 (avgCPUutil: 0, current replicas: 2)

12m12m1{horizontal-pod-autoscaler }NormalSuccessfulRescaleNew size: 1; reason: All metrics below target

11m4m16{horizontal-pod-autoscaler }NormalDesiredReplicasComputedComputed the desired num of replicas: 0 (avgCPUutil: 0, current replicas: 1)

4m4m1{horizontal-pod-autoscaler }NormalDesiredReplicasComputedComputed the desired num of replicas: 4 (avgCPUutil: 39, current replicas: 1)

4m4m1{horizontal-pod-autoscaler }NormalSuccessfulRescaleNew size: 4; reason: CPU utilization above target

3m2m3{horizontal-pod-autoscaler }NormalDesiredReplicasComputedComputed the desired num of replicas: 10 (avgCPUutil: 99, current replicas: 4)

2m15s7{horizontal-pod-autoscaler }NormalDesiredReplicasComputedComputed the desired num of replicas: 10 (avgCPUutil: 25, current replicas: 4)

15s15s1{horizontal-pod-autoscaler }NormalSuccessfulRescaleNew size: 8; reason: CPU utilization above target

15s15s2{horizontal-pod-autoscaler }NormalDesiredReplicasComputedComputed the desired num of replicas: 10 (avgCPUutil: 25, current replicas: 8)

3、通过监控截图查看

d235e402d3e2f329ec8bb5f2ce9cf955.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值