我的编程空间,编程开发者的网络收藏夹
学习永远不晚

docker中如何使用helm

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

docker中如何使用helm

这篇文章将为大家详细讲解有关docker中如何使用helm,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

    在k8s中,我们对无状态应用如nginx、myapp,我们可以使用deployment控制器进行伸缩非常容易。

    对于有状态应用比如tomcat、redis、etcd单一实例应用,我们使用deployment限制它只有一个实例,其实也是没有任何问题的。

    但是,对于有状态应用的多实例,比如redis主从,就不那么容易了。

    helm是k8s的另外一个项目,相当于linux的yum。

    我们知道,在yum 仓库中,yum不光要解决包之间的依赖关系,还要提供具体的程序包。但是helm仓库里面只有配置清单文件,而没有镜像,镜像还是由镜像仓库来提供,比如hub.docker.com、私有仓库等。

    也就是说,helm提供了一个应用所需要的所有清单文件。比如对于一个nginx,我们需要一个deployment的清单文件、一个service的清单文件、一个hpa的清单文件。我们把这三个文件打包到一起,就是一个应用程序的程序包,我们称之为Chart。

    一般来说,Chart是一个helm程序包,其实质只是一个模板,我们可以对这个模板进行赋值(value),而形成我们自定义的清单文件,也就实现我们生产个性化的需求。这样的仓库叫Chart仓库(其实就是一个https/http服务器)。

    Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。

    helm是工作在k8s集群之外的。helm不直接操作apiserver,而是和Tiller交互。Tlller再和apiserver交互,最后由Apiserver把chart使用config赋值(值文件),最后部署成为release。

docker中如何使用helm

    在helm工作中,helm先去检查chart是否存在,存在就把chart下载到helm本机当前用户的家目录下。然后helm把chart交给tiller,tiller再和api server交互。api server一旦把chart部署在k8s集群上,就不再叫chart了,而叫release。

    所以,一个chart赋值不同,完全可以部署出多个release出来的,所以我们可以把chart看做是一个安装包的模板。

    如果发现chart更新了,helm就自动滚动更新,而且helm还支持一键回滚的操作。

安装helm服务器

    helm是安装在k8s集群之外的服务器上的。

    可以到如下链接下载helm的安装包:

https://github.com/helm/helm/releases

    docker中如何使用helm

    下载下来后,就是个helm命令,可以直接用:

[root@master linux-amd64]# mv helm /usr/bin/
[root@master linux-amd64]# helm -hThe Kubernetes package managerTo begin working with Helm, run the 'helm init' command:$ helm initThis will install Tiller to your running Kubernetes cluster.It will also set up any necessary local configuration.Common actions from this point include:- helm search:    search for charts- helm fetch:     download a chart to your local directory to view- helm install:   upload the chart to Kubernetes- helm list:      list releases of chartsEnvironment:  $HELM_HOME          set an alternative location for Helm files. By default, these are stored in ~/.helm  $HELM_HOST          set an alternative Tiller host. The format is host:port  $HELM_NO_PLUGINS    disable plugins. Set HELM_NO_PLUGINS=1 to disable plugins.  $TILLER_NAMESPACE   set an alternative Tiller namespace (default "kube-system")  $KUBECONFIG         set an alternative Kubernetes configuration file (default "~/.kube/config")

    我们看到helm部署好了,就是这么简单粗暴。

配置rbac

    rbac配置文件样例:https://github.com/helm/helm/blob/master/docs/rbac.md

[root@master helm]# cat tiller-rbac.yaml apiVersion: v1kind: ServiceAccountmetadata:  name: tiller  namespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata:  name: tillerroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: cluster-adminsubjects:  - kind: ServiceAccount    name: tiller    namespace: kube-system
[root@master helm]# kubectl apply -f tiller-rbac.yaml serviceaccount/tiller createdclusterrolebinding.rbac.authorization.k8s.io/tiller created
[root@master helm]# kubectl get sa  -n kube-system |grep tillertiller                               1         21m

 部署Tiller

[root@master helm]# export NO_PROXY='172.16.0.0/16,127.0.0.0/0' #做过linux代理的可以加这个,不是可以不加这个环境变量
[root@master helm]#  helm init --service-account tillerCreating /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-charts.storage.googleapis.com 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 installed into your Kubernetes Cluster.Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installationHappy Helming!

    由于 Helm 默认会去 storage.googleapis.com 拉取镜像,如果你当前执行的机器不能访问该域名的话可以使用以下命令来安装:

[root@master helm]# helm init --upgrade --tiller-image registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

    看到tiller 的pod已经运行起来了:

[root@master helm]# kubectl get pods -n kube-system -o wide |grep tillertiller-deploy-759cb9df9-t6b2l           1/1       Running   0          18m       10.244.2.89    node2

    看到helm可以工作,并能和k8s集群连接起来了。

[root@master ~]# helm version

Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

使用helm

     1、更改helm仓库源

    helm默认使用的helm源地址是https://kubernetes-charts.storage.googleapis.com 但是由于中国大陆不可描述的原因,需要替换为阿里的helm源。更改方法如下:

[root@master ~]# helm repo remove stable "stable" has been removed from your repositories
[root@master ~]# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts"stable" has been added to your repositories

    2、查看本地可用helm源

[root@master ~]# helm repo listNAME  URL                                                   local http://127.0.0.1:8879/charts                          stable  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

    3、更新helm仓库

[root@master ~]# helm repo updateHang tight while we grab the latest from your chart repositories......Skip local chart repository...Successfully got an update from the "stable" chart repositoryUpdate Complete. ⎈ Happy Helming!⎈

     3.在仓库中搜索

[root@master ~]# helm search  #列出helm仓库中所有可用的应用
[root@master ~]# helm search mysql #过滤操作NAME                         CHART VERSIONAPP VERSIONDESCRIPTION                                       stable/mysql                 0.3.5                   Fast, reliable, scalable, and easy to use open-...stable/percona               0.3.0                   free, fully compatible, enhanced, open source d...stable/percona-xtradb-cluster0.0.2        5.7.19     free, fully compatible, enhanced, open source d...stable/gcloud-sqlproxy       0.2.3                   Google Cloud SQL Proxy                            stable/mariadb               2.1.6        10.1.31    Fast, reliable, scalable, and easy to use open-...

    4、查看应用详细信息

[root@master ~]# helm inspect stable/mysql

   注意:上面的stable是仓库的名字,通过helm repo list显示的就是

     5、helm源

    https://hub.kubeapps.com/

    6、用helm安装软件包

[root@master ~]# helm install --name mysql1  stable/mysql

--name:指定release名字

    7、查看安装的软件包

[root@master ~]# helm listNAME  REVISIONUPDATED                 STATUS  CHART      NAMESPACEmysql11       Wed Oct 17 04:50:58 2018DEPLOYEDmysql-0.3.5default

    8、卸载安装的软件包

[root@master ~]# helm delete mysql1release "mysql1" deleted

    9、总结

    helm常用命令        release管理:            install            delete            upgrade/rollback            list            history 查看release历史版本            status 获取release状态信息        chart管理:            create  #创建一个chart,生成基础chart示例性文件,供我们修改用            fetch  下载仓库中的一个char到本地            get            inspect            package            verify

    10、helm把安装包会默认下载到当前用户的家目录下

    在我们install或者fetch时,都会把安装包下载到当前用户的家目录下:

[root@master archive]# ll /root/.helm/cache/archive/total 8-rw-r--r-- 1 root root 5536 Oct 17 04:50 mysql-0.3.5.tgz

    11、修改chart里面的values.yaml,实现个性化安装

[root@master archive]# cd /root/.helm/cache/archive[root@master archive]# lsmysql-0.3.5.tgz[root@master archive]# tar -xvf mysql-0.3.5.tgz
[root@master archive]# tree  mysqlmysql├── Chart.yaml #描述chart的├── README.md├── templates #模板文件│   ├── configmap.yaml│   ├── deployment.yaml│   ├── _helpers.tpl│   ├── NOTES.txt│   ├── pvc.yaml│   ├── secrets.yaml│   └── svc.yaml└── values.yaml  #自己修改这个文件的相应参数,可以自定义安装包的内容

      如果我们有个性化的安装需求,我们可以改values.yaml文件的内容,这个文件放在哪个位置都行,改完后:

[root@master mysql]# helm install --name mysql1 -f /root/values.yaml stable/mysql

  注:--name指定的是自定义release名字。   

    12、查看部署后的提示信息

    用helm部署完应用包后,会有很多提示信息,这些提示信息非常重要,但是如果你没有及时记录,有没有办法再查看呢。答案是有的,通过以下办法找到他们:

