K8S(17)二进制部署的K8S(1.15)部署hpa功能

零、参考文件:

参考01:https://www.cnblogs.com/tchua/p/10855001.html

参考02:https://blog.csdn.net/jthello123/article/details/105468136

参考03:http://blog.leanote.com/post/criss/k8s-metrics-server-2+

友情提醒:

  1. #不要把启动文件中例如的
  2. --authentication-token-webhook=true
  3. # 自作聪明的改为
  4. --authentication-token-webhook true
  5. # 不然。。。。。

一、生成metrics-proxy证书

在管理机上生成证书配置文件及证书

  1. # metrics-proxy证书请求
  2. cat >metrics-proxy-csr.json <<'EOF'
  3. {
  4. "CN": "aggregator",
  5. "hosts": [],
  6. "key": {
  7. "algo": "rsa",
  8. "size": 2048
  9. },
  10. "names": [
  11. {
  12. "C": "CN",
  13. "ST": "beiJing",
  14. "L": "beiJing",
  15. "O": "zq",
  16. "OU": "ops"
  17. }
  18. ]
  19. }
  20. EOF
  21. #生成mertic证书
  22. cfssl gencert \
  23. -ca=ca.pem \
  24. -ca-key=ca-key.pem \
  25. -config=ca-config.json \
  26. -profile=peer \
  27. metrics-proxy-csr.json | cfssl-json -bare metrics-proxy
  28. #分发证书到master节点
  29. # profile=peer 中的peer,依据自己的配置改,反正需要有server端和client的证书权限
  30. #略,目录在 /opt/kubernetes/server/bin/cert/

二、修改apiserver启动配置

修改apiserver启动脚本,添加以下参数:

  1. vim /opt/kubernetes/server/bin/kube-apiserver.sh
  2. --requestheader-allowed-names "" \
  3. --requestheader-extra-headers-prefix X-Remote-Extra- \
  4. --requestheader-group-headers X-Remote-Group \
  5. --requestheader-username-headers X-Remote-User \
  6. --proxy-client-cert-file ./cert/metrics-proxy.pem \
  7. --proxy-client-key-file ./cert/metrics-proxy-key.pem \

参数说明:

  • --requestheader-XXX --proxy-client-XXX

    是 kube-apiserver 的 aggregator layer 相关的配置参数,metrics-server & HPA 需要使用;

  • --requestheader-client-ca-file

    用于签名 --proxy-client-cert-file 和 --proxy-client-key-file 指定的证书(ca证书),在启用了 metric aggregator 时使用;

注1:

  1. 如果 --requestheader-allowed-names 不为空,则--proxy-client-cert-file 证书的 CN 必须位于 allowed-names 中,默认为 aggregator;
  2. 如果 kube-apiserver 机器没有运行 kube-proxy,则还需要添加 --enable-aggregator-routing=true 参数

重启apiserver

  1. supervisorctl restart kube-apiserver

三、kubelet参数修改并重启

  1. vim /opt/kubernetes/server/bin/kubelet.sh
  2. #添加参数:
  3. --authentication-token-webhook=true \
  4. 如果有参数:--read-only-port=0,则需删除
  5. #重启服务:
  6. supervisorctl restart kube-kubelet

四、下载metrics-server镜像及配置清单

A 获取配置清单(6个)

项目地址:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/metrics-server

配置文件有两种,单机版和集群版获取方式:

https://github.com/kubernetes-incubator/metrics-server (单机)

https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/metrics-server (集群)

集群版可以自动扩容metrics自己,推荐使用

  1. # 创建目录
  2. mkdir -p /data/k8s-yaml/metrics/
  3. cd /data/k8s-yaml/metrics/
  4. # 下载配置文件
  5. metrics_url='https://raw.githubusercontent.com/kubernetes/kubernetes/v1.14.1/cluster/addons/metrics-server'
  6. wget $metrics_url/auth-delegator.yaml
  7. wget $metrics_url/auth-reader.yaml
  8. wget $metrics_url/metrics-apiservice.yaml
  9. wget $metrics_url/metrics-server-deployment.yaml
  10. wget $metrics_url/metrics-server-service.yaml
  11. wget $metrics_url/resource-reader.yaml

