k8s之helm入门
1.概述
helm是k8s的另外一个项目,相当于linux的yum,在yum仓库中,yum不光要解决包之间的依赖关系,还要提供具体的程序包,helm仓库里面只有配置清单文件,而没有镜像,镜像还是由镜像仓库来提供,比如hub.docker.com、私有仓库.
helm提供了一个应用所需要的所有清单文件.比如对于一个nginx,我们需要一个deployment的清单文件、一个service的清单文件、一个hpa的清单文件,把这三个文件打包到一起,就是一个应用程序的程序包,称之为Chart.
Chart是一个helm程序包,其实质只是一个模板,我们可以对这个模板进行赋值(value),形成我们自定义的清单文件,也就实现我们生产个性化的需求,这样的仓库叫Chart仓库,一个https/http服务器.
Helm把Kubernetes资源打包到一个chart中,而chart被保存到chart仓库,通过chart仓库可用来存储和分享chart.helm工作在k8s集群之外,helm不直接操作apiserver,而是和Tiller交互,Tlller再和apiserver交互,最后由Apiserver把chart使用config赋值,最后部署成为release.helm是tiller的客户端,管理本地的chart仓库,作用:发送chart、实例安装、查询、卸载等.
helm先去检查chart是否存在,如果存在就把chart下载到helm本机当前用户的家目录下,然后helm把Chart和Config交给tiller,tiller和api server交互,api server把chart部署在k8s集群上,就不再叫chart了,而叫release;一个chart赋值不同,完全可以部署出多个release出来,所以可以把chart看做是一个安装包的模板,如果发现chart更新了,helm会自动滚动更新,还支持一键回滚的操作.
访问:https://github.com/helm/helm/releases下载安装包
wget https://storage.googleapis.com/kubernetes-helm/helm-v2.12.2-linux-amd64.tar.gz
tar xf helm-v2.12.2-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/
rbac配置文件样例:https://github.com/helm/helm/blob/master/docs/rbac.md
cat tiller-rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
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
cat /usr/lib/systemd/system/docker.service
Environment="NO_PROXY=127.0.0.1/8,127.0.0.1/16"
kubectl get pods --all-namespaces=true
# 下面这两步没用,还得下国内的镜像,直接执行第三步
export NO_PROXY="127.0.0.1/8,127.0.0.1/16"
helm init --service-account tiller
helm init --upgrade --tiller-image registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.12.2 \
--stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster
Happy Helming!
helm version
Client: &version.Version{SemVer:"v2.12.2",...)
Server: &version.Version{SemVer:"v2.12.2",...)
2.使用helm
官方charts列表 https://hub.kubeapps.com/
helm默认使用的charts源地址是https://kubernetes-charts.storage.googleapis.com,需要替换为阿里的helm源:
helm repo list
NAME URL
stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
local http://127.0.0.1:8879/charts
# helm源已经变成国内的了,下面这两步是移除默认源的,不需要执行
helm repo remove stable
helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo update
# 添加incubator源,这个源是开发版的安装包,用起来可能不稳定
helm repo add incubator https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/
#列出charts仓库中所有可用的应用
helm search
helm search mysql
helm inspect stable/mysql
# 用helm安装软件包,-name:指定release名字
helm install --name mysql1 stable/mysql
helm list # 查看安装的软件包
helm delete mysql1
helm常用命令
release管理:
install
delete
upgrade/rollback
list
history:查看release历史版本
status:获取release状态信息
chart管理:
create:创建一个chart,生成基础chart示例性文件,供我们修改用
fetch:下载仓库中的一个char到本地
get
inspect
package
verify # helm把安装包下载到当前用户的家目录下
ll /root/.helm/cache/archive/
# 修改chart里面的values.yaml实现定制,values.yaml文件中##是注释,#是可开启的参数
helm install --name mysql1 -f /root/values.yaml stable/mysql
metrics想要能被prometheus收集数据需要在metadata中将prometheus.io/scrape:设置为true
metadata:
annotations:
prometheus.io/scrape: 'true'
# 部署完应用包后,查看release提示信息
helm status mysql1
helm fetch stable/redis
查看chart官方手册,了解每个参数的含义https://docs.helm.sh/developing_charts/#charts
# 用helm生成基础chart示例性文件,myapp是chart的名字
helm create myapp
# 做语法检查
helm lint myapp
==> Linting myapp
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, no failures
# 打包
helm package myapp/
Successfully packaged chart and saved it to: /root/myapp-0.1.0.tgz
# 启动8879仓库的服务
helm serve
# 查看local仓库里面是否有我们创建的chart包
helm search myapp
# 部署我们自定义的chart
helm install --name myapp1 local/myapp
# 删除我们部署的chart
helm delete --purge myapp1
参考博客:http://blog.itpub.net/28916011/viewspace-2216650/
k8s之helm入门的更多相关文章
- Kubernetes 学习24 helm入门
一.概述 1.我们此前在使用kubernetes中,无论我们使用无状态的应用程序,比如myapp,nginx.以及有状态的tomcat,redis,etcd,...等等,他们部署在k8s之上会有这样的 ...
- Docker K8s基本概念入门
原文地址:https://blog.csdn.net/TM6zNf87MDG7Bo/article/details/79621510 k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具 ...
- kubernetes实战(十三):k8s使用helm持久化部署harbor集成openLDAP登录
1.基本概念 上节在k8s中部署了harbor和ldap,本节将部署harbor使用openLDAP验证,部署方式与之前相同,只是改了adminserver-cm.yaml的AUTH_MODE: &q ...
- K8s基本概念入门
序言 没等到风来,绵绵小雨,所以写个随笔,聊聊k8s的基本概念. k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非 ...
- Kubernetes K8S之Helm部署、使用与示例
Kubernetes K8S之Helm部署.使用.常见操作与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2 ...
- k8s 通过helm发布应用
什么是helm? Helm 是 Kubernetes 的包管理器.Helm 是查找.分享和使用软件构建 Kubernetes 的最优方式. 在红帽系的Linux中我们使用yum来管理RPM包,类似的, ...
- k8s使用helm打包chart并上传到腾讯云TencentHub
本文只涉及Helm的Chart操作,不会对其他知识进行过多描述.至于安装这块,麻烦自行百度吧,一大堆呢. 在容器化的时代,我们很多应用都可以部署在docker,很方便,而再进一步,我们还有工具可以对d ...
- kubernetes学习笔记之十四:helm入门
1.Helm的简介 Helm是Kubernetes的一个包管理工具,用来简化Kubernetes应用的部署和管理.可以把Helm比作CentOS的yum工具. Helm有如下几个基本概念: Chart ...
- kubernetes实战(十五):k8s使用helm持久化部署jenkins集成openLDAP登录
1.基本概念 Jenkins在DevOps工具链中是核心的流程管理中心,负责串联系统的构建流程.测试流程.镜像制作流程.部署流程等,在持续集成中常用到的工具如下: Maven:源代码编译工具 Robo ...
随机推荐
- 为ubuntu安装powerline记录
C:\Users\win10的用户名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\L ...
- python3 django连接mysql数据库
在django中将模型类中的数据迁移到mysql数据库中,首先使用pip install pymysql安装pymysql库, 然后在项目中的__init__.py中添加 import pymysql ...
- NodeJS的exports、module.exports与ES6的export、export default深入详解
前言 决定开始重新规范的学习一下node编程.但是引入模块我看到用 require的方式,再联想到咱们的ES6各种export .export default. 阿西吧,头都大了.... 头大完了,那 ...
- 移动端——页面点击( touchend -> click)
手机端页面好多要注意的,点击事件就是其中一个: 在手机端页面中使用 click,安卓手机能正常实现点击效果,可是苹果手机不能点击:用 touchend 代替 click,苹果手机中能点击,但是可能出现 ...
- Linux中查看系统资源占用情况的命令
用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况 ...
- SQL-W3School-基础:SQL SELECT 语句
ylbtech-SQL-W3School-基础:SQL SELECT 语句 1.返回顶部 1. 本章讲解 SELECT 和 SELECT * 语句. SQL SELECT 语句 SELECT 语句用于 ...
- ViewPager翻页控件简单使用方法
例子布局文件: 主activity布局文件:activity_view_pager.xml <?xml version="1.0" encoding="utf-8& ...
- java使用jconsole查看java程序运行(jmx原理)
在JVM启动参数上加上 java -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.aut ...
- breadwinner-养家之人_20190220
" 在我们那里,人是最珍贵的.话要说的更有道理,而不是提高音量,毕竟滋养花朵的是雨水,而不是雷鸣“ ”我叫苏莱曼,我的爸爸是个教师,我的妈妈是个作家.有一天我在路上看到一个玩具,就把它捡起来 ...
- JAVA 基础编程练习题28 【程序 28 排序算法】
28 [程序 28 排序算法] 题目:对 10 个数进行排序 程序分析:可以利用选择法,即从后 9 个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即 用第二个元素与后 8 个进行比较,并进 ...