Kubernetes 中安装 Helm

Kubernetes 专栏收录该内容
12 篇文章 1 订阅

Kubernetes 中安装 Helm

Helm 是构建于 Kubernetes 之上的包管理器,可以理解为 yum,homebrew 或者 pip,用于简化包分发,安装,版本管理等操作流程

基本概念

  • Chart

chart 就是 Helm 所管理的包,包含着一个应用要部署至 Kubernetes 上所必须的所有资源

  • Release

Release 就是 chart 在 Kubernetes 上部署后的实例,chart 每次部署都会产生一次 Release

  • Repository

存储chart 的仓库,初始化 Helm 时会添加两个仓库,一个是 stable 仓库,地址是https://kubernetes-charts.storage.googleapis.com/ ,另一个则是 local 仓库,地址是 http://127.0.0.1:8879/charts

  • Config
    Config 用于部署 chart 时自定义配置,在部署的时候,会将 Config 和 chart 进行合并,共同构成将部署的应用

安装

Helm 是一个 C/S 架构,分为客户端helm 和服务端Tiller

客户端

  • Mac
brew install kubernetes-helm
  • Ubuntu
sudo snap install helm --classic

服务端

服务端安装要求 $HOME/.kube/config配置正确且有kubectl操作权限

  • 创建账户

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
  • 安装
helm init --service-account tiller

这种方式默认会使用 gcr.io/kubernetes-helm/tiller,可以通过指定镜像的方式初始化

helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.11.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts --service-account tiller
Creating /root/.helm
Creating /root/.helm/repository
Creating /root/.helm/repository/cache
Creating /root/.helm/repository/local
Creating /root/.helm/plugins
Creating /root/.helm/starters
Creating /root/.helm/cache/archive
Creating /root/.helm/repository/repositories.yaml
Adding stable repo with URL: https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
Adding local repo with URL: http://127.0.0.1:8879/charts
$HELM_HOME has been configured at /root/.helm.

Tiller (the Helm server-side component) has been upgraded to the current version.
  • 查看版本
helm version
Client: &version.Version{SemVer:"v2.11.0", GitCommit:"79d07943b03aea2b76c12644b4b54733bc5958d6", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}
  • 查看 deploy
kubectl -n kube-system get deploy tiller-deploy
NAME            READY   UP-TO-DATE   AVAILABLE   AGE
tiller-deploy   1/1     1            1           91s

工作原理

helm 通过 gRPC 将 chart 发送至 Tiller,Tiller 则通过内置的 Kubernetes 客户端与Kubernetes 的API Server 进行交流,将 chart 进行部署,并生成 Release 用于管理

kubectl get svc -o wide -n kube-system

NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)
tiller-deploy   ClusterIP   10.107.157.104   <none>        44134/TCP                24h    app=helm,name=tiller

Tiller 默认采用 ClusterIP 类型的 Service 进行部署,但是 ClusterIP 类型的 Service 仅限于集群内访问,所以 Helm 通过 socat 的端口转发,进而实现本地与 Tiller 的通信

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页

打赏

呜呜呜啦啦啦

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值