centos-master:172.16.100.60

centos-minion:172.16.100.62

k8s,etcd,docker等都是采用yum装的,部署参考的k8s权威指南和一个视频,视频在百度网盘里,忘记具体步骤了,安装不难,关键在于第一次接触,改的文件记不住下次在写个安装的步骤吧

首先安装heapster  我安装的是1.2.0的版本

个人感觉只要几个yaml文件就行了,里面其他东西干嘛用的,没用到嘛

[root@centos-master influxdb]# pwd
/usr/src/heapster-1.2.0/deploy/kube-config/influxdb
[root@centos-master influxdb]# ls
grafana-deploment.yaml heapster-deployment.yaml influxdb-deployment.yaml
grafana-service.yaml heapster-service.yaml influxdb-service.yaml

  

[root@centos-master influxdb]# cat heapster-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: heapster
namespace: kube-system
spec:
replicas: 2
template:
metadata:
labels:
task: monitoring
k8s-app: heapster
spec:
containers:
- name: heapster
image: docker.io/ist0ne/heapster-amd64:latest
imagePullPolicy: IfNotPresent
command:
- /heapster
- --source=kubernetes:http://172.16.100.60:8080?inClusterConfig=false
- --sink=influxdb:http://10.254.129.95:8086

  关于--source和--sink

刚下载完的是这样的,具体代表什么可以查一下,100.60是集群的master,129.95是个啥?我忘了好像是某个kubectl get svc里面的某个地址,因为svc我删过,找不到原来的IP了

        - --source=kubernetes:https://kubernetes.default
- --sink=influxdb:http://monitoring-influxdb:8086

  

[root@centos-master influxdb]# cat heapster-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
kubernetes.io/cluster-service: 'true'
kubernetes.io/name: Heapster
name: heapster
namespace: kube-system
spec:
ports:
- port: 80
targetPort: 8082
selector:
k8s-app: heapster

  

[root@centos-master influxdb]# cat grafana-deploment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: monitoring-grafana
namespace: kube-system
spec:
replicas: 1
template:
metadata:
labels:
task: monitoring
k8s-app: grafana
spec:
containers:
- name: grafana
image: docker.io/ist0ne/heapster-grafana-amd64:latest
ports:
- containerPort: 3000
protocol: TCP
volumeMounts:
- mountPath: /var
name: grafana-storage
env:
- name: INFLUXDB_HOST
value: monitoring-influxdb
- name: GRAFANA_PORT
value: "3000"
- name: GF_AUTH_BASIC_ENABLED
value: "false"
- name: GF_AUTH_ANONYMOUS_ENABLED
value: "true"
- name: GF_AUTH_ANONYMOUS_ORG_ROLE
value: Admin
- name: GF_SERVER_ROOT_URL
value: /api/v1/proxy/namespaces/kube-system/services/monitoring-grafana/
volumes:
- name: grafana-storage
emptyDir: {}

  

[root@centos-master influxdb]# cat grafana-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
kubernetes.io/cluster-service: 'true'
kubernetes.io/name: monitoring-grafana
name: monitoring-grafana
namespace: kube-system
spec:
# In a production setup, we recommend accessing Grafana through an external Loadbalancer
# or through a public IP.
# type: LoadBalancer
ports:
- port: 80
targetPort: 3000
selector:
name: influxGrafana

  

[root@centos-master influxdb]# cat influxdb-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: monitoring-influxdb
namespace: kube-system
spec:
replicas: 1
template:
metadata:
labels:
task: monitoring
k8s-app: influxdb
spec:
containers:
- name: influxdb
image: docker.io/ist0ne/heapster-influxdb-amd64:v1.1.1
volumeMounts:
- mountPath: /data
name: influxdb-storage
volumes:
- name: influxdb-storage
emptyDir: {}

  

[root@centos-master influxdb]# cat influxdb-service.yaml
apiVersion: v1
kind: Service
metadata:
labels: null
name: monitoring-influxdb
namespace: kube-system
spec:
ports:
- name: http
port: 8083
targetPort: 8083
- name: api
port: 8086
targetPort: 8086
selector:
name: influxGrafana

 

以上是全部的heapster需要的yaml文件

kubectl create -f ../influxdb

