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 : 客户端,管理本地的 Chart 仓库,管理 Chart, 与 Tiller 服务器交互,发送 Chart, 实例安装,查询,卸载等操作

Tiller : 服务端,接收 helm 发来的 Charts 与 Config,合并生成 release

Repository : Chart 仓库,Helm客户端通过HTTP协议来访问仓库中Chart的索引文件和压缩包

RBAC配置文件示例:

https://github.com/helm/helm/blob/master/docs/rbac.md

官方可用的Chart列表:

https://hub.kubeapps.com

helm常用命令:

  1. release管理:

    install

    delete

    upgrade/rollback

    list

    history:release的历史信息

    status 获取release状态信息

  2. chart管理:

    create

    inspect

    package

    verify

# 删除其他 pods
kubectl delete deployment myapp-deploy mkdir helm
cd helm/
# 没法下载,去国外的服务器上下载
wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz
tar zxf helm-v2.9.1-linux-amd64.tar.gz
cd linux-amd64
mv helm /usr/bin # 配置权限
cat tiller-rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system kubectl apply -f tiller-rbac.yaml # 因为 gcr.io/kubernetes-helm/tiller:v2.9.1 这个镜像需要从国外下载,所以我提前导入 node1 和 node2 节点
# 初始化
helm init --service-account tiller kubectl get pods -n kube-system
# 看到下面 pod 正常运行
tiller-deploy-759cb9df9-jbk2r 1/1 Running 0 1h # 查看版本信息
helm version # 查看源
helm repo list # helm 替换国内的 repo
helm repo remove stable
helm repo add stable https://burdenbear.github.io/kube-charts-mirror/ # 查找
helm search memcached helm inspect stable/memcached # 尝试安装 redis
helm install --name redis1 stable/redis # 因为没有 pv,所以没法成功创建
helm delete redis1 # 修改配置
cd ~/.helm/cache/archive
tar zxf redis-5.1.0.tgz
cp redis/values.yaml ~/helm/
cd ~/helm/ # 修改下面的两个参数,不使用 pv
vi values.yaml cluster:
enabled: false persistence:
enabled: false # 再次安装 redis
helm install --name redis1 -f values.yaml stable/redis kubectl get pods
# 运行结果:
NAME READY STATUS RESTARTS AGE
redis1-master-0 1/1 Running 0 1m # 获取 release 状态信息
helm status redis1

K8S helm的更多相关文章

  1. 如何使用vs将asp.net core项目添加容器支持并发布docker镜像到私有dockerhub和添加k8s/helm管理

    这篇文章介绍一下,如何使用VS2017给asp.net core添加容器支持,并发布镜像到私有docker hub,然后用chart管理容器镜像的操作流程. 话不多说,just do it. 新建项目 ...

  2. kubernetes(k8s) helm安装kafka、zookeeper

    通过helm在k8s上部署kafka.zookeeper 通过helm方法安装 k8s上安装kafka,可以使用helm,将kafka作为一个应用安装.当然这首先要你的k8s支持使用helm安装.he ...

  3. K8s Helm安装配置入门

    作为k8s现在主流的一种包部署方式,尽管不用,也需要进行一些了解.因为,它确实太流行了. 这一套太极拳打下来,感觉helm这种部署,目前还不太适合于我们公司的应用场景.它更适合需要手工编程各种yaml ...

  4. k8s Helm安装Prometheus Operator

    Ubuntu 18 Kubernetes集群的安装和部署 以及Helm的安装完成了k8s的集群和helm的安装,今天我们来看看Prometheus的监控怎么搞.Prometheus Operator ...

  5. k8s~helm镜像版本永远不要用latest

    对于容器编排工具k8s来说,你可以使用它规定的yaml格式的脚本,使用客户端kubectl来与k8s进行通讯,将你定义好的yaml部署脚本应用到k8s集群上,而这对yaml脚本一般来说都是很像的,就是 ...

  6. Kubernetes笔记(三):Gitlab+Jenkins Pipeline+Docker+k8s+Helm自动化部署实践(干货分享!)

    通过前面两篇文章,我们已经有了一个"嗷嗷待哺"的K8s集群环境,也对相关的概念与组件有了一个基本了解(前期对概念有个印象即可,因为只有实践了才能对其有深入理解,所谓"纸上 ...

  7. K8s helm 创建自定义Chart

    # 删除之前创建的 chart helm list helm delete --purge redis1 # 创建自定义 chart myapp cd ~/helm helm create myapp ...

  8. k8s helm 可视化UI 管理工具 monocular部署试用

    官方建议是用 helm 进行安装,但是helm 有点费事(各种原因...) 所以使用官方说的使用docker-compose 但是默认官方的compose 跑起来 还是真费事,经过调整,修改了一版支持 ...

  9. [k8s]helm原理&私有库搭建&monocularui和kubeapp探究

    运行最简单的charts示例 helm的2个chart例子: https://github.com/kubernetes/helm/tree/master/docs/examples/nginx he ...

随机推荐

  1. Laravel 5.6: Specified key was too long error

    Laravel 5.6: Specified key was too long error 在Laravel执行以下命令: php artisan migrate 这是由于Laravel5.6设置了数 ...

  2. Javascript高级编程学习笔记(29)—— BOM(3)location对象

    在JS中location是一个神奇的对象 它既是window对象的属性,也是document对象的属性 它的作用主要在于保存当前文档页面的信息,以及将 url 解析为独立的片段 location对象属 ...

  3. 微信小程序wx.request接口

    微信小程序wx.request接口 wx.request是小程序客户端与服务器端交互的接口 HTTPS 请求 一个微信小程序,只能同时(同时不能大于5个)有5个网络请求 wx.request(OBJE ...

  4. python面试中被问的最多的10道题

    1 性能: 解析下面代码慢在哪里def strtest1(num):str='first'for i in range(num):str+="X"return str解析:pyth ...

  5. HTML一些有趣的东西

    1.<head>标签里: <meta http-equiv="Refresh" content="3"/><!--三秒自动刷新-- ...

  6. 4-3 组件参数校验与非props特性

    本文参考脚本之家,https://www.jb51.net/article/143466.htm 通过属性的形式,父组件对子组件进行参数的传递 //如下图: //父组件设置content属性,向属性中 ...

  7. vue搭建多页面开发环境

    自从习惯开发了单页面应用,对多页面的页面间的相互跳转间没有过渡效果.难维护极度反感.但是最近公司技术老大说,当一个应用越来越大的时候单页面模式应付不来,但是没讲怎么应付不来,所以还得自己去复习一遍这两 ...

  8. 最优路径算法合集(附python源码)(原创)

    主要的最优(最短)路径算法: 一.深度优先算法:二.广度优先算法:三.Dijstra最短路径:四.floyd最短路径(待): 一.深度优先算法 图的深度优先搜索(Depth First Search) ...

  9. linux服务器部署tomcat和Nginx

    项目需要,申请了三台测试机器,好在测试机里面光秃秃的什么都没有,我就可以好好的学习一把玩一把了!接下来以图文的形式讲一下我所碰到的坑以及小小的收获吧! 一.准备工作 首先你得有一台可以玩的linux服 ...

  10. 项目详解4—haproxy 反向代理负载均衡

    一.企业服务架构图及负载均衡的要求 1.场景说明 在企业生产环境中,每天会有很多的需求变更,比如增加服务器.新业务上线.url路由修改.域名配置等等,对于前端负载均衡设备来说,容易维护,复杂度低,是首 ...