kubernetes学习笔记之十四:helm入门

摘要:
您可以将Helm与CentOS的yum工具进行比较。Helm有以下基本概念:Chart:是由Helm管理的安装包,其中包含要部署的安装包资源。图表可以与CentOSyum使用的rpm文件进行比较。1.tiller在Kubernetes集群上运行,并管理图表安装的发布。帮助是一个命令行工具,通常可以在CI/CDServer上本地运行。

1.Helm的简介

Helm是Kubernetes的一个包管理工具,用来简化Kubernetes应用的部署和管理。可以把Helm比作CentOS的yum工具。 Helm有如下几个基本概念:
Chart: 是Helm管理的安装包,里面包含需要部署的安装包资源可以把Chart比作CentOS yum使用的rpm文件。每个Chart包含下面两部分:
  1.包的基本描述文件Chart.yaml
  2.放在templates目录中的一个或多个Kubernetes manifest文件模板
Release:是chart的部署实例,一个chart在一个Kubernetes集群上可以有多个release,即这个chart可以被安装多次
Repository:chart的仓库,用于发布和存储chart
使用Helm可以完成以下事情:   1.管理Kubernetes manifest files   2.管理Helm安装包charts   3.基于chart的Kubernetes应用分发

二、Helm的组成

Helm由两部分组成,客户端helm和服务端tiller。
  1.tiller运行在Kubernetes集群上,管理chart安装的release
  2.helm是一个命令行工具,可在本地运行,一般运行在CI/CD Server上。

三、安装helm和tiller

1.下载helm
[root@master-01 ~]# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.12.1-linux-amd64.tar.gz  #如何无法科*学*上*网可以从我的网盘中下载 链接: (https://pan.baidu.com/s/1XmVnCMmNVOf1puRqgoqdXw 提取码: 44s1) 
[root@master-01 ~]# tar xf helm-v2.12.1-linux-amd64.tar.gz 
总用量 32508
-rw-------. 1 root root     2002 2018-12-28 14:02 anaconda-ks.cfg
-rw-r--r--  1 root root 22719794 2019-01-03 21:55 helm-v2.12.1-linux-amd64.tar.gz
drwxr-xr-x  2 root root       64 2018-12-20 07:11 linux-amd64
[root@master-01 linux-amd64]# ll
总用量 71644
-rwxr-xr-x 1 root root 36844864 2018-12-20 07:09helm
-rw-r--r-- 1 root root    11343 2018-12-20 07:11LICENSE
-rw-r--r-- 1 root root     3138 2018-12-20 07:11README.md
-rwxr-xr-x 1 root root 36495968 2018-12-20 07:11tiller
[root@master-01 linux-amd64]# cp helm /usr/bin/  #下载解压完成后,直接将helm执行文件放入PATH环境变量中就可以使用了
[root@master-01 linux-amd64]# helm -h
2.安装tiller

由于tiller需要安装、删除等操作pod的权限,所以要为tiller设置相应的权限,权限可以分为集群级别或名称空间级别

配置文档:https://github.com/helm/helm/blob/master/docs/rbac.md

[root@master-01 ~]# mkdir manifests
[root@master-01 ~]# cd manifests/
[root@master-01manifests]# ll
总用量 0
[root@master-01manifests]# mkdir helm
[root@master-01 manifests]# cat tiller-rbac.yaml  #创建tiller的rbac配置文件
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
[root@master-01 manifests]# kubectl apply -f tiller-rbac.yaml 
serviceaccount/tiller created
clusterrolebinding.rbac.authorization.k8s.io/tiller created
[root@master-01 manifests]# kubectl get sa -n kube-system |grep tiller  #确认是否创建成功
tiller                               157s
[root@master-01 manifests]# helm init  --service-account tiller  --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.12.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts #由于墙的原因,所以我们使用阿里的chart仓库,注意指定的tiller版本需要和helm版本一致 
$HELM_HOME has been configured at /root/.helm.
Tiller (the Helm server
-side component) has been upgraded to the current version.
Happy Helming
!
[root@master
-01 manifests]# kubectl get pod -n kube-system |grep tiller #查看tiller的pod是否创建成功
tiller
-deploy-7d898b45c4-knp4b 1/1 Running 02m
[root@master
-01manifests]# helm version
Client:
&version.Version{SemVer:"v2.12.1", GitCommit:"02a47c7249b1fc6d8fd3b94e6b4babf9d818144e", GitTreeState:"clean"}
Server:
&version.Version{SemVer:"v2.12.1", GitCommit:"02a47c7249b1fc6d8fd3b94e6b4babf9d818144e", GitTreeState:"clean"}

可能遇到的报错:

E0224 14:13:16.077226    7416 portforward.go:331] an error occurred forwarding 37271 -> 44134: error forwarding port 44134 to pod 76a7312e49220a229e443546a4b32d3e0406f09fd9b3646b3d30f6833e121375, uid : unable to doport forwarding: socat not found.
Error: cannot connect to Tiller