生成相应的pod和svc

然后就改创建具体的pod应用了

[root@centos-master yaml]# cat php-apache-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: php-apache
spec:
replicas: 1
template:
metadata:
name: php-apache
labels:
app: php-apache
spec:
containers:
- name: php-apache
image: siriuszg/hpa-example
resources:
requests:
cpu: 200m
ports:
- containerPort: 80

  

[root@centos-master yaml]# cat php-apache-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: php-apache
spec:
ports:
- port: 80
selector:
app: php-apache

  

[root@centos-master yaml]# cat busybox.yaml
apiVersion: v1
kind: Pod
metadata:
name: busybox
spec:
containers:
- image: busybox
command:
- sleep
- "3600"
name: busybox

  

[root@centos-master yaml]# cat hpa-php-apache.yaml
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: php-apache
spec:
scaleTargetRef:
apiVersion: v1
kind: ReplicationController
name: php-apache
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 10

  

注意如果是集群状态,php-apache和busybox可能不是 node的,访问会出问题,要么把他们弄到一个node里要么安装flannel把node都连起来,迟早都要做这一步的。

kubect create -f 上面的这些文件

检查heaptser是否成功

[root@centos-master yaml]# kubectl top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
centos-minion 105m 2% 1368Mi 34%

 

如果出现上面的代表成功了,不知道为什么我的在这检测不到127.0.0.1的这个node

没出现的话仔细查看日志,查看node是否起来是否加入到了集群,/var/log/message     或者 kubectl describe hpa php-apache  或者查pod php-apapche的日志看看

还有一点就是网上都是用的kube-system这个namespace我用的时候总是检测不到,后来去掉了,用的默认的命名空间就是上面的配置,发现可以检测了,不知道原因

检查hpa

[root@centos-master yaml]# kubectl get hpa
NAME REFERENCE TARGET CURRENT MINPODS MAXPODS AGE
php-apache ReplicationController/php-apache 10% 0% 1 10 23h
[root@centos-master yaml]# kubectl get hpa --namespace=kube-system
NAME REFERENCE TARGET CURRENT MINPODS MAXPODS AGE
php-apache ReplicationController/php-apache 50% <waiting> 1 10 20h

 

会发现默认的hpa是current是能检测到值的,但是之前用的kube-system的一直是 waitng状态

进入到busybox里进行压力测试

[root@centos-master ~]# kubectl exec -ti busybox -- sh
/ # while true; do wget -q -O- http://10.254.221.176 > /dev/null ; done

  

过十几秒发现pod增加了,而且cpu的current也增大了,但是有个问题,按理来说应该会自动收缩的,但是他只会自动扩容,收缩不成功,当停掉压力测试的时候,还是这么多的pod

并没有根据cpu的降低而减少pod的数量,奇怪

[root@centos-master yaml]# kubectl get pods -o wide | grep php-apache
php-apache-5bcgk 1/1 Running 0 44s 10.0.34.2 127.0.0.1
php-apache-b4nv5 1/1 Running 0 44s 10.0.16.4 centos-minion
php-apache-kw1m0 1/1 Running 0 44s 10.0.34.17 127.0.0.1
php-apache-vz2rx 1/1 Running 0 3h 10.0.16.3 centos-minion
[root@centos-master yaml]# kubectl get hpa
NAME REFERENCE TARGET CURRENT MINPODS MAXPODS AGE
php-apache ReplicationController/php-apache 10% 25% 1 10 23h
[root@centos-master yaml]#

  

