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. rabbitmq系列(三)消息幂等性处理

    一.springboot整合rabbitmq 我们需要新建两个工程,一个作为生产者,另一个作为消费者.在pom.xml中添加amqp依赖: <dependency> <groupId ...

  2. springcloud复习2

    Hystrix断路器 Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时.异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导 ...

  3. 防止过拟合的方法 预测鸾凤花(sklearn)

    1. 防止过拟合的方法有哪些? 过拟合(overfitting)是指在模型参数拟合过程中的问题,由于训练数据包含抽样误差,训练时,复杂的模型将抽样误差也考虑在内,将抽样误差也进行了很好的拟合. 产生过 ...

  4. PageHelper踩坑

    刚开始死活分不了页,只显示默认的前 10条.搞了一下午,打了无数个断点都试不出毛病在哪. 下班又死磕到快8点,就在我已经绝望的时候,最后终于试出来了,把page.getTotal()给传到前端就好了. ...

  5. form get

    <form action=""> <input type="text" name="query" id="&qu ...

  6. Halo-个人独立博客系统

    项目地址:https://github.com/halo-dev/halo 安装指导:https://halo.run/guide/   简介: Halo 是一款现代化的个人独立博客系统,给习惯写博客 ...

  7. 远程桌面软件RDCMan汉化版

    自己汉化的远程桌面控制软件RDCMan--Remote Desktop Connection Manager(RDCMan) v2.7 简体中文汉化版. 介绍 Remote Desktop Conne ...

  8. 痞子衡嵌入式:嵌入式里堆栈原理及其纯C实现

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式里堆栈原理及其纯C实现. 今天给大家分享的这篇还是2016年之前痞子衡写的技术文档,花了点时间重新编排了一下格式.栈这种结构在嵌入式 ...

  9. VirtualBox 虚拟机 从入门到入坑

                                                                                                        ...

  10. java获取本地IP地址集合包括虚拟机的ip

    public static ArrayList<String> getLocalIpAddr() { ArrayList<String> ipList = new ArrayL ...