文章目录

目录

在没使用 Helm之前,向 K8S部署应用,我们要依次部署 deploymentsvc 等,步骤较繁琐。况且随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂, Helm通过打包的方式,支持发布的版本管理和控制,很大程度上简化了 K8S应用的部署和管理

一、Helm 简介

Helm本质就是让 K8S的应用管理( DeploymentService等 ) 可配置,能动态生成。通过动态生成 K8S资源清单文件( deployment.yamlservice.yaml)。然后调用 Kubectl自动执行 K8S资源部署。

Helm是官方提供的类似于 YUM的包管理器,是部署环境的流程封装。 Helm有两个重要的概念: chartrelease

  • chart是创建一个应用的信息集合,包括各种 Kubernetes对象的配置模板、参数定义、依赖关系、文档说明等。 chart是应用部署的自包含逻辑单元。可以将 chart想象成 aptyum中的软件安装包
  • releasechart的运行实例,代表了一个正在运行的应用。当 chart被安装到 Kubernetes集群,就生成一个 releasechart能够多次安装到同一个集群,每次安装都是一个 release

Helm包含两个组件: Helm客户端和 Tiller服务器,如下图所示:

Helm客户端负责 chartrelease的创建和管理以及和 Tiller的交互。 Tiller服务器运行在 K8S集群中,它会处理 Helm客户端的请求,与 Kubernetes API Server交互

二、Helm 部署

下载 helm客户端:

[root@master helm]

[root@master helm]

由于 api server开启了 RBAC访问控制,所以需要创建 tiller使用的 service account,并分配合适的角色给它,这样才能访问 api server,详细内容可以查看 helm文档中的 Role-based Access Control。这里简单起见直接分配 cluster- admin这个集群内置的 ClusterRole给它,创建 rbac-config.yaml文件:

[root@master helm]
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 [root@master helm] [root@worker1 ~] [root@master helm] [root@master helm]
tiller-deploy-6d47785b7c-jbdv7 1/1 Running 0 1h [root@master helm]
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}

三、Helm 自定义模板

[root@master helm]

[root@master hello-world]
name: hello-world
version: 1.0.0 [root@master templates] [root@master templates]
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: hello-world
spec:
replicas: 1
template:
metadata:
labels:
app: hello-world
spec:
containers:
- name: hello-world
image: hub.hc.com/library/myapp:v1
ports:
- containerPort: 80
protocol: TCP [root@master templates]
apiVersion: v1
kind: Service
metadata:
name: hello-world
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: hello-world [root@master hello-world] [root@master hello-world]
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
dunking-manta 2 Tue Aug 18 10:04:27 2020 DEPLOYED hello-world-1.0.0 default [root@master templates] [root@master templates] [root@master templates]
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
dunking-manta 2 Tue Aug 18 10:04:27 2020 DELETED hello-world-1.0.0 default [root@master templates]
REVISION UPDATED STATUS CHART DESCRIPTION
1 Tue Aug 18 09:49:45 2020 SUPERSEDED hello-world-1.0.0 Install complete
2 Tue Aug 18 10:04:27 2020 SUPERSEDED hello-world-1.0.0 Deletion complete [root@master templates] [root@master templates]

动态切换版本:

[root@master hello-world]
image:
repository: wangyanglinux/myapp
tag: 'v2'

[root@master ~]
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a> [root@master hello-world] [root@master ~]
Hello MyApp | Version: v2 | <a href="hostname.html">Pod Name</a> [root@master ~] [root@master ~]
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

Debug


[root@master ~]

四、使用Helm部署dashboard


[root@worker1 ~]
fbdfe08b001c: Loading layer 122.3MB/122.3MB
Loaded image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 [root@master Dashboard]
[root@master Dashboard]
[root@master Dashboard]
[root@master Dashboard]
NAME URL
local http://127.0.0.1:8879/charts
stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts [root@master Dashboard]
[root@master Dashboard]
[root@master kubernetes-dashboard]
image:
repository: k8s.gcr.io/kubernetes-dashboard-amd64
tag: v1.10.1
ingress:
enabled: true
hosts:
- k8s.frognew.com
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
tls:
- secretName: frognew-com-tls-secret
hosts:
- k8s.frognew.com
rbac:
clusterAdminRole: true [root@master kubernetes-dashboard]
> -n kubernetes-dashboard \
> --namespace kube-system \
> -f k8s-dashboard.yaml [root@master kubernetes-dashboard]
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard ClusterIP 10.105.124.175 <none> 443/TCP 3m39s [root@master kubernetes-dashboard] [root@master kubernetes-dashboard]
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard NodePort 10.105.124.175 <none> 443:30186/TCP 9m5s

五、使用dashboard部署应用

使用火狐浏览器访问 https://192.168.182.100:30186,选择令牌并输入下方查到的 token



查询 dashboard-token

[root@master kubernetes-dashboard]
kubernetes-dashboard-token-5lgp8 kubernetes.io/service-account-token 3 27m [root@master kubernetes-dashboard]

进入到 dashboard面板后,点击创建应用:



创建应用的参数如下,点击部署



容器部署成功:

微信搜一搜 : 全栈小刘 ,获取文章 pdf 版本