k8s系列---hpa扩容的更多相关文章

  1. k8s系列----索引

    day1:k8s集群准备搭建和相关介绍 day2:k8spod介绍与创建 day3:k8sService介绍及创建 day4:ingress资源和ingress-controller day5:存储卷 ...

  2. Docker & k8s 系列一:快速上手docker

    Docker & k8s 系列一:快速上手docker 本篇文章将会讲解:docker是什么?docker的安装,创建一个docker镜像,运行我们创建的docker镜像,发布自己的docke ...

  3. Docker & k8s 系列二:本机k8s环境搭建

    本篇将会讲解k8s是什么?本机k8s环境搭建,部署一个pod并演示几个kubectl命令,k8s dashboard安装. k8s是什么 k8s是kubernetes的简写,它是一个全新的基于容器技术 ...

  4. Docker & k8s 系列三:在k8s中部署单个服务实例

    本章将会讲解: pod的概念,以及如何向k8s中部署一个单体应用实例. 在上面的篇幅中,我们了解了docker,并制作.运行了docker镜像,然后将镜像发布至中央仓库了.然后又搭建了本机的k8s环境 ...

  5. 容器编排系统K8s之HPA资源

    前文我们了解了用Prometheus监控k8s上的节点和pod资源,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14287942.html:今天我们来了解下 ...

  6. k8s系列---Worker节点扩容

    其他有关内容 安装:参考https://www.cnblogs.com/dribs/p/9082458.html 集群故障重置:参考https://www.cnblogs.com/dribs/p/10 ...

  7. 利用k8s实现HPA

    如何利用kubernetes实现应用的水平扩展(HPA) 云计算具有水平弹性的特性,这个是云计算区别于传统IT技术架构的主要特性.对于Kubernetes中的POD集群来说,HPA就是实现这种水平伸缩 ...

  8. k8s系列---资源指标API及自定义指标API

    不得不说千万不要随意更改版本,我用的1.13的版本,然后学到这一步时,还因yaml文件不同,卡住了很久,然后各种google才找到解决办法  https://www.linuxea.com/2112. ...

  9. k8s系列---stateful(有状态应用副本集)控制器

    http://blog.itpub.net/28916011/viewspace-2215046/ 在应用程序中,可以分为有状态应用和无状态应用. 无状态的应用更关注于群体,任何一个成员都可以被取代. ...

随机推荐

  1. 倍增LCA模板

    //https://www.luogu.org/problemnew/show/P3379#include<bits/stdc++.h> #define maxn 500010 #defi ...

  2. selenium chrome headless无界面引擎

    注意:PhantomJS已被舍弃 chrome headless 在打开浏览器之前添加参数 import time import sys from selenium import webdriver ...

  3. Android studio 连接真机

    首先用数据线连接真机 1.打开开发者模式(小米手机mix2s为例 设置->我的设备->全部参数->连续点击MIUI版本——开启成功) 2.在更多设置中找到系统安全设置——允许安装未知 ...

  4. 【实战】使用 Kettle 工具将 mysql 数据增量导入到 MongoDB 中

    最近有一个将 mysql 数据导入到 MongoDB 中的需求,打算使用 Kettle 工具实现.本文章记录了数据导入从0到1的过程,最终实现了每秒钟快速导入约 1200 条数据.一起来看吧~ 一.K ...

  5. .net core appsetting/获取配置文件

    修改appsetting 最近用Identity4所以需要做一个配置项项目 { "Logging": { "IncludeScopes": false, &qu ...

  6. 大叔 Frameworks.Entity.Core 2 PageList

    Frameworks.Entity.Core\Commons\PageList\ 1 分页通用类 ListPageList<T> 继承  PageListBase<T>, IP ...

  7. doT 这个模板 是怎么实现的?

    之前做过一个微信有关的站 模板用 doT 嗯 这个 用起来很 不错. 但是 它是怎么实现的,想过没有? ps:https://github.com/olado/doT 源码总共 140行. 第90行里 ...

  8. mongo 查询 距离 某个点 多少 米距离 感谢 提供的数据。 感谢 mvc的 demo 。反正 就是各种感谢 文档之类的。

    昨天 去面试来着, 问了一下mong . 我记得mong支持 地理位置索引的,说了一下. 然后 面试官说 查询某个点 的 多少米范围, 这个该怎么实现? 我懵逼了.... 回去 查询了一下. 发现有 ...

  9. 生成URL(而不是链接) Generating URLs (and Not Links) | 在视图中生成输出URL |高级路由特性 | 精通ASP-NET-MVC-5-弗瑞曼

    结果呢:

  10. selenium获取页面源码,判断是否存在指定内容,执行不同的操作

    本案例用于解决selenium UI自动化,判断页面是否存在指定文字,执行后续不同的操作 主要用到browser.page_source 如,保存百度分享文件到自己的百度盘中,会出现文件被删除无法保存 ...