[root@master ~]# helm status mysql1LAST DEPLOYED: Wed Oct 17 04:50:58 2018NAMESPACE: defaultSTATUS: DEPLOYEDRESOURCES:==> v1/ServiceNAME          TYPE       CLUSTER-IP     EXTERNAL-IP  PORT(S)   AGEmysql1-mysql  ClusterIP  10.110.40.169  <none>       3306/TCP  15h==> v1beta1/DeploymentNAME          DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGEmysql1-mysql  1        1        1           0          15h==> v1/Pod(related)NAME                           READY  STATUS   RESTARTS  AGEmysql1-mysql-7b7f7ffcd5-vrs9d  0/1    Pending  0         15h==> v1/SecretNAME          TYPE    DATA  AGEmysql1-mysql  Opaque  2     15h==> v1/PersistentVolumeClaimNAME          STATUS   VOLUME  CAPACITY  ACCESS MODES  STORAGECLASS  AGEmysql1-mysql  Pending  15hNOTES:MySQL can be accessed via port 3306 on the following DNS name from within your cluster:mysql1-mysql.default.svc.cluster.localTo get your root password run:    MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace default mysql1-mysql -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo)To connect to your database:1. Run an Ubuntu pod that you can use as a client:    kubectl run -i --tty ubuntu --image=ubuntu:16.04 --restart=Never -- bash -il2. Install the mysql client:    $ apt-get update && apt-get install mysql-client -y3. Connect using the mysql cli, then provide your password:    $ mysql -h mysql1-mysql -pTo connect to your database directly from outside the K8s cluster:    MYSQL_HOST=127.0.0.1    MYSQL_PORT=3306    # Execute the following commands to route the connection:    export POD_NAME=$(kubectl get pods --namespace default -l "app=mysql1-mysql" -o jsonpath="{.items[0].metadata.name}")    kubectl port-forward $POD_NAME 3306:3306    mysql -h ${MYSQL_HOST} -P${MYSQL_PORT} -u root -p${MYSQL_ROOT_PASSWORD}

  创建可用自定义chart 

    1、下载仓库中的一个chart到本地

[root@master helm]# helm fetch stable/mysql[root@master helm]# lsmysql-0.3.5.tgz[root@master helm]#

    2、查看chart的目录结构

[root@master helm]# tree mysqlmysql├── Chart.yaml #做个整个chart初始化的,用来对外表明自己的元数据信息,记录当前chart的版本、名称、维护者、内部的维护信息等├── README.md #这是markdown格式的文本文件,这是个自述文件,说明这个chart是怎么开发等内容的介绍|-----requirements.yaml:当前chart是否依赖其他chart,这个文件是可选的。├── templates #所有的模板文件,这些文件是可以复用的,要熟悉go语言才好│   ├── configmap.yaml│   ├── deployment.yaml│   ├── _helpers.tpl│   ├── NOTES.txt #提供给用户的最终显示信息│   ├── pvc.yaml│   ├── secrets.yaml│   └── svc.yaml└── values.yaml  #主要为template模板中自定义属性设置默认值的|------ charts/ #里面放置的是当前chart所要依赖的其他chart,这个是可选的1 directory, 10 files

    可用查看chart官方手册,来了解每项目的含义:

https://docs.helm.sh/developing_charts/#charts

docker中如何使用helm

  3、用helm生成基础chart示例性文件

[root@master helm]# helm create myappCreating myapp

注:myapp是chart的名字

[root@master helm]# tree myapp/myapp/├── charts├── Chart.yaml├── templates│   ├── deployment.yaml│   ├── _helpers.tpl│   ├── ingress.yaml│   ├── NOTES.txt│   └── service.yaml└── values.yaml

   4、做语法检查

[root@master helm]# lsmyapp[root@master helm]# helm lint myapp==> Linting myapp[INFO] Chart.yaml: icon is recommended1 chart(s) linted, no failures

    5、打包

[root@master helm]# lsmyapp  [root@master helm]# helm package myapp/Successfully packaged chart and saved it to: /root/helm/myapp-0.1.0.tgz
  [root@master helm]# lsmyapp  myapp-0.1.0.tgz

    看到把myapp打包成了myapp-0.1.0.tgz

    6、启动8879仓库的服务