B 修改启动参数

  1. ## 修改metrics-server-deployment.yaml
  2. ###1 mertics-server部分修改启动参数镜像地址
  3. containers:
  4. - name: metrics-server
  5. image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.1
  6. command:
  7. - /metrics-server
  8. - --metric-resolution=30s
  9. - --kubelet-insecure-tls
  10. - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
  11. ###2 metrics-server-nanny部分修改镜像地址及启动参数
  12. ......
  13. - name: metrics-server-nanny
  14. image: registry.cn-hangzhou.aliyuncs.com/google_containers/addon-resizer:1.8.4
  15. .....
  16. command:
  17. - /pod_nanny
  18. - --config-dir=/etc/config
  19. - --cpu=100m
  20. - --extra-cpu=0.5m
  21. - --memory=100Mi
  22. - --extra-memory=50Mi
  23. - --threshold=5
  24. - --deployment=metrics-server-v0.3.1
  25. - --container=metrics-server
  26. - --poll-period=300000
  27. - --estimator=exponential
  28. ### 在新的版本中,授权文内没有 node/stats 的权限,需要手动去添加resource-reader.yaml
  29. apiVersion: rbac.authorization.k8s.io/v1
  30. kind: ClusterRole
  31. metadata:
  32. name: system:metrics-server
  33. rules:
  34. - apiGroups:
  35. - ""
  36. resources:
  37. - pods
  38. - nodes
  39. - nodes/stats ## 添加此参数
  40. - namespaces

mertics-server镜像参数解释:

  • --kubelet-insecure-tls:

    不验证客户端证书

  • --kubelet-preferred-address-types

    metrics-server连节点时默认是连接节点的主机名,但是coredns里面没有物理机主机名的解析,需要加个参数,让它连接节点的IP

C 应用配置清单并验证

  1. kubectl apply -f .

五、结果验证

  1. [root@mmkt-api01 ~]# kubectl top nodes
  2. NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
  3. xx01.host.com 411m 2% 36881Mi 57%
  4. xx02.host.com 509m 3% 33127Mi 51%

