首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >「走进k8s」Kubernetes1.15.1的Helm安装使用(37)

「走进k8s」Kubernetes1.15.1的Helm安装使用(37)

作者头像
IT架构圈
发布于 2019-09-17 06:15:27
发布于 2019-09-17 06:15:27
1.5K00
代码可运行
举报
文章被收录于专栏:IT架构圈IT架构圈
运行总次数:0
代码可运行

使用过Ubuntu下的ap-get或者CentOS下的yum, 这两者都是Linux系统下的包管理工具。采用apt-get/yum,应用开发者可以管理应用包之间的依赖关系,发布应用;用户则可以以简单的方式查找、安装、升级、卸载应用程序。Kubernetes 安装deployment和pod,service,都需要查看api了解其中的yaml的语法结构,这样太复杂了,为了简化这个流程。

(一)Helm 介绍
  • ① 官网

https://helm.sh/

  • ② 介绍

Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。Helm 本身的处理逻辑很简单,其自身价值并不大,而有价值的是 Helm 的生态圈和 Helm 官方所提供的众多包含有最佳实践的 chart 包。 Helm 本身的处理逻辑很简单,其自身价值并不大,而有价值的是 Helm 的生态圈和 Helm 官方所提供的众多包含有最佳实践的 chart 包。

  • ③ 组件

chart

一系列用于描述 k8s 资源相关文件的集合,是 Helm 用于打包 k8s 资源的方式。

release

一个 chart 被 Helm 运行后将会生成对应的一个 release。

TillerServer

Helm 的服务端,部署在 k8s 集群内,主要管理 release 相关的存储和与 k8s 的交互。

helm

Helm 的客服端,通过 gRPC 协议与 TillerServer 进行交互,主要提供了增删查改 chart、release 和 repository 相关的功能。

config

包含了应用发布配置信息

  • ④ 功能 1.创建新的 chart。2.chart 打包成 tgz 格式。3.上传 chart 到 chart 仓库或从仓库中下载 chart。4.在Kubernetes集群中安装或卸载 chart。5.管理用Helm安装的 chart 的发布周期。
(二)Helm 安装
  • ① 一键安装客户端是省时省力

只要不报错一直等待就可以了,根据网速来的 可能比较慢,但是终究可以下载完毕

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh

chmod 700 get_helm.sh

 ./get_helm.sh
  • ② 安装依赖的yum socat
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo yum install -y socat
  • ③ 初始化helm

Helm 默认会去 storage.googleapis.com 拉取镜像,如果你当前执行的机器不能访问该域名的话可以使用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker search tiller

# 一会要用这个jessestuart/tiller
  • ④ 权限

因为helm部署的存在跨命名空间的,所以直接给他赋ClusterRole这个权限。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system

运行权限赋予

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl create -f helm-rbac.yaml

再次验证

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
helm version

发现pod下载失败,查看原因:gcr.io/kubernetes-helm/tiller:v2.14.3 无法拉取, 可能读者当你看到的时候tiller版本可能不是在v2.14.3,这个版本其实不用考虑。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl get pod --all-namespaces

kubectl describe pod tiller-deploy-75f6c87b87-vdw2c -n kube-system

修改kubectl edit deploy tiller-deploy -n kube-system

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl edit deploy tiller-deploy -n kube-system

# image: gcr.io/kubernetes-helm/tiller:v2.14.3   修改成图片上的jessestuart/tiller,上边docker search 的时候提到过。
  • ⑤ kubernetes里面的pod信息
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl get pod -n kube-system

创建了tiller的 ServceAccount 后还没完, Tiller 之前已经就部署成功了,而且是没有指定 ServiceAccount 的,所以我们需要给 Tiller 打上一个 ServiceAccount 的补丁

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

查看deploy的用户信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl describe deploy --namespace kube-system tiller-deploy
(三)Helm使用
  • ① 创建
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir helm

helm create hello-helm

tree
  • ② 文档地址

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

  • ③ 更改 value.yaml

将默认的 stable 更改为 1.7.9, Service 的类型也改成 NodePort

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vi ./hello-helm/values.yaml
  • ④ 安装刚修改后的helm
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
helm install ./hello-helm

查看helm的文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl get pods -o wide

kubectl get svc -o wide

修改成了NodePort可以直接访问 svc 查看到的端口 直接访问就可以访问nginx

  • ⑤ 查看release

create 2次导致的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
helm list
  • ⑥ 打包chart
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
helm package hello-helm
  • ⑦ 删除release

list中的都删除了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
helm delete intentional-ocelot

helm delete washed-panda

查看pod,已经没有了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl get pods

