k8s(十)Dashboard,HPA,Helm,Helm部署

一 Dashboard

Dashboard可以给用户提供一个可视化的 Web 界面来查看当前集群的各种信息。用户可以用 Kubernetes Dashboard部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源。
网址:https://github.com/kubernetes/dashboard

下载yaml文件中需要的两个镜像
在这里插入图片描述

在这里插入图片描述
将两个镜像上传至私有仓库
在这里插入图片描述
在这里插入图片描述
下载部署文件
在这里插入图片描述
编辑镜像位置
在这里插入图片描述
在这里插入图片描述
执行清单
在这里插入图片描述
查看ns
在这里插入图片描述
查看节点是否正常启动在这里插入图片描述
在这里插入图片描述
此时查看svc发现没有IP地址
在这里插入图片描述
更改svc,外部可以访问,修改ClusterIP为LoadBalancer
在这里插入图片描述
重新查看svc的kubernetes-dashboard
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
浏览器访问,
网页测试:https://172.25.28.11
需要token
在这里插入图片描述

获取token,并复制到粘贴板中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用获取的token进入

发现有很多报错,原因是没有授权
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
授权:将cluster-admin的权限赋予kubernetes-dashboard
cat rbac.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard

在这里插入图片描述
执行清单
在这里插入图片描述

在这里插入图片描述
刷新,再次进入网页测试https://172.25.28.11,无报错
在这里插入图片描述
查看所有ns的
在这里插入图片描述
图形化创建pod(表单)并修改,测试:
在这里插入图片描述
访问ip,可以查看到图像化创建的pod的内容
在这里插入图片描述
网页查看新建的pod
在这里插入图片描述
更新版本v1-v2
在这里插入图片描述

访问ip,发现版本已更新
在这里插入图片描述
修改副本数为4
在这里插入图片描述

查看pod数量
在这里插入图片描述
图像化方式删除pod
在这里插入图片描述

查看pod已经被删除
在这里插入图片描述

二 HPA

官网:https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/

HPA伸缩过程:

  • 收集HPA控制下所有Pod最近的cpu使用情况(CPU utilization)
  • 对比在扩容条件里记录的cpu限额(CPUUtilization)
  • 调整实例数(必须要满足不超过最大/最小实例数)
  • 每隔30s做一次自动扩容的判断

CPU utilization的计算方法是用cpu usage(最近一分钟的平均值,通过metrics可以直接获取到)除以cpu
request(这里cpu request就是我们在创建容器时制定的cpu使用核心数)得到一个平均值,这个平均值可以理解为:平均每个Pod
CPU核心的使用占比。

HPA进行伸缩算法:

  • 计算公式:
    TargetNumOfPods = ceil(sum(CurrentPodsCPUUtilization) / Target)
    ceil()表示取大于或等于某数的最近一个整数
  • 每次扩容后冷却3分钟才能再次进行扩容,而缩容则要等5分钟后。
  • 当前Pod Cpu使用率与目标使用率接近时,不会触发扩容或缩容:
    触发条件:avg(CurrentPodsConsumption) / Target >1.1 或 <0.9

1. 运行php-apache 服务器

导入压力测试景象
在这里插入图片描述
查看根大小,如果不够,及时清理,可以清理本地镜像

本地景象占用:/
在这里插入图片描述

harbor仓库数据占用:/data
在这里插入图片描述
拉取需要的镜像,上传到私有仓库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建一个存放hpa文件的目录,
cat deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-apache
spec:
  selector:
    matchLabels:
      run: php-apache
  replicas: 1
  template:
    metadata:
      labels:
        run: php-apache
    spec:
      containers:
      - name: php-apache
        image: hpa-example
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 500m
          requests:
            cpu: 200m
---
apiVersion: v1
kind: Service
metadata:
  name: php-apache
  labels:
    run: php-apache
spec:
  ports:
  - port: 80
  selector:
    run: php-apache

在这里插入图片描述
在这里插入图片描述
执行hpa-apache.yaml 清单,
在这里插入图片描述
查看pod信息
在这里插入图片描述
查看svc信息
在这里插入图片描述
查看svc的详细信息,并访问生成的IP!!
显示OK即可!
在这里插入图片描述
算法!!!
在这里插入图片描述

