作者

微信:tangy8080
电子邮箱:914661180@qq.com
更新时间:2019-06-25 13:54:15 星期二

欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程中的编写的文章
如您在阅读过程中发现文章错误,可添加我的微信 tangy8080 进行反馈.感谢您的支持。
f73510ad4785a7c07d5360fca05afe47?showdoc=.jpg

文章主题

介绍如何在k8s集群中安装helm

前置条件

您已经构建好了一个k8s集群

正文

helm是一个在k8s平台上的部署管理工具,简单来说您可以把它认为像是360软件管家,centos上的yum 一样的用途.它可以方便的安装,升级,卸载 k8s中程序

如果您经常在k8s中部署程序,那么可能面临以下尴尬:

  • 安装一个程序,除了程序本身之外,往往还需要建立存储卷,建立凭证,建立服务,建立Ingress等等,工作比较繁琐

  • 如果现在要卸载一个程序,往往也得删除存储卷,删除服务,删除Ingress等工作
  • 如果应用配置有变化,可能需要重新部署

helm可以解决上面的问题,比如您需要部署es,只需要下面一条命令(在实际部署时,可能需要更改部署参数,这里仅做实例说明)

helm install --name elasticsearch --set image.tag=6.7.0, client.replicas=3,cluster.name=kubernetes,data.persistence.storageClass=nfs-client,master.persistence.storageClass=nfs-client stable/elasticsearch

有关更多详细资料您可以参阅:https://helm.sh/
现在在github中也托管了很多支持使用helm来部署的软件包:https://github.com/helm/charts

helm的工作方式

helmctl >(控制)> k8s集群中的tiller 由tiller完成相关的控制操作
db4cfa180700c2600acae82a0bb7ef86?showdoc=.jpg

安装依赖项目
#在每个节点上安装
yum install -y socat
  • 不安装可能会报错:uid : unable to do port forwarding: socat not found.
安装Helm命令行工具
cd /usr/local/src
wget https://get.helm.sh/helm-v2.14.1-linux-amd64.tar.gz
tar -zxvf helm-v*-linux-amd64.tgz
mv linux-amd64/helm /usr/local/bin/helm
#测试命令行是否可以使用
helm help
在K8s集群中部署tiller
创建一个ServiceAccount

由于tiller需要在集群中执行高级别权限的操作(创建,删除全部资源),所以我们为其绑定到cluster-admin角色
更多资料,您可参阅:https://helm.sh/docs/using_helm/#role-based-access-control

以下操作请在kubectl命令行工具下,或者dashboard下创建

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
执行部署tiller

以下操作请在安装了helm的机器上执行

helm init --service-account tiller --history-max 200

如果一切成功,您将在kube-system名称空间下看到部署:tiller-deploy

解决repo不能访问的问题

helm 的仓库配置在repositories.yaml文件中
7434f6ac75358965795938ab10e283cc?showdoc=.jpg

在安装程序时helm需要在仓库中搜索程序包,但默认的仓库由于一些原因可能无法访问,我们需要更换仓库地址

helm repo remove stable
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
helm repo list

805c89f4a73b51fa86067eee53eb9615?showdoc=.jpg
如图所示,我这里已经将stable的仓库地址更改到了微软提供的仓库

引用链接

https://helm.sh/docs/using_helm/#role-based-access-control
https://github.com/googlehosts/hosts/blob/master/hosts-files/hosts

转载于:https://www.cnblogs.com/gytangyao/p/11407200.html

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