PS:安装helm,使用了很多种方式了,感觉这种是最稳的,分享给大家,这里就简单的介绍了helm的几个命令:创建,删除,查看,打包,更多的命令还是查看helm的官方文档吧,下次继续说说helm的基本使用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程坑太多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Spring | Bean自动装配详解
由于在手动配置xml过程中,常常发生字母缺漏和大小写等错误,而无法对其进行检查,使得开发效率降低。
啵啵鱼
2022/11/23
8410
Spring | Bean自动装配详解
spring框架应用系列一:annotation-config自动装配
本文系作者原创,转载请注明出处:http://www.cnblogs.com/further-further-further/p/7716678.html
用户7225427
2020/09/03
5630
spring框架应用系列一:annotation-config自动装配
【Spring实战】—— 8 自动装配
本篇介绍一下自动装配的知识,Spring为了简化配置文件的编写。采用自动装配方式,自动的装载需要的bean。 自动装配 有以下几种方式:   1 byName 通过id的名字与属性的名字进行判断,要保证Bean实例中属性名字与该装配的id名字相同。   2 byType 通过类型确定装配的bean,但是当存在多个类型符合的bean时,会报错。   3 contructor 在构造注入时,使用该装配方式,效果如同byType。   4 autodetect 自动装配,这个测试了,3.0.5版本不可用了
用户1154259
2018/01/17
5620
Spring之IOC自动装配
jdk1.5支持的注解,Spring2.5就支持注解了! The introduction of annotation-based configuration raised the question of whether this approach is "better"than XML.(基于注释的配置的引入引发了这样一个问题:这种方法是比XML“更好”。)
楠羽
2022/11/18
3880
Spring之IOC自动装配
Spring-04 Bean的自动装配
由于在手动配置xml过程中,常常发生字母缺漏和大小写等错误,而无法对其进行检查,使得开发效率降低。
张小驰出没
2021/04/15
6740
Spring-04  Bean的自动装配
Spring Bean 的装配方式以及Autowired与Resource的使用及区别
在Spring的使用中,如果要将一个bean实例化,可以通过配置文件,也可以通过在java代码里面的注解来实现,Spring能够根据自动协作这些bean之间的关系,这种自动协作的过程,也称之为自动装配。 自动装配模式有如下四种模式:
冬天里的懒猫
2021/09/08
7650
spring框架应用系列二:component-scan自动扫描注册装配
本文系作者原创,转载请注明出处:http://www.cnblogs.com/further-further-further/p/7717331.html
用户7225427
2020/09/03
9250
spring框架应用系列二:component-scan自动扫描注册装配
spring之自动装配的三种方式
springIOC容器可以自动装配Bean,需要做的仅仅是在<bean>中的autowire属性里指定自动装配的方式。
西西嘛呦
2020/08/26
4660
Spring 框架学习(七)---- bean自动装配、注解开发
自动装配就是给bean中的属性进行设置值进行注入,如果是引用类型的话,spring会在上下文中进行查找进行装配属性。
RAIN7
2022/06/30
4810
Spring 框架学习(七)---- bean自动装配、注解开发
Spring 学习笔记(五)—— Bean之间的关系、作用域、自动装配
  Spring提供了配置信息的继承机制,可以通过为<bean>元素指定parent值重用已有的<bean>元素的配置信息。
Rekent
2018/09/04
5430
Spring 学习笔记(五)—— Bean之间的关系、作用域、自动装配
【Spring】005-Bean的自动装配
②在java中显式配置(见【Spring】007-使用JavaConfig实现配置);
訾博ZiBo
2025/01/06
1450
【Spring】005-Bean的自动装配
Spring学习3:自动装配与注解开发
例子说明:创建一个User来控制一个Cat,使用Cat的shout方法。(一个人让自己的猫叫) 1.新建cat类
zstar
2022/06/14
2070
Spring学习3:自动装配与注解开发
Spring之IOC容器
spring core提供了IOC,DI,Bean配置装载创建的核心实现 核心概念: Beans、BeanFactory、BeanDefinitions、ApplicationContext
Java微观世界
2025/01/21
2690
Spring之IOC容器
[Spring]04_最小化Spring XML配置
静默虚空
2018/01/05
6610
Spring注解-@Autowired注解使用
首先要知道另一个东西,default-autowire,它是在xml文件中进行配置的,可以设置为byName、byType、constructor和autodetect;比如byName,不用显式的在bean中写出依赖的对象,它会自动的匹配其它bean中id名与本bean的set**相同的,并自动装载。 @Autowired是用在JavaBean中的注解,通过byType形式,用来给指定的字段或方法注入所需的外部资源。 两者的功能是一样的,就是能减少或者消除属性或构造器参数的设置,只是配置地方不一样而已。 autowire四种模式的区别
SerMs
2022/04/11
1.1K0
Spring注解-@Autowired注解使用
跟着柴毛毛学Spring(3)——简化Bean的配置
通过前面的学习,我们会感觉到对于一个有较多Bean的大项目,Spring的配置会比较复杂。那么接下来我们就介绍如何简化Spring的配置。 简化Spring的配置主要分为两类: 1. 自动装配 2. 自动扫描 下面就详细介绍这两种简化配置的方式。 自动装配 自动装配的种类 byName:根据属性的名字自动装配 byType:根据属性的类型自动装配 constructor:根据构造器的参数类型自动装配 autodetect:最佳自动装配。首先采用constructor自动装配,若没有发现与构造器相匹配
大闲人柴毛毛
2018/03/09
7980
第2章—装配Bean—自动化装配Bean
CD和CDPlayer,如果你不将CD放入(注入)到播放器中,那么CD播放器其实是没多大用处的,所以说,CD播放器是依赖于CD才能完成它的使命.
Dream城堡
2018/09/10
4190
Spring的自动装配
坏处:依赖不能明确管理,可能会有多个bean同时符合注入规则,没有清晰的依赖关系。
SerMs
2022/04/11
6560
Spring的自动装配
【Spring实战】—— 6 内部Bean
本篇文章讲解了Spring的通过内部Bean设置Bean的属性。   类似内部类,内部Bean与普通的Bean关联不同的是:   1 普通的Bean,在其他的Bean实例引用时,都引用同一个实例。   2 内部Bean,每次引用时都是新创建的实例。   鉴于上述的场景,内部Bean是一个很常用的编程模式。   下面先通过前文所述的表演者的例子,描述一下主要的类: package com.spring.test.setter; import com.spring.test.action1.Per
用户1154259
2018/01/17
6100
3. 装配 Bean
通过 ClassPathXmlApplicationContext 进行文件加载。
acc8226
2022/05/17
4600
3. 装配 Bean
相关推荐
Spring | Bean自动装配详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档