K8S正常部署应用是如下方式

kubectl create deployment web --image=nginx --dru-run=client -o yaml > web.yaml
kubecrl expose web --port=80 --target-port=80 --type NodePort --dry-run=client -o yaml > svc.yanl kubectl apply -f web.yaml
kubectl apply -f svc.yaml
创建ingress 规则暴露

如果需要部署的应用多了就需要经常修改或创建yaml,部署起来就会力不从心了,目前kubernetes推出了helm 3.0版本,

解决管理应用问题,重复使用yaml

1、将这些yaml作为整体管理
2、解决yaml高效复用
3、不支持应用级别版本管理

helm 是一个命令行管理工具

chart 把yaml打包

release 版本,指应用级别的版本管理

helm v3

1、 架构改变,去掉Tiller,直接helm通过kubeconfig连接apiserver

2、 release名称可以在不同命名空间

helm官网地址:https://helm.sh/docs/intro/quickstart/

下载地址:https://github.com/helm/helm/releases

部署helm 

wget https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
安装
tar xf helm-v3.0.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/

配置harbor源仓库

helm repo list              #查看已经配置的源
helm repo add stable http://mirror.azure.cn/kubernetes/charts #添加源仓库地址
helm search repo weave #搜索镜像

部署容器,weave 官方的UI镜像

helm install ui stable/weave-scope
helm list #查看已经部署的版本
kubectl edit svc ui-weave-scope #修改type暴露NodePort访问

kubectl get svc,ep

kubectl get pods -o wide|grep weave

制作chart

helm create mychart

执行命令后会自动生成两个文件夹和两个yaml 文件

charts             templates             Chart.yaml    values.yaml
一般不会有什么内容 模板文件yaml存放位置 属性信息 所有yaml全局变量

删除原来templates下的所有yaml文件,生成自己的项目文件,rm -rf mychart/templates/*   生成yaml文件

kubectl create deployment nginx --image=nginx --dry-run=client -o yaml > deployment.yaml
kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort --dry-run=client -o yaml > service.yaml

使用helm 直接安装目录下的即可

helm install web mychart/

升级

helm upgrade web mychart

helm核心应用

yaml 里面进行变量进行传入,维护values.yaml

一套yaml部署多个应用时,找出yaml修改的位置

1、	资源名称
2、 镜像
3、 标签
4、 副本数
5、 端口
6、 PV、PVC 等等这些
service的需要修改的
1、 端口
2、 资源名称
3、 标签。。。等等

动态渲染模板

标准deployment模板

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
strategy: {}
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx

动态deployment模板

apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-deploy
spec:
replicas: {{ .Values.replicas }}
selector:
matchLabels:
app: {{ .Values.label }}
strategy: {}
template:
metadata:
labels:
app: {{ .Values.label }}
spec:
containers:
- image: {{ .Values.image }}:{{ .Values.tag }}
name: nginx

标准的service模板

apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: nginx
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: NodePort

动态service模板

apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}-svc
spec:
ports:
- port: 80
protocol: TCP
targetPort: {{ .Values.port }}
selector:
app: {{ .Values.label }}
type: NodePort

全局变量模板values.yaml

replicas: 1
image: lizhenliang/java-demo
tag: latest
label: java-demo
port: 8080

测试执行

helm install --dry-run web mychart/

正式运行

helm install web1 mychart/
helm list

kubectl get pods,svc | egrep "web1-deploy|web1-svc"

扩容副本

helm upgrade web1 --set replicas=3 mychart/
kubectl get pods | grep "web1-deploy"

回滚

helm history web1   # 查看版本更新记录
helm rollback web1 1

最新文章

  1. SqlServer用sql对表名、字段做修改
  2. Python学习-day1
  3. JSP与Servelt的区别
  4. HTTP状态码查询
  5. ubuntu-15.10-server-i386.iso 安装 Oracle 11gR2 数据库
  6. 关于WebView的内存泄露问题
  7. JavaScript触摸与手势事件
  8. 【BZOJ 1877】 [SDOI2009]晨跑
  9. linux的df命令
  10. 运营总监招聘-e袋洗招聘-拉勾网
  11. hadoop2对比hadoop1
  12. javascript深入理解js闭包(看了挺多的,感觉这篇比较透彻)
  13. 【Android】error opening trace file: No such file or directory (2)
  14. vim安装
  15. python, ImageFont
  16. JVM总结(五):JVM字节码执行引擎
  17. 微信小程序- 提示不在以下合法域名列表中
  18. CSS3 ::selection 选择器
  19. SQLite数据库管理工具(SQLiteStudio)v3.1.1
  20. DTrace memory leak 内存泄露

热门文章

  1. CVPR2020 面向密集多角度物体检测的动态修正网络(DRN)
  2. 小程序开发-基础组件icon/text/progress入门
  3. 跟着尚硅谷系统学习Docker-【day05】
  4. vue实现侧边导航栏
  5. 案例:ADG环境遇到redo日志member路径有误以及RMAN-6571错误
  6. core的 Linq基本使用,简单模拟数据库多表的左右内连接的测试
  7. Unity接入多个SDK的通用接口开发与资源管理(一)
  8. mariadb 数据库集群配置
  9. Docker网络(五)
  10. Combine 框架,从0到1 —— 4.在 Combine 中执行异步代码