[root@master helm]# helm repo listNAME  URL                                                   local http://127.0.0.1:8879/charts                          stablehttps://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
[root@master helm]# helm serveRegenerating index. This may take a moment.Now serving you on 127.0.0.1:8879

  7、查看local仓库里面是否有我们创创建的chart包

[root@master ~]# helm search myappNAME       CHART VERSIONAPP VERSIONDESCRIPTION                local/myapp0.1.0        1.0        A Helm chart for Kubernetes

  8、部署我们自定义的chart

[root@master ~]# helm install --name myapp1 local/myapp

  9、删除我们部署的chart

[root@master ~]# helm delete --purge myapp1release "myapp1" deleted

关于“docker中如何使用helm”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

docker中如何使用helm

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

docker中如何使用helm

这篇文章将为大家详细讲解有关docker中如何使用helm,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 在k8s中,我们对无状态应用如nginx、myapp,我们可以使用deployment控制器
2023-06-04

kubernetes中如何实现Helm

这篇文章主要介绍kubernetes中如何实现Helm,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一:简介在Kubernetes上进行容器化部署并非易事,通常需要先研究Docker镜像的运行需求,环境变量等内容,并
2023-06-04

Docker中 Swarm如何使用

这期内容当中小编将会给大家带来有关Docker中 Swarm如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Swarm本身就是“群”的意思,人群、蜂群。这里就是指计算机集群(cluster)在用Do
2023-06-15

Helm如何解决Kubernetes中部署应用的问题

这篇文章将为大家详细讲解有关Helm如何解决Kubernetes中部署应用的问题,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、背景Kubernetes(k8s)是一个基于容器技术的分布式
2023-06-04

Docker API如何在Golang中使用

Docker API如何在Golang中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。安装 SDK通过下面的命令就可以安装 SDK 了:go get github.com/
2023-06-14

如何在Ubuntu16.04中使用Docker Compose

本篇内容主要讲解“如何在Ubuntu16.04中使用Docker Compose”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何在Ubuntu16.04中使用Docker Compose”吧!
2023-06-28

Docker Hub如何使用

本文小编为大家详细介绍“Docker Hub如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Docker Hub如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Docker Hub是一个基于云的存储
2023-06-27

docker如何使用GPU

这篇文章将为大家详细讲解有关docker如何使用GPU,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。下载tf-gpu在docker hub里选择要下载的tf版本(注意选带GPU和py3的)https://
2023-06-25

docker中安装mysql后如何使用

要在Docker中安装并使用MySQL,您可以按照以下步骤操作:拉取MySQL镜像:在终端中运行以下命令来拉取MySQL官方镜像:docker pull mysql运行MySQL容器:运行以下命令来创建并运行一个MySQL容器:docker
docker中安装mysql后如何使用
2024-04-27

如何在docker中使用create命令

这篇文章将为大家详细讲解有关如何在docker中使用create命令,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.创建容器docker create -it --name myconta
2023-06-14

Docker中如何使用Compose部署ELK

这篇文章给大家介绍Docker中如何使用Compose部署ELK,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.1定义对于大规模的日志,需要集中化的管理。而ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使
2023-06-20

docker如何使用网桥

这篇文章主要介绍“docker如何使用网桥”,在日常操作中,相信很多人在docker如何使用网桥问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”docker如何使用网桥”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-06

在CentOS、Fedora系统中如何使用Docker

小编给大家分享一下在CentOS、Fedora系统中如何使用Docker,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、从docker官方yum源进行安装 1、
2023-06-10

helm 中的“if 和 (ne)”运算符如何工作?

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《helm 中的“if 和 (ne)”运算符如何工作?》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮
helm 中的“if 和 (ne)”运算符如何工作?
2024-04-05

如何使用Docker部署Node.js

这篇文章主要介绍“如何使用Docker部署Node.js”,在日常操作中,相信很多人在如何使用Docker部署Node.js问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Docker部署Node.js
2022-12-02

docker虚拟机中如何使用ssh连接

本篇内容介绍了“docker虚拟机中如何使用ssh连接”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、安装docker这里就不演示怎么安装
2023-06-27

docker search命令如何使用

本文小编为大家详细介绍“docker search命令如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“docker search命令如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、docker
2023-07-05

IDEA如何使用Docker插件

这篇文章主要介绍了IDEA如何使用Docker插件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。说明之前docker的学习,包括镜像拉取,容器创建等操作都需要自己手动敲命令来
2023-06-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录