解决方法:

在所有节点和vip服务器上安装socat
yum -y install socat

如果只安装helm客户端,执行以下操作:

wget https://storage.googleapis.com/kubernetes-helm/helm-v2.12.1-linux-amd64.tar.gz  #下载安装包
helm init --client-only --stable-repo-url https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts/   #使用--client-only 参数

四、常用命令

查看下载的包的信息

[root@master-01 manifests]# ll ~/.helm/cache/archive/#helm下载的包路径
总用量 8
-rw-r--r-- 1 root root 6189 2019-01-03 23:16 redis-1.1.15.tgz
[root@master-01 archive]# tar xf redis-1.1.15.tgz 
tar: redis/Chart.yaml:不可信的旧时间戳 1970-01-01 08:00:00  #时间戳告警可以忽略
.....
[root@master-01archive]# tree redis
redis
├── Chart.yaml  #描述当前chart有哪些属性信息
├── README.md   #自述文件
├── templates   #模板文件目录
│ ├── deployment.yaml  #模板文件,之所以叫做模板文件是因为文件中大量使用了go语言模板
│ ├── _helpers.tpl
│ ├── networkpolicy.yaml
│ ├── NOTES.txt
│ ├── pvc.yaml
│ ├── secrets.yaml
│ └── svc.yaml
└── values.yaml#定义默认值
1 directory, 10 files

其他:

[root@master-01 ~]# helm -h
[root@k8s-master templates]# helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator #添加一个repo仓库,名称为incubator
[root@k8s-master templates]# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts 
[root@k8s-master templates]# helm repo remove stable #删除一个仓库,名称为stable
[root@k8s-master templates]# helm repo list    #显示所有的仓库列表
[root@k8s-master templates]# helm repo update  
[root@k8s-master templates]# helm search elasticsearch #搜索一个chart
[root@k8s-master templates]# helm fetch incubator/elasticsearch #下载一个chart并解压到本地
[root@k8s-master archive]# cd /root/.helm/cache/archive
[root@k8s-master archive]# ll

查看详细命令帮助:https://docs.helm.sh/helm/#helm

项目地址:https://github.com/helm/helm

下载地址:https://github.com/helm/helm/releases/

官方文档地址:https://docs.helm.sh/

helm官方网址:https://helm.sh/

helm chart官方网址:https://hub.kubeapps.com/

免责声明:文章转载自《kubernetes学习笔记之十四:helm入门》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇窗口函数——数据分析Win7下恢复文件默认图标下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用Ingress来负载分发微服务

目录   使用Ingress来负载分发微服务  Demo规划  准备Demo并完成部署  创建部署(Deployment)资源  创建服务(Service)资源  创建Ingress资源并配置转发规则  使用Ingress来负载分发微服务NodePort Service存在太多缺陷,不适合生产环境。LoadBlancer Service则不太灵活,比如...

Redis系列(四)-Redis 哨兵(Sentinel)模式

Redis的主从复制模式下, 一旦主节点由于故障不能提供服务, 需要人工将从节点晋升为主节点, 同时还要通知应用方更新主节点地址, 对于很多应用场景这种故障处理的方式是无法接受的。 可喜的是Redis从2.8开始正式提供了Redis Sentinel(哨兵) 架构来解决这个问题。Redis主从复制的缺点:没有办法对master进行动态选举,需要使用Sent...

kubernetes-v1.20.4 二进制部署-flannel-v0.13.0

一、部署CNI网络 获取最新更新以及文章用到的软件包,请移步点击:查看更新 1、先准备好CNI二进制文件: 下载地址:https://github.com/containernetworking/plugins/releases/download/v0.8.6/cni-plugins-linux-amd64-v0.8.6.tgz 2、解压二进制包并移动到默...

Echarts Jqplot嵌extjs4 windows 装配方法

 js组件绘图终于是画在一个指定id的div或dom元素中。 在项目中有可能须要画在 Extjs容器中,研究了一下,能够通过下面的思路实现,方法跟大家共享下: 1、首先做一个容器,把此内容加入到window的items属性中。(或者new一个box,利用window.add函数加入进去) 将容器的id指定为chart要渲染的id。 Js代码  ...

搭建keepalived+mysql主从复制高可用

准备工作: 完成keepalived的安装 完成docker的安装 docker镜像里面自行安装iproute2, vim, iputils-ping(可选)等工具,便于测试apt-get install iproute2 apt-get install vim apt-get install iputils-ping 主数据库master 1....

基于Docker的主从复制搭建

利用Docker搭建主从服务器 首先拉取docker镜像,我们这里使用5.7版本的mysql: docker pull mysql:5.7.19 然后使用此镜像启动容器,这里需要分别启动主从两个容器 Master(主): docker run -p 3339:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=12345...