k8s上安装并初始化Helm。minikube

简介: helm简介 Helm 可以理解为 Kubernetes 的包管理工具,可以方便地发现、共享和使用为Kubernetes构建的应用。 Helm 采用客户端/服务器架构,有如下组件组成: Helm CLI 是 Helm 客户端,可以在本地执行 Tiller 是服务器端组件,在 Kubernetes 群集上运行,并管理 Kubernetes 应用程序的生命周期 Repository 是 Chart 仓库,Helm客户端通过HTTP协议来访问仓库中Chart的索引文件和压缩包。

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

minikube start --registry-mirror=https://registry.docker-cn.com

先安装依赖

?

1

sudo apt-get install socat

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

$ helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

Creating /home/luanpeng/.helm

Creating /home/luanpeng/.helm/repository

Creating /home/luanpeng/.helm/repository/cache

Creating /home/luanpeng/.helm/repository/local

Creating /home/luanpeng/.helm/plugins

Creating /home/luanpeng/.helm/starters

Creating /home/luanpeng/.helm/cache/archive

Creating /home/luanpeng/.helm/repository/repositories.yaml

Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com

Adding local repo with URL: https://127.0.0.1:8879/charts

$HELM_HOME has been configured at /home/luanpeng/.helm.

Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.

Happy Helming!

稍等一会,你就会发现服务端 Tiller 已经安装到我们的 Minikube 集群中了,并且作为Kubernetes Pod 服务运行在 kube-system 的 namespace 中

?

1

2

3

4

5

6

7

8

9

$ helm version

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

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

$ kubectl get pods --all-namespaces

...

kube-system tiller-deploy-f9b8476d-q89lh 0/1 ImagePullBackOff 0 4m

如果 Tiller 安装失败,通过 helm version 命令会提示连接不到 Tiller。
注意:在安装中有时候你可能需要重启一个命令窗口来查询,或者稍等几秒钟才能正常运行。我这边helm version打印三次才能正常启动,等了5秒钟。

因为我这里使用的是minikube模拟的单机k8s环境,如果是分布式,需要在k8s的节点node机器上安装socat

?

1

sudo apt-get install socat

如果需要删除服务端,可以使用下面的命令

?

1

2

helm reset

Tiller (the helm server side component) has been uninstalled from your Kubernetes Cluster.

?

1

2

$helm reset 或 $helm reset -f(强制删除k8s集群上的pod.)

当要移除helm init创建的目录等数据时,执行helm reset --remove-helm-home

Helm 基础操作

官方chart仓库由Kubernetes Charts维护,若要查看在存储库中可用的所有 Helm charts,请键入以下命令:

?

1

2

helm search

通过阿里云镜像安装的服务器端可以看到已经安装了很多charts。这里面就有我们后面要使用的spark

若要更新charts列表以获取最新版本,请键入:

?

1

helm repo update

若要查看在群集上安装的Charts列表,请键入:

?

1

helm list

删除releases

?

1

helm delete chartsnames1

恢复之前的版本

?

1

helm history chartsname1

或者

?

1

helm rollback chartsname1 2

下载charts到本地

?

1

2

3

helm search chartsname1

helm fetch stable/chartsname1

ll # 查看是都有我们下载的charts

安装charts应用(spark)到k8s。

?

1

2

3

4

5

helm install --name my-release stable/spark

helm install --set name=mycharts ./mycharts/ #没试

helm upgrade --install mycharts . #没试

helm install --name my-release -f values.yaml stable/spark #没试

安装了spark到k8s中,k8s会安装5个容器。可以通过kubectl get pods查询,如下,1个msater,3个worker,1个zepperlin。

?

1

2

3

4

5

6

7

$ kubectl get pods

NAME READY STATUS RESTARTS AGE

my-release-master-985f9646c-s8ssv 0/1 ImagePullBackOff 0 40m

my-release-worker-66d87ffb8c-pg4cn 0/1 ImagePullBackOff 0 40m

my-release-worker-66d87ffb8c-s87tt 0/1 Pending 0 40m

my-release-worker-66d87ffb8c-wwsqb 0/1 ImagePullBackOff 0 40m

my-release-zeppelin-5b996bbf6c-dwg8h 1/1 Running 0 40m

私有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

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
Kubernetes 数据安全/隐私保护 Docker
|
2月前
|
运维
计算巢如何使用fluxcd在ack部署helm chart
为支持helm服务运维管理功能,现在改用fluxcd的方式进行helm chart部署,这里计算巢对fluxcd进行部署helm chart的过程进行了封装,封装成了ROS公共模块MODULE::ACS::ComputeNest::FluxOciHelmDeploy,下面将主要介绍下怎么使用这个模块在计算巢中进行Helm Chart的部署。
36 3
|
2月前
|
存储 Kubernetes 容器
百度搜索:蓝易云【Kubernetes使用helm部署NFS Provisioner】
现在,你已经成功使用Helm部署了NFS Provisioner,并且可以在Kubernetes中创建使用NFS存储的PersistentVolumeClaim。
44 10
|
12天前
|
Kubernetes Linux 网络安全
kubeadm安装k8s
该文档提供了一套在CentOS 7.6上安装Docker和Kubernetes(kubeadm)的详细步骤,包括安装系统必备软件、关闭防火墙和SELinux、禁用swap、开启IP转发、设置内核参数、配置Docker源和加速器、安装指定版本Docker、启动Docker、设置kubelet开机启动、安装kubelet、kubeadm、kubectl、下载和配置Kubernetes镜像、初始化kubeadm、创建kubeconfig文件、获取节点加入集群命令、下载Calico YAML文件以及安装Calico。这些步骤不仅适用于v1.19.14,也适用于更高版本。
67 1
|
29天前
|
Kubernetes 测试技术 API
ChaosBlade常见问题之安装K8S探针心跳检测失败如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
19 0
|
1月前
|
存储 Kubernetes 分布式数据库
利用Helm在K8S上部署 PolarDB-X 集群(详细步骤--亲测!!!)
利用Helm在K8S上部署 PolarDB-X 集群(详细步骤--亲测!!!)
91 0
|
1月前
|
Kubernetes 应用服务中间件 nginx
Kubernetes服务网络Ingress网络模型分析、安装和高级用法
Kubernetes服务网络Ingress网络模型分析、安装和高级用法
36 5
|
1月前
|
存储 Kubernetes 监控
KubeSphere平台安装系列之一【Kubernetes上安装KubeSphere(亲测--实操完整版)】(1/3)
KubeSphere平台安装系列之一【Kubernetes上安装KubeSphere(亲测--实操完整版)】(1/3)
40 0
|
1月前
|
存储 Kubernetes 监控
K8S集群上安装KubeSphere的详细过程
K8S集群上安装KubeSphere的详细过程
29 0
|
1月前
|
Kubernetes Linux Docker
深度解析:Kubernetes 1.28.2集群安装过程中的关键步骤
本文旨在为读者提供一份详尽的Kubernetes 1.28.2集群安装指南,帮助您从零开始构建稳定、高效的Kubernetes集群。我们将从环境准备、软件安装、集群初始化到节点添加等各个环节进行逐步讲解,确保您能够顺利完成集群的搭建。

推荐镜像

更多