Helm概念
Helm部署
- 将helm的tar包解压,解压后将其目录下的命令cp到/usr/local/bin/下 方便使用
- 分配权限
- 创建yaml,将内容复制进去,创建name为tiller的ServiceAccount并且多此ServiceAccount赋予管理员权限
- 初始化helm
- 查看tiller pod已经创建
- helm version 查看helm版本信息
Helm定义模板案例
- 创建Chart.yaml 文件 属性有name和version
- 创建templates目录,并且在templates目录下面创建deployment.yaml文件,将deployment配置复制进去
- 在templates目录下同时创建service.yaml文件,并且将内容写入
- 使用命令
helm install .
命令即可安装,并且查看到创建了deployment,pod,service
- 使用
heml list
即可查看到helm的chart的相关信息
helm status helm名称
即可查看这个heml下面相关的所有组件及状态
- 通过变量动态更新helm创建的组件,在目录下创建values.yaml文件,将内容写入
- 修改deployment.yaml文件,将image字段改为变量
- 更新helm
helm upgeade helm名称 .
- 查看使用heml创建的pod已经正常运行
- 或者使用
heml updrade helm名称 --set key=value .
设置变量方式也可以更新
- 使用
helm delete helm名称
即可删除helm,使用helm list --deleted
即可查看到已经被删除的helm
- 使用
helm rollback helm名称 版本号
即可回滚已经操作的helm,使用helm
查看到helm已经重新被部署
Helm dashboard组件下载
helm repo update
将helm镜像仓库更新helm repo list
查看helm绑定的仓库一个是远程的,一个是本地仓库
helm fetch 镜像
即可查看到镜像从远程仓库下载下来,使用tar -zxvf tgz包
即可将下载的包解压
- 进入目录中即可查看到对应的Chart.yaml,templates目录values.yaml文件
- 创建kubernets-dashboard.yaml文件
helm install . -n dashboard名称 --namespace dashboard命名空间 -f kubernetes-dashboard.yaml
创建dashboard
- 将dashboard镜像上传到所有k8s节点
- 修改kubernete-dashboard的svc改为Nodeport类型
- 查看secret里面的token信息
- 将token粘贴到浏览器的令牌中
- 即可查看helm的dashboard
部署prometheus
- git clone下载prometheus项目,进入manifests目录,可以看到有很多yaml文件
- 修改grafana-service.yaml 文件,将service改为NodePort类型,指定宿主机端口为30100
- 修改prometheus-service.yaml文件,也使用NodePort宿主机木事nodePort为30200
- 修改alertmanager-service.yaml文件,nodePort映射为30300
5. 传上prometheus.tar.gz并且解压,相关插件的tar包都在prometheus目录下
6. 查看load-images.sh 脚本,里面使用的docker load -i docker镜像tar名字
生产镜像到本地docker仓库
7. 将目录和脚本移到脚本对应的/root目录下,执行脚本生成镜像,并且将所有镜像加载到k8s集群中的其他节点中
8. kubectl apply -f ../manifests
加载manifests目录下所有yaml
9. kubectl get pod -n monitoring
查看所有监控创建的pod
10. kubectl top node和kubectl top pod 查看pod和node使用cpu内存情况
11. kubectl get svc -A
查看所有namespace下面的svc
12. 访问prometheus管理页面,使用前面svc设置的30200端口,使用prometheus语法查询
13. 访问前面设置的30100端口即可查看grafana页面并且进行配置,并且可以看到相关node或者其他k8s集群中相关信息的收集显示信息
部署Hpa和使用案例
1.上传hpa的tar包,并且上传加载到所有k8s的其他node上面
2. kube run 一个镜像
3. kubectl top pod pod名称
查看pod使用资源
4. kubectl autoscale deployment deployment名称 --cpu-percent=50 --min=1 --max=10
命令指定自动扩缩容cpu使用到50%就创建新的pod最少1个,最多10个,kubectl get hpa
查看hpa创建情况,过一段时间kubectl get hpa
即可查看到检测到pod使用cpu情况
5.新建pod,进入pod中,死循环执行命令请求php-apache.default.svc.cluster.local,通过请求svc压测请求到刚刚创建的pod上,使之前创建的podcpu使用率上升
5. kubectl get hpa -w
监控查询hpa情况pod使用到了419%
6. 查看hpa deployment创建的pod的cpu压力情况,并且查看pod自动创建了