k8s上安装并初始化Helm。minikube
helm简介
Helm 可以理解为 Kubernetes 的包管理工具,可以方便地发现、共 享和使用为Kubernetes构建的应用。
Helm 采用客户端/服务器架构,有如下组件组成:
Helm CLI 是 Helm 客户端,可以在本地执行
Tiller 是服务器端组件,在 Kubernetes 群集上运行,并管理 Kubernetes 应用程序的生命周期
Repository 是 Chart 仓库,Helm客户端通过HTTP协议来访问仓库中Chart的索引文件和压缩包。
1.Helm的三个基本概念
Chart:Helm应用(package),包括该应用的所有Kubernetes manifest模版,类似于YUM RPM或Apt dpkg文件
Repository:Helm package存储仓库
Release:chart的部署实例,每个chart可以部署一个或多个release
2.Helm工作原理
Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。Helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。
Helm包括两个部分,helm客户端和tiller服务端。
3.helm客户端
helm客户端是一个命令行工具,负责管理charts、reprepository和release。它通过gPRC API(使用kubectl port-forward将tiller的端口映射到本地,然后再通过映射后的端口跟tiller通信)向tiller发送请求,并由tiller来管理对应的Kubernetes资源。
4.tiller服务端
tiller接收来自helm客户端的请求,并把相关资源的操作发送到Kubernetes,负责管理(安装、查询、升级或删除等)和跟踪Kubernetes资源。为了方便管理,tiller把release的相关信息保存在kubernetes的ConfigMap中。
tiller对外暴露gRPC API,供helm客户端调用。
安装
我们需要安装 Helm 客户端到本地,同时安装服务端 Tiller 到 Kubernetes 中
这里使用minikube在本地模拟的k8s架构,minikube搭建k8s测试环境方法参考:https://blog.csdn.net/luanpeng825485697/article/details/80862581
并且要启动k8s的架构才能使用helm
1 |
|
先安装依赖
1 |
|
1、客户端安装:
下载相应的版本:https://github.com/kubernetes/helm/releases
这里我下载的是helm-v2.9.1-linux-amd64.tar.gz
解压 (tar -zxvf helm-v2.9.1-linux-amd64.tar.gz)
把helm执行文件放置在: (mv linux-amd64/helm /usr/local/bin/helm)
2、服务器端安装:
初始化并验证 Helm,这样就会自动安装服务器端Tiller。
注意:由于国内网络的问题,在安装 Tiller 的时候,需要下载镜像 gcr.io/kubernetes-helm/tiller:v2.9.1,很有可能会安装失败。所以我们这里使用阿里镜像来安装Tiller。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
稍等一会,你就会发现服务端 Tiller 已经安装到我们的 Minikube 集群中了,并且作为Kubernetes Pod 服务运行在 kube-system 的 namespace 中
1 2 3 4 5 6 7 8 9 |
|
如果 Tiller 安装失败,通过 helm version 命令会提示连接不到 Tiller。
注意:在安装中有时候你可能需要重启一个命令窗口来查询,或者稍等几秒钟才能正常运行。我这边helm version打印三次才能正常启动,等了5秒钟。
因为我这里使用的是minikube模拟的单机k8s环境,如果是分布式,需要在k8s的节点node机器上安装socat
1 |
|
如果需要删除服务端,可以使用下面的命令
1 2 |
|
1 2 |
|
Helm 基础操作
官方chart仓库由Kubernetes Charts维护,若要查看在存储库中可用的所有 Helm charts,请键入以下命令:
1 2 |
|
若要更新charts列表以获取最新版本,请键入:
1 |
|
若要查看在群集上安装的Charts列表,请键入:
1 |
|
删除releases
1 |
|
恢复之前的版本
1 |
|
或者
1 |
|
下载charts到本地
1 2 3 |
|
安装charts应用(spark)到k8s。
1 2 3 4 5 |
|
安装了spark到k8s中,k8s会安装5个容器。可以通过kubectl get pods查询,如下,1个msater,3个worker,1个zepperlin。
1 2 3 4 5 6 7 |
|
私有chart仓库
我们本地开发charts发布出去。这里就不讲如何开发,我们可以先去下载别人开发的应用。
比如https://github.com/kubernetes/charts/tree/master/stable中任何一个文件夹,都是一个应用。
Chart仓库结构
一个chart仓库由一个chart包与index.yaml文件组成,index.yaml记录了chart仓库中全部chart的索引,一个本地chart仓库的布局例子如下:
mycharts
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── ingress.yaml
│ ├── NOTES.txt
│ └── service.yaml
└── values.yaml
本文转自开源中国-k8s上安装并初始化Helm。minikube

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
通过kubeadm在Ubuntu1604下构建k8s高可用集群
本文参考了https://github.com/cookeem/kubeadm-ha,https://kairen.github.io/2018/07/17/kubernetes/deploy/kubeadm-v1.11-ha/,以及 https://jamesdeng.github.io/2018/08/21/k8s-1.11-%E9%98%BF%E9%87%8C%E4%BA%91%E5%AE%89%E8%A3%85.html,特别是第三个方案,解决了我在阿里云部署K8s高可用集群的大问题。 本地环境基于Haproxy+Keepalived可以轻松实现k8s的HA,但是在阿里云环境中,由于ECS不支持Keepalived,且阿里云内网的SLB,不支持后端ECS实例既作为Real Server又作为客户端向所在的负载均衡实例发送请求。因为返回的数据包只在云服务器内部转发,不经过负载均衡,在后端ECS实例上去访问负载均衡的服务地址是不通的。所以这里采用的是另起两台ECS部署Haproxy,并 设置内网SLB的后端为这两台ECS,这里通过docker运行haproxy容器,结合/etc/h...
- 下一篇
Kubernetes(k8s)如何使用kube-dns实现服务发现
大纲: Kubernetes中如何发现 服务 如何发现Pod提供的服务 如何使用Service发现服务 如何使用kube-dns发现服务 kube-dns原理 组成 域名格式 配置 注:本次分享内容基于Kubernetes 1.2版本! 下面从一个简单的例子开始讲解。 1、Kubernetes中如何发现服务 ◆ 发现Pod提供的服务 首先使用nginx-deployment.yaml文件创建一个Nginx Deployment,文件内容如图所示: 首先创建两个运行Nginx服务的Pod: 使用kubectl create -f nginx-deployment.yaml指令创建,这样便可以得到两个运行nginx服务的Pod。待Pod运行之后查看一下它们的IP,并在k8s集群内通过podIP和containerPort来访问Nginx服务: 获取Pod IP: 在集群内访问Nginx服务: 看到这里相信很多人会有以下疑问: 每次收到获取podIP太扯了,总不能每次都要手动改程序或者配置才能访问服务吧,要怎么提前知道podIP呢? Pod在运行中可能会重建,IP变了怎么解? 如何在多个Po...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16