华为云部署K8s之K8s安装4
kubernetes – 04
kubernetes 性能与监控
部署metrics-server
开启apiserver聚合服务
[root@master ~]# vim /etc/kubernetes/manifests/kube-apiserver.yaml
# spec.containers.command 最下面手动添加如下一行- --enable-aggregator-routing=true
[root@master ~]# systemctl restart kubelet
[root@master ~]# kubectl -n kube-system get pod kube-apiserver-master -o yaml |grep enable-aggregator-routing- --enable-aggregator-routing=true
证书的申请与签发
要在所有节点执行(master,node-0001,node-0002,node-0003)
申请的多余证书可以使用 (kubectl delete certificatesigningrequests 证书名称) 删除
[root@node-0001 ~]# vim /var/lib/kubelet/config.yaml
# 在文件的最后一行添加
serverTLSBootstrap: true
[root@node-0001 ~]# systemctl restart kubelet
#-------------------------签发证书必须在 master 上执行 ------------------------------------
[root@master ~]# kubectl get certificatesigningrequests
NAME AGE REQUESTOR CONDITION
csr-wsfz7 8s system:node:master Pending
[root@master ~]# kubectl certificate approve csr-wsfz7
[root@master ~]# kubectl get certificatesigningrequests
NAME AGE REQUESTOR CONDITION
csr-wsfz7 86s system:node:master Approved,Issued
安装mertics插件
拷贝 云盘的kubernetes/v1.17.6/metrics 目录到 master 上
[root@master metrics]# docker load -i metrisc-server.tar.gz
[root@master metrics]# docker tag gcr.io/k8s-staging-metrics-server/metrics-server:master 192.168.1.100:5000/metrics-server:master
[root@master metrics]# docker push 192.168.1.100:5000/metrics-server:master
[root@master metrics]# vim deployment.yaml
29: image: 192.168.1.100:5000/metrics-server:master
[root@master metrics]# kubectl apply -f rbac.yaml
[root@master metrics]# kubectl apply -f pdb.yaml
[root@master metrics]# kubectl apply -f deployment.yaml
[root@master metrics]# kubectl apply -f service.yaml
[root@master metrics]# kubectl apply -f apiservice.yaml
#-------------------------------- 查询验证 ----------------------------------------------
[root@master metrics]# kubectl -n kube-system get pod
NAME READY STATUS RESTARTS AGE
metrics-server-78dfb54777-4dcjl 1/1 Running 0 116s
[root@master metrics]# kubectl -n kube-system get apiservices
NAME SERVICE AVAILABLE AGE
v1beta1.metrics.k8s.io kube-system/metrics-server True 2m20s
[root@master metrics]# kubectl top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
master 95m 4% 840Mi 48%
node-0001 24m 1% 266Mi 15%
node-0002 24m 1% 270Mi 15%
node-0003 26m 1% 280Mi 16%
部署Dashboard
拷贝 云盘的kubernetes/v1.17.6/dashboard 目录到 master 上
上传镜像到私有仓库
# 上传 dashboard 镜像
[root@master dashboard]# docker load -i dashboard.tar.gz
[root@master dashboard]# docker tag kubernetesui/dashboard:v2.0.0 192.168.1.100:5000/dashboard:v2.0.0
[root@master dashboard]# docker push 192.168.1.100:5000/dashboard:v2.0.0
# 上传 metrics-scraper 镜像
[root@master dashboard]# docker load -i metrics-scraper.tar.gz
[root@master dashboard]# docker tag kubernetesui/metrics-scraper:v1.0.4 192.168.1.100:5000/metrics-scraper:v1.0.4
[root@master dashboard]# docker push 192.168.1.100:5000/metrics-scraper:v1.0.4
安装dashboard
[root@master dashboard]# vim recommended.yaml# 43 行新添加nodePort: 30090# 46 行新添加type: NodePort# 191 行修改为image: 192.168.1.100:5000/dashboard:v2.0.0# 275 行修改为image: 192.168.1.100:5000/metrics-scraper:v1.0.4
[root@master dashboard]# kubectl apply -f recommended.yaml
# ---------------------------------- 查询验证 --------------------------------------
[root@master dashboard]# kubectl -n kubernetes-dashboard get pod
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-57bf85fcc9-vsz74 1/1 Running 0 52s
kubernetes-dashboard-7b7f78bcf9-5k8vq 1/1 Running 0 52s
[root@master dashboard]# kubectl -n kubernetes-dashboard get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
dashboard-metrics-scraper ClusterIP 10.254.76.85 <none> 8000/TCP
kubernetes-dashboard NodePort 10.254.211.125 <none> 443:30090/TCP
在华为云上为 node 节点绑定弹性公网IP [ https://弹性公网IP:30090/ ]
token认证登录
[root@master dashboard]# kubectl apply -f admin-token.yaml
[root@master ~]# kubectl -n kubernetes-dashboard get secrets
NAME TYPE DATA AGE
admin-user-token-bxjlz kubernetes.io/service-account-token 3 23s
[root@master ~]# kubectl -n kubernetes-dashboard describe secrets admin-user-token-bxjlz
Name: admin-user-token-bxjlz
... ...
ca.crt: 1025 bytes
namespace: 20 bytes
token: 这里这个很长的字符串就是你要找的认证 token
使用获取的 token 登录,通过 web 页面访问即可
部署Prometheus
导入镜像
kubernetes/v1.17.6/prometheus/images/ 下所有镜像导入到私有仓库
拷贝所有镜像到 master 的 images 目录下
[root@master images]# for i in *.gz;do docker load -i ${i};done
[root@master images]# img="prom/node-exporter v1.0.0
quay.io/coreos/prometheus-config-reloader v0.35.1
quay.io/coreos/prometheus-operator v0.35.1
quay.io/coreos/kube-state-metrics v1.9.2
grafana/grafana 6.4.3
jimmidyson/configmap-reload v0.3.0
quay.io/prometheus/prometheus v2.11.0
quay.io/prometheus/alertmanager v0.18.0
quay.io/coreos/k8s-prometheus-adapter-amd64 v0.5.0
quay.io/coreos/kube-rbac-proxy v0.4.1"
[root@master images]# while read _f _v;do docker tag ${_f}:${_v} 192.168.1.100:5000/${_f##*/}:${_v}docker push 192.168.1.100:5000/${_f##*/}:${_v}docker rmi ${_f}:${_v}
done <<<"${img}"
[root@master images]# curl http://192.168.1.100:5000/v2/_catalog
{"repositories":["alertmanager","configmap-reload","coredns","dashboard","etcd","flannel","grafana","k8s-prometheus-adapter-amd64","kube-apiserver","kube-controller-manager","kube-proxy","kube-rbac-proxy","kube-scheduler","kube-state-metrics","metrics-scraper","metrics-server","myos","nginx-ingress-controller","node-exporter","pause","prometheus","prometheus-config-reloader","prometheus-operator"]}
operator安装
拷贝prometheus/setup 目录到 master 下
[root@master prometheus]# curl http://192.168.1.100:5000/v2/configmap-reload/tags/list
{"name":"configmap-reload","tags":["v0.3.0"]}
[root@master prometheus]# curl http://192.168.1.100:5000/v2/prometheus-config-reloader/tags/list
{"name":"prometheus-config-reloader","tags":["v0.35.1"]}
[root@master prometheus]# curl http://192.168.1.100:5000/v2/prometheus-operator/tags/list
{"name":"prometheus-operator","tags":["v0.35.1"]}
[root@master prometheus]# vim setup/prometheus-operator-deployment.yaml
27: - --config-reloader-image=192.168.1.100:5000/configmap-reload:v0.3.0
28: - --prometheus-config-reloader=192.168.1.100:5000/prometheus-config-reloader:v0.35.1
29: image: 192.168.1.100:5000/prometheus-operator:v0.35.1
# 验证安装
[root@master prometheus]# kubectl apply -f setup/
[root@master prometheus]# kubectl -n monitoring get pod
NAME READY STATUS RESTARTS AGE
prometheus-operator-75b4b59b74-72qhg 1/1 Running 0 47s
Prometheus server安装
拷贝 prometheus/prom-server 目录到 master 下
[root@master prometheus]# curl http://192.168.1.100:5000/v2/prometheus/tags/list
{"name":"prometheus","tags":["v2.11.0"]}
[root@master prometheus]# vim prom-server/prometheus-prometheus.yaml
14: baseImage: 192.168.1.100:5000/prometheus
34: version: v2.11.0
[root@master prometheus]# kubectl apply -f prom-server/
[root@master prometheus]# kubectl -n monitoring get pod
NAME READY STATUS RESTARTS AGE
prometheus-k8s-0 3/3 Running 1 45s
prometheus-k8s-1 3/3 Running 1 45s
prom-adapter安装
拷贝 prometheus/prom-adapter 目录到 master 下
[root@master prometheus]# curl http://192.168.1.100:5000/v2/k8s-prometheus-adapter-amd64/tags/list
{"name":"k8s-prometheus-adapter-amd64","tags":["v0.5.0"]}
[root@master prometheus]# vim prom-adapter/prometheus-adapter-deployment.yaml
28: image: 192.168.1.100:5000/k8s-prometheus-adapter-amd64:v0.5.0
[root@master prometheus]# kubectl apply -f prom-adapter
[root@master prometheus]# kubectl -n monitoring get pod
NAME READY STATUS RESTARTS AGE
prometheus-adapter-856854f9f6-knqtq 1/1 Running 0 6s
metrics-state安装
拷贝 prometheus/metrics-state 目录到 master 下
[root@master prometheus]# curl http://192.168.1.100:5000/v2/kube-state-metrics/tags/list
{"name":"kube-state-metrics","tags":["v1.9.2"]}
[root@master prometheus]# curl http://192.168.1.100:5000/v2/kube-rbac-proxy/tags/list
{"name":"kube-rbac-proxy","tags":["v0.4.1"]}
[root@master prometheus]# vim metrics-state/kube-state-metrics-deployment.yaml
24: image: 192.168.1.100:5000/kube-rbac-proxy:v0.4.1
41: image: 192.168.1.100:5000/kube-rbac-proxy:v0.4.1
58: image: 192.168.1.100:5000/kube-state-metrics:v1.9.2
[root@master prometheus]# kubectl apply -f metrics-state/
[root@master prometheus]# kubectl -n monitoring get pod
NAME READY STATUS RESTARTS AGE
kube-state-metrics-5894f64799-krvn6 3/3 Running 0 4s
node-exporter安装
拷贝 prometheus/node-exporter 目录到 master 下
[root@master prometheus]# curl http://192.168.1.100:5000/v2/node-exporter/tags/list
{"name":"node-exporter","tags":["v1.0.0"]}
[root@master prometheus]# curl http://192.168.1.100:5000/v2/kube-rbac-proxy/tags/list
{"name":"kube-rbac-proxy","tags":["v0.4.1"]}
[root@master prometheus]# vim node-exporter/node-exporter-daemonset.yaml
27: image: 192.168.1.100:5000/node-exporter:v1.0.0
57: image: 192.168.1.100:5000/kube-rbac-proxy:v0.4.1
[root@master prometheus]# kubectl apply -f node-exporter/
[root@master prometheus]# kubectl -n monitoring get pod
NAME READY STATUS RESTARTS AGE
node-exporter-7h4l9 2/2 Running 0 7s
node-exporter-7vxmx 2/2 Running 0 7s
node-exporter-mr6lw 2/2 Running 0 7s
node-exporter-zg2j8 2/2 Running 0 7s
alertmanager安装
拷贝 prometheus/alertmanager 目录到 master 下
[root@master prometheus]# curl http://192.168.1.100:5000/v2/alertmanager/tags/list
{"name":"alertmanager","tags":["v0.18.0"]}
[root@master prometheus]# vim alertmanager/alertmanager-alertmanager.yaml
09: baseImage: 192.168.1.100:5000/alertmanager
18: version: v0.18.0
[root@master prometheus]# kubectl apply -f alertmanager/
[root@master prometheus]# kubectl -n monitoring get pod
NAME READY STATUS RESTARTS AGE
alertmanager-main-0 2/2 Running 0 16s
alertmanager-main-1 2/2 Running 0 16s
alertmanager-main-2 2/2 Running 0 16s
grafana安装
拷贝 prometheus/grafana 目录到 master 下
[root@master prometheus]# curl http://192.168.1.100:5000/v2/grafana/tags/list
{"name":"grafana","tags":["6.4.3"]}
[root@master prometheus]# vim grafana/grafana-deployment.yaml
19: - image: 192.168.1.100:5000/grafana:6.4.3
[root@master prometheus]# kubectl apply -f grafana/
[root@master prometheus]# kubectl -n monitoring get pod
NAME READY STATUS RESTARTS AGE
grafana-647d948b69-d2hv9 1/1 Running 0 19s
发布服务
grafana服务
[root@master prometheus]# cp grafana/grafana-service.yaml ./
[root@master prometheus]# vim grafana-service.yaml
apiVersion: v1
kind: Service
metadata:labels:app: grafananame: grafananamespace: monitoring
spec:type: NodePortports:- name: httpport: 3000nodePort: 30002targetPort: httpselector:app: grafana
[root@master prometheus]# kubectl apply -f grafana-service.yaml
[root@master prometheus]# kubectl -n monitoring get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
grafana NodePort 10.254.79.49 <none> 3000:30002/TCP
服务发布以后可以通过华为云弹性公网IP直接访问即可
grafana 第一次默认登录的用户名/密码(admin/admin)
HPA集群
集群图例
apache
apache
实验步骤
[root@master ~]# vim hpa-example.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:name: myweb
spec:selector:matchLabels:app: apachereplicas: 1template:metadata:labels:app: apachespec:containers:- name: apacheimage: 192.168.1.100:5000/myos:httpdports:- containerPort: 80resources:requests:cpu: 200mrestartPolicy: Always---
apiVersion: v1
kind: Service
metadata:name: web-service
spec:ports:- protocol: TCPport: 80targetPort: 80selector:app: apachetype: ClusterIP---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:name: my-appannotations:kubernetes.io/ingress.class: "nginx"
spec:backend:serviceName: web-serviceservicePort: 80---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:name: myweb
spec:minReplicas: 1maxReplicas: 3scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: mywebtargetCPUUtilizationPercentage: 50
[root@master ~]# kubectl apply -f hpa-example.yaml
[root@master ~]# kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
myweb Deployment/myweb 0%/50% 1 3 1 15m
当容器的cpu占用超过 50% 的时候,自动扩展一个POD,依次扩展,一直到最大值
如果cpu访问不足 50% 的时候,每 300s 缩减一个 POD 节点,直到最小值时停止
访问测试可以使用镜像内提供的 info.php增加系统负载,从而查看状态信息
访问地址 http://ip.xx.xx.xx/info.php?id=1000000
id 为计算结果集的数量,id 越大,占用内存和CPU越高,设置特别大容易死机
华为云部署K8s之K8s安装4相关推荐
- 华为云ssl证书申请和安装
华为云ssl证书申请和安装 1.打开网站,点击领取免费证书,点击立即购买. 2.打开华为云控制台,找到云证书管理服务.确认付款后自动跳转,点击申请证书. 填写自己的域名. 填写授权人信息,姓名.电话. ...
- 华为云初次使用和配置安装宝塔配置mysql、Redis远程连接访问
文本仅为记录日常操作,安装配置过程步骤. 准备:购买一台新的未开封的华为云服务器 初次使用 登录首页 进入到控制台 配置修改登录密码 我的资源已经创建 ECS 云服务器 点击进入配置账号密码 xshe ...
- 华为云部署 springboot
我这几天用了华为云部署了docker 聚到了很多问题总算是部署成功了 1.首先通过官方下载docker容器 2.把要部署的项目放到linux服务器中 3.最重要的一步运行 因为华为云的是arm架构所以 ...
- 华为云部署JavaWeb(SpringBoot)程序(基于Centos7)
文章目录 Linux对应版本java软件 项目打包 华为云配置 Mysql配置 JDK8配置 MAVEN配置 项目上线 效果展示 你也可以完全自己安装Mysql这些软件,或者直接使用Docker进行容 ...
- 云上武功秘籍(四)金蝶最新产品KIS全版本华为云部署
每天琐事缠身,查错.维护.开接口?--不,你可以更加富有创造力! 假期千里迢迢飞回公司机房处理一个小故障?--不,你可以更加自由高效! 如果这就是你的写照,那为什么不选择上云呢? 如果要上云,那为什么 ...
- 华为云部署YOLOv5
文章目录 使用框架 华为云使用 环境搭建 本地测试 网络测试 后端部署([gunicorn部署](https://blog.csdn.net/wbw0wbw/article/details/89517 ...
- 华为云服务器实战 之 Gitlab安装与配置使用
简介 GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. 它拥有与GitHub类似的功能,能够浏览源代码, ...
- 使用华为云桌面的电脑如何安装破解版PSCAD4.6.2
1 下载好解压压缩包,解压后运行setup进行安装,安装过程默认选择便可,可更换安装路径,路径中不能有空格: 2 安装完成后,解压crack,电脑如果是64为操作系统的,便复制64bit文件夹里边的程 ...
- 华为云部署K8s之容器技术.docker安装
docker安装 安装前准备: 1.禁用 selinux [SELINUX=disabled] 2.卸载防火墙 [yum -y remove firewalld-*] 3.docker软件 ...
最新文章
- 在 Linux 中使用超级用户权限
- 重集合中找出最相近的一个数字
- HDU 2079-课程时间(生成函数)
- 什么是java OOM?如何分析及解决oom问题?
- C++多态,虚函数,纯虚函数
- matlab模糊推理,模糊推理系统的matlab代码
- 科学家公布“寿命计算器”,快算一下你能活多久?
- vscode 不能运行h5c3代码_让开发效率“飞起”的VS Code 插件
- 常识推理相关最新研究进展
- TensorFlow 教程 --新手入门--1.3 安装实例
- Oracle grant connect, resource to user语句中的权限
- 写作技巧~100段作文排比句(81-100段),考试一定用得上,赶紧收藏!
- 缺陷跟踪系统BugTracker。 以下对使用
- Cobaltstrike内网工具的使用笔记
- fwrite函数的用法
- 记我的第一次腾讯游戏策划面试
- 2009年的总结(二)
- 机器学习之恶意流量检测的特征工程
- Python中len()的用法
- 计算机操作系统(汤子瀛)习题答案 第一章操作系统导论
热门文章
- Web 页面如何添加水印?
- 简体字---繁体字---网页简体字转繁体字--包教包会
- 带你7天玩转可视化建站平台
- 最长公共前后缀(KMP中next数组求法)
- 判断文件夹是否存在的方法
- 今天项目报错: No operations allowed after connection closed
- mac usb iso linux系统安装教程,Mac上制作linux系统U盘安装盘
- python实训报告50000_Python实训周总结
- 深入分析中小型千兆网吧解决方案(转)
- 读《STRENGTHNET: DEEP LEARNING-BASED EMOTION STRENGTH ASSESSMENT FOR EMOTIONAL SPEECH SYNTHESIS》