文章目录
7. k8s弹性伸缩
k8s弹性伸缩,需要附加插件heapster监控
- 使用heapster监控
- heapster通过apiserver查询节点信息
- heapster向node节点cadvisor获取监控数据
- heapster将数据写入influxdb数据库中
- grafana冲数据库中取出数据进行出图
- dashboard调用grafana的图进行展示
7.1 安装heapster监控
7.1.1 上传并导入镜像,打标签
ls *.tar.gz
for n in `ls *.tar.gz`;do docker load -i $n ;done
docker tag docker.io/kubernetes/heapster_grafana:v2.6.0 10.0.0.11:5000/heapster_grafana:v2.6.0
docker tag docker.io/kubernetes/heapster_influxdb:v0.5 10.0.0.11:5000/heapster_influxdb:v0.5
docker tag docker.io/kubernetes/heapster:canary 10.0.0.11:5000/heapster:canary
7.1.2 master节点上传heapster配置文件
修改配置文件:
#heapster-controller.yaml
spec:
nodeName: 10.0.0.13
containers:
- name: heapster
image: 10.0.0.11:5000/heapster:canary
imagePullPolicy: IfNotPresent
#influxdb-grafana-controller.yaml
spec:
nodeName: 10.0.0.13
containers:
全部创建
kubectl create -f .
[root@k8s-master monitor]# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
heapster-mnd99 1/1 Running 0 17s
influxdb-grafana-p2vhh 2/2 Running 0 17s
kube-dns-32943122-3jv34 4/4 Running 4 5h
kubernetes-dashboard-latest-3467346521-jlx3v 1/1 Running 1 3h
7.1.3 打开dashboard验证是否监控
[root@k8s-master monitor]# systemctl restart kube-apiserver.service
7.2 弹性伸缩
7.2.1 修改rc的配置文件
[root@k8s-master deployment]# cat k8s_deploy.yml
apiVersion: extensions/v1beta1 #扩展版的
kind: Deployment #资源类型
metadata: #资源属性
name: nginx-deployment #资源的名称
spec:
replicas: 3 #副本数
minReadySeconds: 60 #滚动升级间隔
template:
metadata: #模板
labels:
app: nginx #容器的标签
spec:
containers:
- name: nginx #容器的名称
image: 10.0.0.11:5000/nginx:1.13 #容器所使用的镜像
ports:
- containerPort: 80 #容器对外开放的端口
resources: #资源限制
limits: #最大
cpu: 100m #cpu时间片
requests: #最小
cpu: 100m
创建deployment资源
kubectl create -f k8s_deploy.yaml
创建service资源
kubectl expose deployment nginx-deployment --port=80 --target-port=80 --type=NodePort
--port:指定service端口
--target-port:指定容器端口
--type:指定的服务类型,默认clusterip
7.2.2 创建弹性伸缩规则
创建hpa资源
[root@k8s-master deployment]# kubectl autoscale deployment nginx-deployment --max=10 --min=1 --cpu-percent=5
deployment "nginx-deployment" autoscaled
--max:最多扩容到多少台
--min:最少缩容到多少台
--cpu-percent:cpu使用率达到百分之十进行扩容
7.2.3 压力测试
[root@k8s-master deployment]# yum install httpd-tools.x86_64
[root@k8s-node-2 ~]# ab -n 1000000 -c 20 http://10.0.0.12:16410/index.html
7.2.4 导出hpa配置
kubectl get horizontalpodautoscaler --output=yaml