helm V3的特性:

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

  2. release名称可以在不同命令空间重用

  3. chart支持放到docker镜像仓库

K8S部署一个应用的流程如下

编写 yaml : deployment service ingress

1.0创建 deployment模板

kubectl   create  deployment  nginx  --image=nginx   --dry-run  -o  yaml  >  deployment.yaml

1.1启动nginx pod

kubectl  apply  -f  deployment.yaml

1.2检查pod服务

kubectl get pods

2.0创建service资源

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

2.1.启动service服务

kubectl apply  -f  service.yaml

2.2检查service端口

kubectl get svc

3.0访问该nginx服务

其中一个node节点ip+31190端口

kubectl describe  pod   `web-dc77dd8db-7r8k5`    

有问题查看构建镜像的构建

helm  解决了如下管理应用的问题1. 如何将这些yaml作为一个整体管理?2. 这些yanl文件如何高效复用?3. 不支持应用级别的版本管理

开始实战

wget      http://120.78.77.38/file/helm-v3.0.0-linux-amd64.tar.gz#也可以去官网下载 tar -xf  helm-v3.0.0-linux-amd64.tar.gz   && cd  linux-amd64 mv  helm   /usr/bin/     #将helm二进制文件拷贝到宿主机/bin下

配置helm微软源地址

helm  repo  add  stable  http://mirror.azure.cn/kubernetes/charts/

检查配置源地址

helm  repo list

通过helm安装一个k8s-ui

1.通过helm安装软件
helm    search  repo  weave   #去仓库中查找weave的程序包

 helm    install  ui  stable/weave-scope   #安装

 kubectl  get pods   检查

2.修改配置文件,并访问

ClusterIP改成 NodePort

 kubectl  edit svc   ui-weave-scope

kubectl get  svc  #可以看到暴露的端口

http://192.168.106.103:32055/

创建一个mychart包管理模板

helm create  mychart

#删除templates/目录下的文件/将之前nginx的deployment和service yaml文件拷贝过来rm  -rf   /templates/*mv  /root/deployment.yaml   ./ mv  /root/service.yaml   ./ 

kubectl delete  svc  web  #删除之前的nginx  svckubectl delete  deployment  web  #删除之前的nginx  podcd  /roothelm  install  web  mychart/

执行完会自动创建deployment和service

修改更新helm

helm   upgrade web  mycharthelm   list  检测服务

通过修改helm全局变量模板deployment/service关键信息创建应用

# vim  values.yamlreplicaCount: 1image: zhangfan5391621/java-demotag: latestlabel: java-demoport: 8080

修改deployment.yaml(关键信息为变量定义信息)

# vim  deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata:  name: {{  .Release.Name }}-dpspec:  replicas: {{ .Values.replicas }}  selector:    matchLabels:      app: {{ .Values.label }}  template:    metadata:      labels:        app: {{ .Values.label }}    spec:      containers:      - image: {{ .Values.image }}:{{ .Values.tag }}        name: nginx

修改service.yaml(关键信息为变量定义信息)

# vim  service.yamlapiVersion: v1kind: Servicemetadata:  name: {{ .Release.Name }}-svcspec:  ports:  - port: 80    protocol: TCP    targetPort:  {{ .Values.port }}  selector:    app: {{ .Values.label }}  type: NodePort
helm  install   --dry-run web1  mychart/    #检测配置变量是否正确生效

helm install web1 mychart/ 创建应用

  • 通过定义变量成功创建了应用

  • 查看helm创建的应用

helm 扩容

helm  upgraded  web1  --set  replicas=3  mychart/   #扩容副本3个

回滚

helm    rollback    web1   1    #将web1回滚到第一个版本
©著作权归作者所有:来自51CTO博客作者马哥教育的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 中介效应最新进展: 中介效应中的工具变量法使用方法及其代码!
  2. AER强调计量方法的重要性, 经济学因果分析中的p值操纵和发表偏倚
  3. js引用,常用数据类型,变量与常量,函数(高阶,箭头,立即执行),作用域与闭包
  4. Linux运维入门教程05-02 (利用vi编辑器创建和编辑正文文件)
  5. shell变量的删除、替换和替代
  6. shell变量的运算
  7. shell变量的赋值
  8. 苹果macOS Big Sur可启动安装程序驱动器如何创建?
  9. 加入其他控制变量后, 估计系数的符号相反了?

随机推荐

  1. Android中对Handle机制的理解
  2. android 中的 Broadcast 机制详解
  3. Android Studio开发基础之AutoCompleteTe
  4. Android应用程序用真机调试步骤
  5. Android Studio系列(二)使用Android Studio
  6. android 设置布局动画
  7. Android 2.0 平台的亮点
  8. Android(安卓)如何保持屏幕长亮?
  9. Android开发从入门到精通(项目案例版)——
  10. android 更新版本号