2. 创建 Horizontal Pod Autoscaler

php-apache 服务器已经运行,我们将通过 kubectl autoscale 命令创建 Horizontal Pod Autoscaler。 以下命令将创建一个 Horizontal Pod Autoscaler 用于控制我们上一步骤中创建的 Deployment,使 Pod 的副本数量维持在 1 到 10 之间。 大致来说,HPA 将(通过 Deployment)增加或者减少Pod 副本的数量以保持所有 Pod 的平均 CPU 利用率在 50% 左右(由于每个 Pod 请求 200 毫核的 CPU,这意味着平均 CPU 用量为 100 毫核)。自动扩缩完成副本数量的改变可能需要几分钟的时间。Hpa会根据Pod的CPU使用率动态调节Pod的数量

在这里插入图片描述
在这里插入图片描述

3. 增加负载

kubectl run -i --tty load-generator --rm --image=busybox --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done" 

执行命令后,会一直在运作,所以我们需要再打开一个终端来查cpu的战用量信息
在这里插入图片描述

查看pod,top,hpa的信息
Hpa会根据Pod的CPU使用率动态调节Pod的数量
在这里插入图片描述
不断查看他们的信息,可以看到hpa会自动扩容replicas,从开始的一个到最后6个!采集频率:一般30s

在这里插入图片描述
top pod节点也逐渐开启,负载越来越大!
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
打断负载:
在这里插入图片描述
hpa会自动缩容,但是缩的速度比扩的速度慢很多,等待一段时间之后,就可以看到节点又降低了
在这里插入图片描述
扩容和缩容:扩容快,缩容慢,避免服务抖动
在这里插入图片描述
在这里插入图片描述

4. 基于多项指标的自动扩缩

在这里插入图片描述

v1:只能监控单一指标(cpu) v2:支持多个量度指标,mem和cpu

cat hpa-v2.yaml

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: hpa-example
spec:
  maxReplicas: 10
  minReplicas: 1
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: hpa-example
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        averageUtilization: 60
        type: Utilization
  - type: Resource
    resource:
      name: memory
      target:
        averageValue: 50Mi
        type: AverageValue

在这里插入图片描述
在这里插入图片描述
执行清单,
在这里插入图片描述
在这里插入图片描述外部的web应用的流量:k8s部署第三方监控,普罗米修斯Promethus采集其他监控指标,将指标传给hpa,但hpa只能有cpu和mem的指标

三 Helm

  • Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum。

  • Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。

  • 对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。

  • 对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。

在这里插入图片描述

Helm V3 与 V2 最大的区别在于去掉了tiller:
在这里插入图片描述
Helm当前最新版本 v3.1.0 官网:https://helm.sh/docs/intro/

实验环境:
删除之前实验的影响
在这里插入图片描述在这里插入图片描述
Helm安装
在这里插入图片描述
解压tar包,设定环境变量
设置helm命令补齐
在这里插入图片描述
搜索官方helm hub chart库(nginx):
在这里插入图片描述在这里插入图片描述
Helm 添加第三方 Chart 库
在这里插入图片描述在这里插入图片描述
Helm 添加第三方 Chart 库
在这里插入图片描述在这里插入图片描述
搜索官方helm hub chart库(redis)
在这里插入图片描述在这里插入图片描述
Helm 添加第三方 Chart 库,前两个库搜索的版本太旧
在这里插入图片描述

1. Helm 部署redis

helm拉取redis文件
在这里插入图片描述
解压tgz文件,进入解压后的目录
在这里插入图片描述
value.yaml中的变量的都是被集群中所有其他yaml文件应用
编辑value.yaml文件,
在这里插入图片描述
查看存储类
在这里插入图片描述
删除pvc
在这里插入图片描述
新建项目
在这里插入图片描述
将需要的镜像redis拉取下来
在这里插入图片描述
上传至私有仓库中新建项目bitnami
在这里插入图片描述
安装测试:
支持多种安装方式,本次从当前目录安装:

helm install redis-ha stable/redis-ha	
helm install redis-ha redis-ha-4.4.0.tgz
helm install redis-ha path/redis-ha
helm install redis-ha https://example.com/charts/redis-ha-4.4.0.tgz

