• k8s:Helm 工具安装


    目录

    一、Helm 概述

    1.1 helm 简介

    1.2  helm 架构

    1.3  helm 的重要概念

    1.4  helm 组件

    1.4.1 helm 客户端

    1.4.2 Tiller 服务器

    二、部署 Helm

    2.1 安装 helm 客户端

    2.2  安装 Tiller server(需要创建授权用户) 

    2.3  配置 helm 仓库 

    2.4  测试 helm 是否可以正常使用 

    一、Helm 概述

    1.1 helm 简介

    Kubernetes 中部署容器云的应用也是一项有挑战性的工作,Helm 就是为了简化在 Kubernetes 中安装部署容器云应用的一个客户端工具。通过 helm 能够帮助开发者定义、安装和升级 Kubernetes 中的容器云应用,同时也可以通过 helm 进行容器云应用的分享。在 Kubeapps Hub 中提供了包括 Redis、MySQL 和 Jenkins 等常见的应用,通过 helm 可以使用一条命令就能够将其部署安装在自己的 Kubernetes 集群中。

    Helm 是管理 Kubernetes 包的工具,Helm 能提供下面的能力:

    1. 创建新的 charts(图表)
    2. 将 charts 打包成 tgz 文件
    3. 与 chart 仓库交互
    4. 安装和卸载 Kubernetes 的应用
    5. 管理使用 Helm 安装的 charts 的生命周期

    1.2  helm 架构

     Helm 架构由 Helm 客户端、Tiller 服务器端和 Chart 仓库所组成;Tiller 部署在 Kubernetes 中,Helm 客户端从 Chart 仓库中获取 Chart 安装包,并将其安装部署到 Kubernetes 集群中。

    1.3  helm 的重要概念

    1. Charts:是创建 Kubernetes 应用实例的信息集合,也就是一个 helm 的程序包,它包含了运行一个 k8s 应用所有需要的镜像、依赖关系和资源定义等,必要时还会包含 Service 资源定义,它类似于 yum 的 rpm 文件
    2. Repository:Chart 仓库,用于集中存储和分发 Charts。
    3. Config:应用程序实例化安装时运行使用的配置信息
    4. Release:chart 的运行实例,包含特定的 config

    1.4  helm 组件

    在 Helm 中有两个主要的组件,即 Helm 客户端和 Tiller 服务器

    1.4.1 helm 客户端

    是一个供终端用户使用的命令行工具

    客户端负责如下的工作:

    • 本地 chart 开发
    • 管理仓库
    • 与 Tiller 服务器交互(发送需要被安装的 charts、请求关于发布版本的信息、请求更新或者卸载已安装的发布版本)

    1.4.2 Tiller 服务器

    Tiller 是 helm 的服务器端,一般运行于 kubernetes 集群之上,定义 tiller 的 ServiceAccount,并通过 ClusterRoleBinding 将其绑定至集群管理员角色 cluster-admin,从而使得它拥有集群级别所有的最高权限

    Tiller 服务器负责如下的工作:

    1. 监听来自于 Helm 客户端的请求
    2. 组合 chart 和配置来构建一个发布
    3. 在 Kubernetes 中安装,并跟踪后续的发布
    4. 通过与 Kubernetes 交互,更新或者 chart

    二、部署 Helm

    2.1 安装 helm 客户端

    1. #wget https://get.helm.sh/helm-v2.14.3-linux-amd64.tar.gz
    2. [root@master ~]# wget http://101.34.22.188/k8s/helm-v2.14.3-linux-amd64.tar.gz
    3. [root@master ~]# tar zxvf helm-v2.14.3-linux-amd64.tar.gz
    4. [root@master ~]# mv linux-amd64/helm /usr/local/bin/
    5. [root@master ~]# chmod +x /usr/local/bin/helm
    6. [root@master ~]# echo 'source <(helm completion bash)' >> /etc/profile
    7. [root@master ~]# . /etc/profile

    2.2  安装 Tiller server(需要创建授权用户) 

    1. #创建授权用户
    2. [root@master ~]# vim tiller-rbac.yaml
    3. apiVersion: v1
    4. kind: ServiceAccount
    5. metadata:
    6. name: tiller
    7. namespace: kube-system
    8. ---
    9. apiVersion: rbac.authorization.k8s.io/v1beta1
    10. kind: ClusterRoleBinding
    11. metadata:
    12. name: tiller
    13. roleRef:
    14. apiGroup: rbac.authorization.k8s.io
    15. kind: ClusterRole
    16. name: cluster-admin
    17. subjects:
    18. - kind: ServiceAccount
    19. name: tiller
    20. namespace: kube-system
    1. [root@master ~]# kubectl apply -f tiller-rbac.yaml
    2. [root@master ~]# helm init --service-account=tiller
    3. [root@master ~]# kubectl get pod -n kube-system | grep tiller
    4. [root@master ~]# kubectl edit pod tiller-deploy-8557598fbc-tvfsj -n kube-system
    5. //编辑 pod 的 yaml 文件,将其使用的镜像改为国内阿里云的,默认是 Google 的镜像,下载不下来
    6. //修改 spec 字段的 image 指定的镜像如下:
    7. image: gcr.io/kubernetes-helm/tiller:v2.14.3
    8. //修改如下:
    9. image: registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.3
    10. //修改后,保存退出即可,它会去自动下载新镜像(如果没有自动下载,就想办法吧,比如说在 tiller 容器所在的节点手动下载下来镜像,然后重启该节点的 kubelet,或重启该容器)
    11. [root@master ~]# kubectl get pod -n kube-system | grep tiller
    12. //只要保证 tiller 的 pod 正常运行即可
    13. tiller-deploy-8557598fbc-m986t 1/1 Running 0 7m54s

    2.3  配置 helm 仓库 

    1. [root@master ~]# helm repo list //查看其仓库信息
    2. NAME URL
    3. stable https://kubernetes-charts.storage.googleapis.com
    4. //如上,默认是 Google,在国外,速度特别慢
    5. local http://127.0.0.1:8879/charts
    6. //执行下面命令,更改为国内阿里云的仓库
    7. [root@master ~]# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    8. [root@master ~]# helm repo list //再次查看,可以发现更改生效了
    9. NAME URL
    10. stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    11. local http://127.0.0.1:8879/charts
    12. [root@master ~]# helm repo update //更新一下 helm 仓库
    13. [root@master ~]# helm version //查看 helm 版本信息,必须保证可以查看出来 client 和 server,才可正常使用 helm
    14. Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
    15. Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}

    2.4  测试 helm 是否可以正常使用 

    1. [root@master ~]# helm search mysql //搜索 MySQL
    2. //查看到的是 charts 包文件,查出来的版本是 helm 的 Charts 包的版本
    3. [root@master ~]# helm inspect stable/mysql //查看其详细信息
    4. [root@master ~]# helm fetch stable/mysql //下载搜索到的包到本地
    5. [root@master templates]# helm install stable/mysql //在线安装这个 MySQL
  • 相关阅读:
    上传到服务的jar包怎么使用docker运行部署
    Java深拷贝与浅拷贝
    [C++]11版本新特性1:initialize list、auto、decltype
    【JVM技术专题】Thread的stackSize与-Xss参数的区别「分析篇」
    Keepalived+Nginx实现网站的高可用架构
    详解使用SSH远程连接Ubuntu服务器系统
    11.数组的分类和定义
    快速上手Spring Boot整合,开发出优雅可靠的Web应用!
    如何使用 Python 开发企业文档管理应用程序 (教程含源码)
    Android - Context
  • 原文地址:https://blog.csdn.net/weixin_67470255/article/details/126258436