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

helm包管理工具的更多相关文章

  1. Helm包管理工具(简介、安装、方法)

    认识Helm 每次我们要部署一个应用都需要写一个配置清单(维护一套yaml文件),但是每个环境又不一样.部署一套新的环境成本是真的很高.如果我们能够使用类似于yum的工具来安装我们的应用的话那就太好了 ...

  2. 使用 Helm 包管理工具简化 Kubernetes 应用部署

    当在 Kubernetes 中已经部署很多应用时,后续需要对每个应用的 yaml 文件进行维护操作,这个过程会变的很繁琐,我们可以使用 Helm 来简化这些工作.Helm 是 Kubernetes 的 ...

  3. k8s包管理工具helm - 介绍和安装

    目录 1.Kubernetes 应用部署的挑战 2.Helm 是什么 3.Helm 组件及相关术语 4.Helm 工作原理 5.Helm 安装 5.1 客户端安装 5.2 安装服务端 Tiller 5 ...

  4. 利用chocolate包管理工具安装helm

    在powershell中执行 1 安装choco包管理工具 Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object Sys ...

  5. Helm:kubernetes应用包管理工具

    概要 Helm:kubernetes应用包管理工具 K8s部署应用的时候,应用会通过yaml描述信息调用K8s-api:Helm即是管理这些Yaml的应用包管理工具 组成 Helm包含5个部分 Hel ...

  6. Kubernetes-17:Kubernets包管理工具—>Helm介绍与使用

    Kubernets包管理工具->Helm 什么是Helm? 我们都知道,Linux系统各发行版都有自己的包管理工具,比如Centos的YUM,再如Ubuntu的APT. Kubernetes也有 ...

  7. k8s的应用包管理工具helm的部署和使用

    1.概述 我们一般是在k8s里面部署一些简单的应用,比如用deployment,daemonset,statefuleset的方式来部署应用,但是如果要部署一些复杂的应用,那么整个配置的编写.部署的过 ...

  8. 云原生之旅 - 5)Kubernetes时代的包管理工具 Helm

    前言 上一篇文章 [基础设施即代码 使用 Terraform 创建 Kubernetes] 教会了你如何在Cloud上面建Kubernetes资源,那么本篇来讲一下如何在Kubernetes上面部署应 ...

  9. Helm包管理

    Helm Kubernetes 包管理工具 Helm 可以帮助我们管理 Kubernetes 应用程序 - Helm Charts 可以定义.安装和升级复杂的 Kubernetes 应用程序,Char ...

随机推荐

  1. jdk1.8 新增工具类

    目录 optional 时间API Instant localDateTime LocalDate LocalTime Duration TemporalAdjuster DateTimeFormat ...

  2. 面试【JAVA基础】JVM

    1.内存模型 1.1.堆 堆是所有线程共享的,主要存放对象实例和数组. 新生代和老年代的比例是1:2. 新生代中三个区域的比例是 8 : 1 : 1. 1.1.1.新生代 对象分配在eden区中,当e ...

  3. YoloV4当中的Mosaic数据增强方法(附代码详细讲解)码农的后花园

    上一期中讲解了图像分类和目标检测中的数据增强的区别和联系,这期讲解数据增强的进阶版- yolov4中的Mosaic数据增强方法以及CutMix. 前言 Yolov4的mosaic数据增强参考了CutM ...

  4. H5游戏定制,4大优势助力企业曝光10W+

    H5游戏定制,4大优势助力企业曝光10W+ 移动互联网已成为了人们生活的一部分,普通广告形式已很难吸引用户的眼球,企业要怎样才能将广告更广泛的传播给更多用户呢?根据TOM游戏多年从业经验,为大家分享以 ...

  5. Kafka入门(4):深入消费者

    摘要 在这一篇文章中,我将向你介绍消费者的一些参数. 这些参数影响了每次poll()请求的数据量,以及等待时间. 在这之后,我将向你介绍Kafka用来保证消费者扩展性以及可用性的设计--消费者组. 在 ...

  6. Unity接入多个SDK的通用接口开发与资源管理(二)

    接着上篇,本篇对SDK接口进行封装.在开始之前,需要先了解下面知识. (1)unity与android之间的交互 unity通过下面方式调用android中的函数: 方法一: AndroidJavaC ...

  7. [LeetCode]364. 加权嵌套序列和 II (DFS)

    题目 给一个嵌套整数序列,请你返回每个数字在序列中的加权和,它们的权重由它们的深度决定. 序列中的每一个元素要么是一个整数,要么是一个序列(这个序列中的每个元素也同样是整数或序列). 与 前一个问题 ...

  8. Java 15 正式发布, 14 个新特性,刷新你的认知!!

    JDK 15 2020/09/15 如期而至! 这个时间牛逼啊,和苹果发布会同天? OracleJDK 15 发布地址: https://www.oracle.com/java/technologie ...

  9. k8s重要概念及部署k8s集群(一)

    k8s介绍 Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg).在Docker技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功 ...

  10. openstack核心组件——horizon Web管理界面(10)

    一.horizon 介绍: 理解 horizon Horizon 为 Openstack 提供一个 WEB 前端的管理界面 (UI 服务 )通过 Horizone 所提供的 DashBoard 服务 ...