Helm 致力于成为 Kubernetes 的包管理工具,可以方便地发现、共享和使用为 Kubernetes 构建的应用,它包含几个基本概念:

  • Chart:一个 Helm 包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含 Kubernetes 集群中的服务定义,类似 Homebrew 中的 formula,APT 的 dpkg 或者 Yum 的 rpm 文件;
  • Release: 在 Kubernetes 集群上运行的 Chart 的一个实例。在同一个集群上,一个 Chart 可以安装很多次。每次安装都会创建一个新的 release。例如一个 MySQL Chart,如果想在服务器上运行两个数据库,就可以把这个 Chart 安装两次。每次安装都会生成自己的 Release,会有自己的 Release 名称;
  • Repository:用于发布和存储 Chart 的仓库
一、Helm 组件

Helm 采用客户端/服务器架构,有如下组件组成:

  • Helm CLI 是 Helm 客户端,可以在本地执行;
  • Tiller 是服务器端组件,在 Kubernetes 群集上运行,并管理 Kubernetes 应用程序的生命周期 ;
  • Repository 是 Chart 仓库,Helm客户端通过HTTP协议来访问仓库中Chart的索引文件和压缩包

Helm工作原理:

Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。Helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作

Helm客户端:

Helm客户端是一个命令行工具,负责管理charts、reprepository和release。它通过gPRC API(使用kubectl port-forward将tiller的端口映射到本地,然后再通过映射后的端口跟tiller通信)向tiller发送请求,并由tiller来管理对应的Kubernetes资源

Tiller服务端:

Tiller接收来自Helm客户端的请求,并把相关资源的操作发送到Kubernetes,负责管理(安装、查询、升级或删除等)和跟踪Kubernetes资源。为了方便管理,tiller把release的相关信息保存在kubernetes的ConfigMap中

二、Helm 客户端安装

从官网下载最新版本的二进制安装包到本地:https://github.com/kubernetes/helm/releases

解压安装:

# 解压压缩包
tar -zxvf helm-2.9.0.tar.gz
# 把 helm 指令放到bin目录下
mv helm-2.9.0/helm /usr/local/bin/helm# 验证
helm help
三、Helm 服务端安装

在 Kubernetes 中安装 Tiller 服务,可选镜像:registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1(阿里云)

1)先在 K8S 集群上每个节点安装 socat 软件,不然会报如下错误:

E0522 22:22:15.492436   24409 portforward.go:331] an error occurred forwarding 38398 -> 44134: error forwarding port 44134 to pod dc6da4ab99ad9c497c0cef1776b9dd18e0a612d507e2746ed63d36ef40f30174, uid : unable to do port forwarding: socat not found.
Error: cannot connect to Tiller
# YUM 安装(每个节点都要安装)
yum install -y socat 

2)安装服务端(Tiller)

# 创建服务端
helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1  --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts# 创建TLS认证服务端,参考地址:https://github.com/gjmzj/kubeasz/blob/master/docs/guide/helm.md
helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 --tiller-tls-cert /etc/kubernetes/ssl/tiller001.pem --tiller-tls-key /etc/kubernetes/ssl/tiller001-key.pem --tls-ca-cert /etc/kubernetes/ssl/ca.pem --tiller-namespace kube-system --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

遇到错误 failed to list: configmaps is forbidden: User “system:serviceaccount:kube-system:default” cannot list configmaps in the namespace “kube-system”

执行以下命令创建 serviceaccount tiller 并且给它集群管理权限

kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

验证是否安装成功:

# 查看 helm 版本信息
helm versionClient: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}# 查看 pod 运行情况
kubectl get pod -o wide --all-namespacesNAMESPACE     NAME                             READY     STATUS    RESTARTS   AGE       IP            NODE
kube-system   tiller-deploy-59c7578f9b-28kb9   1/1       Running   0          16s       172.20.0.41   192.168.80.231
四、Helm 使用

1)更换仓库:

若遇到Unable to get an update from the “stable” chart repository (https://kubernetes-charts.storage.googleapis.com) 错误
手动更换stable 存储库为阿里云的存储库

# 先移除原先的仓库
helm repo remove stable
# 添加新的仓库地址
helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
# 更新仓库
helm repo update

2)查看在存储库中可用的所有 Helm charts:

helm searchNAME                            CHART VERSION   APP VERSION     DESCRIPTION
stable/acs-engine-autoscaler    2.1.3           2.1.1           Scales worker nodes within agent pools
stable/aerospike                0.1.7           v3.14.1.2       A Helm chart for Aerospike in Kubernetes
stable/anchore-engine           0.1.3           0.1.6           Anchore container analysis and policy evaluatio...
stable/artifactory              7.0.3           5.8.4           Universal Repository Manager supporting all maj...
stable/artifactory-ha           0.1.0           5.8.4           Universal Repository Manager supporting all maj...
stable/aws-cluster-autoscaler   0.3.2                           Scales worker nodes within autoscaling groups.
... ...

3)更新charts列表:

helm repo update

4)安装charts:

Monocular是一个开源软件,用于管理kubernetes上以Helm Charts形式创建的服务,可以通过它的web页面来安装helm Charts

安装Nginx Ingress controller,安装的k8s集群启用了RBAC,则一定要加rbac.create=true参数

helm install stable/nginx-ingress --set controller.hostNetwork=true,rbac.create=true

安装Monocular:

# 添加新的源
helm repo add monocular https://kubernetes-helm.github.io/monocular
# 安装
helm install monocular/monocular -f custom-repos.yaml# custom-repos.yaml 内容
cat custom-repos.yamlapi:config:repos:- name: stableurl: https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/chartssource: https://github.com/kubernetes/charts/tree/master/stable- name: incubatorurl: https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubatorsource: https://github.com/kubernetes/charts/tree/master/incubator- name: monocularurl: https://kubernetes-helm.github.io/monocularsource: https://github.com/kubernetes-helm/monocular/tree/master/charts

5)查看K8S中已安装的charts:

helm listNAME                REVISION    UPDATED                     STATUS      CHART               NAMESPACE
amber-seal          1           Mon Jul  2 17:29:25 2018    DEPLOYED    nginx-ingress-0.9.5 default
my-release          1           Mon Jul  2 15:19:44 2018    DEPLOYED    spark-0.1.10        default
nonplussed-panther  1           Mon Jul  2 17:27:41 2018    FAILED      nginx-ingress-0.9.5 default
turbulent-tuatara   1           Mon Jul  2 17:31:33 2018    DEPLOYED    monocular-0.6.2     default

6)删除安装的charts:

# 删除:helm delete xxx
helm delete amber-seal

五、卸载 Helm 服务端

执行命令,加 –force强制卸载

helm reset 或
helm reset --force

参考地址:https://github.com/gjmzj/kubeasz/blob/master/docs/guide/helm.md
     https://blog.csdn.net/wenwenxiong/article/details/79067054
     https://blog.csdn.net/luanpeng825485697/article/details/80873236

Kubernetes中安装Helm及使用相关推荐

  1. 安装kubernetes_如何在Kubernetes中安装和使用Linkerd

    安装kubernetes The author selected the Tech Education Fund to receive a donation as part of the Write ...

  2. 关于Kubernetes中使用Helm部署应用及私有Helm源搭建的一些笔记

    写在前面 学习K8s涉及,整理笔记记忆 博文偏实战,内容涉及: Helm的基本概念及安装,Helm源配置 chart包的安装部署 私有Helm源的搭建及chart包的push和pull "不 ...

  3. kubernetes 中安装 heapster 问题

    step1: 在官网下载部署文件 https://github.com/kubernetes-retired/heapster/tree/master/deploy/kube-config/influ ...

  4. kubernetes安装Helm

    Helm可帮助用户管理Kubernetes应用程序.Helm Charts可帮助用户定义,安装和升级最复杂的Kubernetes应用程序. Helm由客户端(helm)和服务器(Tiller)构成.客 ...

  5. kubernetes 安装 helm,ingress

    1.安装helm客户端 [root@cc-k8s01 work]# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.14.0-r ...

  6. CloudBees发布“Jenkins X”:面向部署到Kubernetes中的现代云应用的CI/CD解决方案

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ James Strachan和CloudBees团队发布了开源的"Jenkins ...

  7. Kubernetes中分布式存储Rook-Ceph部署快速演练

    最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也抽空多了解了一些.项目主要基于Rook-Ceph运行,考虑到Rook-Ceph部署也不那么简单,官方文档的步骤起点也不算低,因此,在整 ...

  8. Kubernetes中分布式存储Rook-Ceph的使用:一个ASP.NET Core MVC的案例

    在<Kubernetes中分布式存储Rook-Ceph部署快速演练>文章中,我快速介绍了Kubernetes中分布式存储Rook-Ceph的部署过程,这里介绍如何在部署于Kubernete ...

  9. 在每个运行中运行多个查询_在Kubernetes中运行OpenEBS

    什么是OpenEBS? 现在,OpenEBS是kubernetes下与容器原生和容器附加存储类型相关通用的领先开源项目之一. 通过为每个工作负载指定专用的存储控制器,OpenEBS遵循容器附加存储或C ...

最新文章

  1. showModalDialog 页面上GridView的分页问题
  2. UNICODE 码和字符的相互转换
  3. 1042 字符统计 (20 分)(c语言)
  4. 普通索引和唯一索引,傻傻分不清楚?
  5. android 刷windows10,微软计划在Android机上刷Windows 10
  6. python中random函数用法_random函数的用法
  7. idea看更改过的代码_就是你把所有代码全写在一个类里的?
  8. Gridview导出到EXCEL
  9. ​iPhone 13发布时间曝光;中国博士创造新算法,提高步态精确识别身份的精度;iOS 15引入半身照的人物识别功能|极客头条...
  10. 数字计算机的分类依据,数字计算机模拟计算机分类依据
  11. Powershell基本命令总结(更新中)
  12. MyBatis学习笔记(1)-MyBatis介绍
  13. Python使用hashlib模块生成给定文本数据的签名摘要信息(包括各种哈希函数)
  14. 第11 章 关联容器
  15. Android流光动画,流光相机app_流光相机官网-多特软件站安卓网
  16. Centos 7 安装Redis
  17. openCV中sobel边缘增强
  18. Infopath2007表单转化成word2007
  19. Be Better:遇见更好的自己-2016年记
  20. 2020Android面试题跳楼大整理,京东-字节跳动面经+个人总结+心得

热门文章

  1. 窝窝上市其实是团购市场的利空?
  2. 深度学习框架-Tensorflow基础学习
  3. 算法题:购买股票(2次交易)
  4. 榆熙电商:什么是7天无理由退货?有什么规则?
  5. 组合的json嵌套文件分割或者拆分
  6. 模仿大脑是AI的好方向吗
  7. vue数据可视化组件
  8. 微服务请求第三方服务实现
  9. 【转载】:创业是一种心态、信念和坚持,是一种生活方式!
  10. (转)Lucene中文分词图解