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+

友情提醒:

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

一、生成metrics-proxy证书

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

# metrics-proxy证书请求
cat >metrics-proxy-csr.json <<'EOF'
{
"CN": "aggregator",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "beiJing",
"L": "beiJing",
"O": "zq",
"OU": "ops"
}
]
}
EOF #生成mertic证书
cfssl gencert \
-ca=ca.pem \
-ca-key=ca-key.pem \
-config=ca-config.json \
-profile=peer \
metrics-proxy-csr.json | cfssl-json -bare metrics-proxy #分发证书到master节点
# profile=peer 中的peer,依据自己的配置改,反正需要有server端和client的证书权限
#略,目录在 /opt/kubernetes/server/bin/cert/

二、修改apiserver启动配置

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

vim /opt/kubernetes/server/bin/kube-apiserver.sh 

  --requestheader-allowed-names "" \
--requestheader-extra-headers-prefix X-Remote-Extra- \
--requestheader-group-headers X-Remote-Group \
--requestheader-username-headers X-Remote-User \
--proxy-client-cert-file ./cert/metrics-proxy.pem \
--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

supervisorctl restart kube-apiserver

三、kubelet参数修改并重启

vim /opt/kubernetes/server/bin/kubelet.sh
#添加参数:
--authentication-token-webhook=true \
如果有参数:--read-only-port=0,则需删除 #重启服务:
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自己,推荐使用

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

B 修改启动参数

## 修改metrics-server-deployment.yaml
###1 mertics-server部分修改启动参数镜像地址
containers:
- name: metrics-server
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.1
command:
- /metrics-server
- --metric-resolution=30s
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP ###2 metrics-server-nanny部分修改镜像地址及启动参数
......
- name: metrics-server-nanny
image: registry.cn-hangzhou.aliyuncs.com/google_containers/addon-resizer:1.8.4
.....
command:
- /pod_nanny
- --config-dir=/etc/config
- --cpu=100m
- --extra-cpu=0.5m
- --memory=100Mi
- --extra-memory=50Mi
- --threshold=5
- --deployment=metrics-server-v0.3.1
- --container=metrics-server
- --poll-period=300000
- --estimator=exponential ### 在新的版本中,授权文内没有 node/stats 的权限,需要手动去添加resource-reader.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: system:metrics-server
rules:
- apiGroups:
- ""
resources:
- pods
- nodes
- nodes/stats ## 添加此参数
- namespaces

mertics-server镜像参数解释:

  • --kubelet-insecure-tls:

    不验证客户端证书

  • --kubelet-preferred-address-types

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

C 应用配置清单并验证

kubectl apply -f .

五、结果验证

[root@mmkt-api01 ~]# kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
xx01.host.com 411m 2% 36881Mi 57%
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. JUnit5学习之六:参数化测试(Parameterized Tests)基础

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. 【python3.x】发送自动化测试报告邮件

    ​ SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.python的smtplib提供了 ...

  3. js的基本数据类型与引用数据类型

    基本数据类型与引用数据类型 基本数据类型有五种 /* 基本数据类型有: - String - Number - Boolean - Null ** typeof null === 'object' 这 ...

  4. HTML:HTML基础

    HTML不是一门编程语言,而是一种用于定义内容结构的标记语言.HTML由一系列元素(elements)组成,这些元素可以用来包围不同部分的内容,使其以某种方式呈现或工作.一对标签可以为一段文字或者一张 ...

  5. 【DB宝41】监控利器PMM的使用--监控MySQL、PG、MongoDB、ProxySQL等

    目录 一.PMM简介 二.安装使用 三.监控MySQL数据库 MySQL慢查询分析 四.监控PG数据库 五.监控MongoDB数据库 六.监控ProxySQL中间件 一.PMM简介 之前发布过一篇Pr ...

  6. Java I/O流 05

    I/O流·文件递归 统计该文件夹的大小 * 需求:从键盘就收一个文件夹路径,统计该文件夹的大小 package com.heima.test; import java.io.File; import ...

  7. 为什么要从 Linux 迁移到 BSD 4

    为什么要从 Linux 迁移到 BSD 4 许可证问题 Linux GPL 许可证对开发者的要求比较严格,它是一种开源的反模式,因为它强制发布所有修改过的源代码,并且阻止其他开源项目的集成,例如 GP ...

  8. 前端学习 node 快速入门 系列 —— 模块(module)

    其他章节请看: 前端学习 node 快速入门 系列 模块(module) 模块的导入 核心模块 在 初步认识 node 这篇文章中,我们在读文件的例子中用到了 require('fs'),在写最简单的 ...

  9. js输入框只能输入数字

    1.只允许输入数字 <input type="text"  onkeyup="this.value=this.value.replace(/\D/g,'')&quo ...

  10. MySql多表查询_事务_DCL(资料三)

    今日内容 1. 多表查询 2. 事务 3. DCL 多表查询: * 查询语法: select 列名列表 from 表名列表 where.... * 准备sql # 创建部门表 CREATE TABLE ...