Helm 带你飞的更多相关文章

  1. 【算法系列学习三】[kuangbin带你飞]专题二 搜索进阶 之 A-Eight 反向bfs打表和康拓展开

    [kuangbin带你飞]专题二 搜索进阶 之 A-Eight 这是一道经典的八数码问题.首先,简单介绍一下八数码问题: 八数码问题也称为九宫问题.在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的 ...

  2. 华为CloudIDE免费公测,带你出坑带你飞

    你的代码仓库上线了吗?是不是有时候遇到这样的问题? 只想浏览一下代码,却发现线上浏览效果不佳,高亮显示什么的都没有.而在桌面端浏览要需要先同步代码,再用桌面端的IDE打开.尤其是使用git的时候,先要 ...

  3. ★10 个实用技巧,让Finder带你飞~

    10 个实用技巧,让 Finder 带你飞 Finder 是 Mac 电脑的系统程序,有的功能类似 Windows 的资源管理器.它是我们打开 Mac 首先见到的「笑脸」,有了它,我们可以组织和使用 ...

  4. ★10 个实用技巧,让Finder带你飞~

    10 个实用技巧,让 Finder 带你飞 Finder 是 Mac 电脑的系统程序,有的功能类似 Windows 的资源管理器.它是我们打开 Mac 首先见到的「笑脸」,有了它,我们可以组织和使用 ...

  5. KUANGBIN带你飞

    KUANGBIN带你飞 全专题整理 https://www.cnblogs.com/slzk/articles/7402292.html 专题一 简单搜索 POJ 1321 棋盘问题    //201 ...

  6. Tarjan 联通图 Kuangbin 带你飞 联通图题目及部分联通图题目

    Tarjan算法就不说了 想学看这 https://www.byvoid.com/blog/scc-tarjan/ https://www.byvoid.com/blog/biconnect/ 下面是 ...

  7. 「kuangbin带你飞」专题十四 数论基础

    layout: post title: 「kuangbin带你飞」专题十四 数论基础 author: "luowentaoaa" catalog: true tags: mathj ...

  8. 「kuangbin带你飞」专题二十 斜率DP

    layout: post title: 「kuangbin带你飞」专题二十 斜率DP author: "luowentaoaa" catalog: true tags: mathj ...

  9. 「kuangbin带你飞」专题二十二 区间DP

    layout: post title: 「kuangbin带你飞」专题二十二 区间DP author: "luowentaoaa" catalog: true tags: - ku ...

随机推荐

  1. CDR排钻教程-CorelDRAW服装设计中的排钻技术

    服装设计一直都是一个很火热的行业,也是一个比较高端的行业,随着时代的步伐,以前的人都是用手绘的方式来设计服装,现在不一样了,电脑可以说普及到了每一个家庭,让软件以更快的速度,更准确的数据来设计服装中的 ...

  2. MAC系统网页链接如何下载

    Folx 5 是一款简单易用.功能强大的Mac OS系统的下载管理器.Folx界面简洁,下载管理方便,支持网页链接下载.BT下载和YouTube下载,而且还可以设置计划任务.搜索BT种子以及添加Tra ...

  3. FLstudio 系列教程(六):如何安装FL studio

    FL Studio简称FL,全称:Fruity Loops Studio,因此国人习惯叫它"水果".目前版本是FL Studio20,它让你的计算机就像是全功能的录音室,大混音盘, ...

  4. mybatis 动态SQL 源码解析

    摘要 mybatis是个人最新喜欢的半自动ORM框架,它实现了SQL和业务逻辑的完美分割,今天我们来讨论一个问题,mybatis 是如何动态生成SQL SqlSessionManager sqlSes ...

  5. LeetCode周赛#204 题解

    1566. 重复至少 K 次且长度为 M 的模式 #模拟 题目链接 题意 给定正整数数组 arr,请你找出一个长度为 m 且在数组中至少重复 k 次的模式. 模式 是由一个或多个值组成的子数组(连续的 ...

  6. D. Circle Game 题解(对称博弈)

    题目链接 题目大意 t组数据(t<=100) 给你一个半径d和步数k,你最开始在原点(0,0)每次可以让x坐标增加k,或者y坐标增加k 两人轮流走,求谁最后不能走了,谁就输了,都是最优博弈 输的 ...

  7. Java基础教程——转换流

    转换流 通常,Window默认的编码方式是GBK,Java项目一般建议设为UTF-8编码.这时候读取文件可能出现乱码.事实上实际应用中编码格式不匹配的场景非常多. 转换流可以指定编码方式,用于解决乱码 ...

  8. 【鸿蒙开发板试用报告】用OLED板实现FlappyBird小游戏(中)

    小伙伴们久等了,在上一篇<[开发板试用报告]用OLED板实现FlappyBird小游戏(上)>中,我们本着拿来主义的原则,成功的让小鸟在OLED屏幕上自由飞翔起来,下面我们将加入按钮交互功 ...

  9. Mellanox 4036配置

    1.前言 内置factory-default 会重置所有参数到出厂设置. 内置reboot.拔电源就是重启. 外置reset就是重置芯片中数据,不会恢复到出厂设置. 2.感受下恢复出厂过程 4036- ...

  10. 对于Web开发最棒的22个Visual Studio Code插件

    翻译    原文作者:James Quick    原文地址:https://scotch.io/bar-talk/22-best-visual-studio-code-extensions-for- ...