在这里插入图片描述
必须修改global下的仓库位置,
在这里插入图片描述
列出已安装的
在这里插入图片描述

必须有pv,不然会pending!!!

查看pod节点,可以看到redis-cluster节点已经拉起了,statefulset控制器
在这里插入图片描述
卸载
在这里插入图片描述

2 搭建一个Helm Chart

2.1 Chart构建

创建, 查看
在这里插入图片描述
修改打包文件Chart.yaml
在这里插入图片描述
修改values.yaml文件,修改镜像为myapp,版本v1
在这里插入图片描述
修改之后用helm lint .查看是否正确
在这里插入图片描述
在harbor仓库新建项目charts,选择公开
在这里插入图片描述
将mychart打包上传到charts
在这里插入图片描述

在这里插入图片描述
上传
在这里插入图片描述
需要添加证书
在这里插入图片描述在这里插入图片描述
添加证书之后要更新,不然还是无法添加

update-ca-trust
helm repo add mychart https://reg.westos.org/chartrepo/charts
helm repo list  列出仓库
cd /root/helm/

在这里插入图片描述
发现helm没有push!!!
在这里插入图片描述
需要上传包,所以需要安装push的插件
获取插件目录:helm env
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
发现有push!!!
在这里插入图片描述
上传helm
在这里插入图片描述在这里插入图片描述
上传之后更新仓库并查看

helm  repo  update 	westos	       ##更新仓库
helm  search repo mychart   ##搜索

在这里插入图片描述在这里插入图片描述
可以下载上传的仓库
在这里插入图片描述
curl 访问生成的IP,访问结果为myapp:v1代表成功!!!
在这里插入图片描述

2.2 版本更新

编辑values.yaml,修该为v2
在这里插入图片描述
编辑Chart.yaml ,修改打包的版本
在这里插入图片描述
查看是否正确
在这里插入图片描述
打包并上传,更新仓库
在这里插入图片描述
查看仓库mychart的版本,加 -l之后可以查看到全部的版本
在这里插入图片描述
更新版本,并查看svc,访问ip
在这里插入图片描述
curl发现本版已经成功更新为v2!!!
在这里插入图片描述

2.3 回滚

查看mychart的历史,回滚到第一个版本,再次访问IP,版本回滚成功!!!
在这里插入图片描述在这里插入图片描述

3 Helm部署nfs-client-provisioner

使用指定的nfs-client-provisioner的ns来部署,通过ns进行隔离

在这里插入图片描述
外网hub搜索nfs-subdir-external-provisioner
在这里插入图片描述
将仓库加入本地
新建目录用来放配置文件,拉取nfs文件,pull nfs-subdir-external-provisioner
在这里插入图片描述
解压
在这里插入图片描述
编辑value.yaml文件,需要4.0.2版本,并上传私有仓库
修改nfs的server和路径

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
新建仓库项目:sig-storage
在这里插入图片描述
上传镜像到私有仓库
在这里插入图片描述
在这里插入图片描述
删除nfs-client-provisioner的ns中的所有
在这里插入图片描述
在这里插入图片描述
删除pvc
在这里插入图片描述
在这里插入图片描述
卸载之前的chart
在这里插入图片描述
helm方式安装nfs
在这里插入图片描述
成功列出这个ns中nfs,观察此处使用的存储类,查看默认sc已配置成功
在这里插入图片描述
在这里插入图片描述
测试:

拉起pvc
在这里插入图片描述
成功!!!
在这里插入图片描述
在这里插入图片描述

4 Helm部署metrics-server应用

删除上个实验的test-pvc
在这里插入图片描述
拉取chart :metrics-server,解压
在这里插入图片描述
下载values.yaml文件中需要的镜像
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
上传至私有仓库
在这里插入图片描述
修改values文件中的仓库位置
在这里插入图片描述

在这里插入图片描述
删除之前实验的metrics-server
在这里插入图片描述
在这里插入图片描述
使用指定的metrics-server的ns来部署,通过ns进行隔离
在这里插入图片描述
使用helm安装,并按照提示解决报错
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看metrics-server的ns下的pod
在这里插入图片描述
查看服务是否健康
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值