K8S(17)二进制的1.15版本部署hpa自动伸缩的更多相关文章

  1. Kubernetes学习之路(27)之k8s 1.15.2 部署

    目录 一.环境准备 二.软件安装 三.部署master节点 四.部署node节点 五.集群状态检测 一.环境准备 IP地址 节点角色 CPU Memory Hostname Docker versio ...

  2. k8s 1.15.2 部署

    目录 一.环境准备 二.软件安装 三.部署master节点 四.部署node节点 五.集群状态检测 一.环境准备 IP地址 节点角色 CPU Memory Hostname Docker versio ...

  3. Hadoop生态圈-通过CDH5.15.1部署spark1.6与spark2.3.0的版本兼容运行

    Hadoop生态圈-通过CDH5.15.1部署spark1.6与spark2.3.0的版本兼容运行 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我的CDH5.15.1集群中,默 ...

  4. 云原生生态周报 Vol.9| K8s v1.15 版本发布

    本周作者 | 衷源.心贵 业界要闻 1.Kubernetes Release v1.15 版本发布,新版本的两个主题是持续性改进和可扩展性.(https://github.com/kubernetes ...

  5. ceph mimic版本 部署安装

    ceph 寻址过程 1. file --- object映射, 把file分割成N个相同的对象 2. object - PG 映射, 利用静态hash得到objectID的伪随机值,在 "位 ...

  6. JIRA 6.3.6版本部署

    JIRA 6.3.6版本部署 部署环境:Ubuntu Server .JDK1.7 JIRA文件:atlassian-jira-6.3.6.tar.gz 下载地址:百度云网盘地址http://pan. ...

  7. 关于8.0.15版本的mysql下载与安装

    下载MYSQL 官网下载MYSQL8.0.15版本,链接地址https://www.mysql.com/downloads/,流程如下 点击进入后,网页滑到最下面,根据自己电脑的型号下载相应的版本 安 ...

  8. Datatables插件1.10.15版本服务器处理模式ajax获取分页数据实例解析

    一.问题描述 前端需要使用表格来展示数据,找了一些插件,最后确定使用dataTables组件来做. 后端的分页接口已经写好了,不能修改.接口需要传入页码(pageNumber)和页面显示数据条数(pa ...

  9. MySQL安装 8.0.15版本

    windows下MySQL 8.0.15的安装和设置 MySQL下载地址:https://dev.mysql.com/downloads/mysql/ 我的百度网盘下载(win64位):链接:http ...

随机推荐

  1. Android Studio|IntelliJ IDEA Git使用小技巧

    一 分支管理 1. 新建分支 在master的基础上创建新分支dev 2. 推送分支 将新建的分支dev推送到远程 3. 切换分支 4. 合并分支 当我们在dev分支完成代码修改并测试通过后 需要将d ...

  2. 操作系统---IO权限管理和敏感指令

    简化版 使用IOPL设置一个特权级的用户程序对所有端口的访问权限,使用I/O位图对一个特权级的用户程序设置个性化的端口访问权限(能访问部分端口.不能访问另外的端口). 用户程序的CPL<IOPL ...

  3. 爬虫必知必会(5)_scrapy框架_基础

    一.移动端数据的爬取 基于某一款抓包工具,fiddler,青花瓷,miteproxy fillder进行一个基本的配置:tools->options->connection->all ...

  4. JVM笔记 -- JVM经历了什么?

    Sun Classic VM 世界上第一款商用 Java 虚拟机,JDK1.4 已经淘汰. 内部只有解释器,可以自己外挂JIT编译器,但是二者只能使用其一,不能配合工作. hotspot 内置了该虚拟 ...

  5. [BJOI2020] 封印

    一.题目 点此看题 二.解法 今天不知道为什么手感这么好,写一发完全没调就过掉了. 我感觉这种多组询问的字符串题是很难的,经常没有什么思路.我先考虑了一下能不能像 区间本质不同的子串个数 这样直接离线 ...

  6. golang 二维平面求多重遮挡三角形总面积

    解决问题描述:二维平面有很多三角形错落,可能会相互叠加落在一起,也可能互相远离.目标求出这些三角形的总占地面积. 我最开始想的解决方案是用总面积-总重叠面积 = 总占地面积.后来实现起来发现当面临多次 ...

  7. python-socket和进程线程协程(代码展示)

    socket # 一.socket # TCP服务端 import socket # 导入socket tcp_sk = socket.socket() # 实例化一个服务器对象 tcp_sk.bin ...

  8. 【odoo14】第二十一章、性能优化

    通过odoo框架,我们可以开发大型且复杂的应用.良好的性能是实现这一目标的基础.本章,我们将探讨如何提高应用性能.同时,我们也会讲解找出影响性能的因素. 本章包含以下内容: 记录集的预读取模式 将数据 ...

  9. Java-TreeMap和Guava-HashMultiset

    一.Java-TreeMap 1.数据结构 底层数据结构是裸的红黑树,保证元素有序,没有比较器Comparator的情况按照key的自然排序,可自定义比较器.线程不安全. 可以存null,但是key不 ...

  10. JDK 16 正式发布,一次性发布 17 个新特性…不服不行!

    上一篇:Java 15 正式发布, 14 个新特性 JDK 16 正式发布 牛逼啊,JDK 15 刚发布半年(2020/09/15),JDK 16 又如期而至(2021/03/16),老铁们,跟上. ...