Kubernetes中安装Helm及使用

2018年07月02日 17:41:09 灬勿忘丶心安 阅读数 3699更多

分类专栏: K8S
 
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

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-.tar.gz
# 把 helm 指令放到bin目录下
mv helm-/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 :: portforward.go:] an error occurred forwarding  -> : error forwarding port  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 version 要与 tiller 后面的tag 已知起来注意 init 之后可以先查看一下deployment 有没有 pod的创建 时间可能会挺长的 还需要pull images

# 创建服务端
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 version

Client: &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-namespaces

NAMESPACE     NAME                             READY     STATUS    RESTARTS   AGE       IP            NODE
kube-system   tiller-deploy-59c7578f9b-28kb9   /       Running             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 search

NAME                            CHART VERSION   APP VERSION     DESCRIPTION
stable/acs-engine-autoscaler                          Scales worker nodes within agent pools
stable/aerospike                           v3.       A Helm chart for Aerospike in Kubernetes
stable/anchore-engine                                 Anchore container analysis and policy evaluatio...
stable/artifactory                                    Universal Repository Manager supporting all maj...
stable/artifactory-ha                                 Universal Repository Manager supporting all maj...
stable/aws-cluster-autoscaler                              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参数


安装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.yaml

api:
  config:
    repos:
      - name: stable
        url: https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts
        source: https://github.com/kubernetes/charts/tree/master/stable
      - name: incubator
        url: https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator
        source: https://github.com/kubernetes/charts/tree/master/incubator
      - name: monocular
        url: https://kubernetes-helm.github.io/monocular
        source: https://github.com/kubernetes-helm/monocular/tree/master/charts

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

helm list

NAME                REVISION    UPDATED                     STATUS      CHART               NAMESPACE
amber-seal                     Mon Jul   ::     DEPLOYED    nginx-ingress- default
my-release                     Mon Jul   ::     DEPLOYED    spark-        default
nonplussed-panther             Mon Jul   ::     FAILED      nginx-ingress- default
turbulent-tuatara              Mon Jul   ::     DEPLOYED    monocular-     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集群中安装Helm及证书认证

    安装Kubernetes 测试环境使用kubeadm安装kubernetes v1.6.3版本, 安装过程略过. 为Helm创建客户端认证 客户端认证是为了能够使用helm命令行调用Helm的服务端T ...

  2. Kubernetes中的Helm和修改证书有效时间(八)

    一.Helm的介绍 1,概念 Helm 把 k8s 资源(比如 deployments.services 或 ingress 等)打包到一个 chart 中,而 chart 被保存到 chart 仓库 ...

  3. kubernetes 中安装 heapster 问题

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

  4. 简单在kubernetes中安装cadvisor

    cadvisor用于分析docker资源占用情况及性能的工具 安装命令: docker run --volume=/:/rootfs:ro --volume=/: --detach=true --na ...

  5. 2.安装Helm

    作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-06-25 13:54:15 星期二 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...

  6. openshift 4.3中安装helm3并通过helm方式部署应用

    openshift 4.3中安装helm3并通过helm方式部署应用 简介 Helm是一个命令行界面(CLI)工具,可简化将应用程序和服务部署到OpenShift Container Platform ...

  7. Helm, 在Kubernetes中部署应用的利器

    一.背景 Kubernetes(k8s)是一个基于容器技术的分布式架构领先方案.它在Docker技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提高了大规模容器 ...

  8. Kubernetes 中的渐进式交付:蓝绿部署和金丝雀部署

    渐进式交付是持续交付的下一步, 它将新版本部署到用户的一个子集,并在将其滚动到全部用户之前对其正确性和性能进行评估, 如果不匹配某些关键指标,则进行回滚. 这里有一些有趣的项目,使得渐进式交付在 Ku ...

  9. 安装Helm

    一:1.下载helm-v2.10.0-linux-amd64.tar.gz 地址:https://github.com/kubernetes/helm/releases2,解压缩 tar -zxvf ...

随机推荐

  1. c语言中sprintf()函数中的%使用

    #include <stdio.h> #include <string.h> int main() { ] = {}; ] = {}; ] = {}; /*打印2个%*/ st ...

  2. 一图了解DLL和SYS的区别

    The following diagram shows the device node, kernel-mode device stack, and the user-mode device stac ...

  3. D3DFVF_XYZ和D3DFVF_XYZRHW的区别

    D3DFVF_XYZ和D3DFVF_XYZRHW的区别是:1.D3DXYZ默认的坐标系统用户区中心是 (0,0) 而rhw的左上角是 (0,0)2.D3DXYZ默认的非光照的,而RHW默认就是高洛夫的 ...

  4. Raspberry Pi 4B 使用OpenCV访问摄像头picamera模块

    目录 1.OpenCV安装 (1)安装依赖 (2)下载OpenCV源码 (3)安装pip (4)安装Python虚拟机 (5)编译OpenCV (6)验证安装 2.使用OpenCV和Python控制摄 ...

  5. Raspberry Pi 摄像头模块入门

    目录 一.摄像头模块安装 二.使用命令控制摄像头 三.使用Python程序控制摄像头 四.基于vlc的Raspberry Pi摄像头实时监控 参考资料 Raspberry Pi提供了摄像头模块的接口, ...

  6. Linux 文件存在程序找不到文件

    1. 编码格式 程序运行时的编码格式和传输到程序中参数的编码格式是否一致,可以在程序中打印日志进行验证: 2. 转义符 文件路径中存在转义符 3. 运行程序的用户身份 不同用户运行程序也可能导致编码格 ...

  7. DSSM算法-计算文本相似度

    转载请注明出处: http://blog.csdn.net/u013074302/article/details/76422551 导语 在NLP领域,语义相似度的计算一直是个难题:搜索场景下quer ...

  8. ccf 201803-3 URL映射(python)

    使用正则表达式 import re import collections n, m = list(map(int, input().split())) arr = ['']*(m+n) for i i ...

  9. Gokit微服务-服务链路追踪

    https://mp.weixin.qq.com/s/gjKOy4SDpsjUXDC3Q1YdFw Gokit微服务-服务链路追踪 原创: 兮一昂吧 兮一昂吧 2月28日

  10. x86架构64位模式下的寄存器列表

    在此列出x86架构处理器在64位模式下的可用寄存器列表,方便查阅- 这里要注意的是,在64位模式下,所有通用寄存器都能访问第8位部分,低16位部分以及低32位部分. 以下是64位模式下AMD64 AB ...