kubernetes Helm
Helm产生原因
利用Kubernetes部署一个应用,需要Kubernetes原生资源文件如deployment、replicationcontroller、service或pod 等。而对于一个复杂的应用,会有很多类似上面的资源描述文件,如果有更新或回滚应用的需求,可能要修改和维护所涉及的大量资源文件,且由于缺少对发布过的应用版本管理和控制,使Kubernetes上的应用维护和更新等面临诸多的挑战,而Helm可以帮我们解决这些问题。
Helm架构
Helm基本架构如下:
Helm官方网页将Helm定义为“Kubernetes的软件包管理器”,但不止于此。Helm是用于管理在Kubernetes集群管理器中运行的应用程序的工具.Helm提供了一组用于管理应用程序的操作,例如:检查,安装,升级和删除。
Helm是包管理器(类似yum和apt),Charts 是包 (类似于debs和rpms)
在Kubernetes集群中运行和管理应用程序的最简单方法是使用Helm。Helm允许您执行管理应用程序的关键操作,如安装,升级或删除。如前所述,Helm由两部分组成:Helm(客户端)和Tiller(服务器)。按照以下步骤完成Helm和Tiller的安装。
安装
一、安装helm
直接下载Helm的二进制文件:
OSX
Linux的
Windows
解压缩helm
二进制文件并将其添加到PATH中,就可以了!
安装命令补全
helm completion bash >/etc/bash_completion.d/helm.sh
source /usr/share/bash-completion/bash_completion
二、安装Tiller
创建tiller用户,绑定超级权限,当然你也可以绑定其他角色
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: tiller
namespace: kube-system
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
创建服务账户
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
labels:
kubernetes.io/cluster-service: "true"
安装tiller
初始化配置的时候, Helm 会去 gcr.io 中拉取 tiller 的镜像, 而且会将 "https://kubernetes-charts.storage.googleapis.com" 做为 stable repository 地址 需要使用代理
helm init --upgrade --tiller-image=gcr.io/kubernetes-helm/tiller:v2.7.0
输出结果如下:
[root@node1 ~]# helm init --upgrade --tiller-image=gcr.io/kubernetes-helm/tiller:v2.7.0
Creating /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 upgraded to the current version.
Happy Helming!
修改Tiller的服务账户
kubectl patch deployment tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}' -n kube-system
安装示例 CHART
[root@node1 ~]# helm install stable/mysql
NAME: jaunty-hyena
LAST DEPLOYED: Thu Dec 14 20:47:23 2017
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1/Secret
NAME TYPE DATA AGE
jaunty-hyena-mysql Opaque 2 <invalid>
==> v1/PersistentVolumeClaim
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
jaunty-hyena-mysql Pending <invalid>
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
jaunty-hyena-mysql ClusterIP 10.233.35.247 <none> 3306/TCP <invalid>
==> v1beta1/Deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
jaunty-hyena-mysql 1 1 1 0 <invalid>
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
jaunty-hyena-mysql-56559fb447-vm7x8 0/1 Pending 0 <invalid>
NOTES:
MySQL can be accessed via port 3306 on the following DNS name from within your cluster:
jaunty-hyena-mysql.default.svc.cluster.local
To get your root password run:
kubectl get secret --namespace default jaunty-hyena-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 -il
2. Install the mysql client:
$ apt-get update && apt-get install mysql-client -y
3. Connect using the mysql cli, then provide your password:
$ mysql -h jaunty-hyena-mysql -p
查询版本
[root@node1 ~]# helm ls
NAME REVISION UPDATED STATUS CHART NAMESPACE
jaunty-hyena 1 Thu Dec 14 20:47:23 2017 DEPLOYED mysql-0.3.0 default
卸载release
[root@node1 ~]# helm delete jaunty-hyena
release "jaunty-hyena" deleted
卸载之后还可以查询该release状态,甚至可以取消删除helm rollback
[root@node1 ~]# helm status jaunty-hyena
LAST DEPLOYED: Thu Dec 14 20:47:23 2017
NAMESPACE: default
STATUS: DELETED
这是由于没有安装socat
四、卸载 tiller
helm reset
or
kubectl -n kube-system delete deployment tiller-deploy
转载于:https://blog.51cto.com/brave666/2050811
相关文章:

造车新势力“围猎”秋招,应届生如何拿下高薪 offer ?
作者 | 易璜珵 出品 | 《新程序员》近年来,互联网大厂的秋招开启得越来越早,只为先人一步将优秀的毕业生纳入麾下。所谓“金九银十”,九月即将结束,许多大厂的秋招正式批也逐渐进入笔试和面试环节。在新能源汽车领域…

云评测、云监测、云加速,性能魔方mmTrix全球速度最快
在移动互联网高速发展的今天,互联网企业如果要实现业务增长,在激烈的市场竞争中站稳脚跟,必须要尽可能的提高用户体验和产品影响力。而要达实现这个目标,产品应用性能质量的好坏往往起到重要作用,APM服务受到了越来越多…

水平切分与垂直切分
数据库优化无非水平切分与垂直切分! 1.水平.就是按记录分. 一个数据库有3000W用户记录.处理速度比较慢.这时可以把3000W.分成三份.每份都是1000W.分别放在不同的机器上. 2.垂直分割就是按字段分. 一个数据库有3000W用户记录.包括字段id,user,password,first_name,l…

iOS 设计模式浅析 1 - 策略
本篇文章主要讲三个点: 1. 什么是策略模式.2. 策略模式的优缺点.3. demo .1. 策略模式定义一系列算法, 并且将每个算法封装起来, 算法之间可以互相替换. 使用前提: 输入已知, 好比你渴了, 可以喝可乐, 可以喝牛奶, 也可以喝水. 在我们项目中比较常见的使用情况: 1. 切换主题, 要…

何崚谈阿里巴巴前端性能优化最佳实践
转载:http://www.infoq.com/cn/interviews/hl-alibaba-front-end-performance-optimization 大家好,我现在在阿里巴巴园区采访阿里巴巴中文站架构师,兼B2B网站优化领域的负责人何崚。何崚你好,请简单介绍一下你自己。 我叫何崚&am…

java基础_04
2019独角兽企业重金招聘Python工程师标准>>> 1、java语言的程序结构。Java语言支持3种程序结构:顺序结构、选择结构(分支结构)、循环结构2、顺序结构是最简单、最普遍的一种。java程序如果没有意外都是按照从前到后、从左到右的顺…

会唱歌、会弹琴,清华大学 AI 学生华智冰火了
整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 清华大学计算机系知识工程实验室,开发的中国首个原创虚拟学生——华智冰,与近日亮相。她的声音、肢体动作全部由人工智能完成。 今年6月,清华大学计算机系录取了一位…

22. Node.Js Buffer类(缓冲区)-(二)
转自:https://blog.csdn.net/u011127019/article/details/52512242转载于:https://www.cnblogs.com/sharpest/p/8046463.html

linux安装sphinx
从sphnix网站下载sphinx源码包,当前最新版本是: http://sphinxsearch.com/files/sphinx-0.9.9.tar.gz。当然,还需要保证你的系统已经安装了mysql。其次,就是依照官方的安装指导进行安装了,基本步骤如下:解压…

机器人越像人越好?被机器人盯着会变『蠢』
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 摘要:人形机器人的凝视会影响人们对社会决策任务的反应方式。 资料来源:IIT 你是否遇到过这种问题,跟别人对是不超过三秒?当你直视别人眼睛的时候&#x…

SQL Server 储存过程的output 参数
要做的参数的回传一方面要做到有储存过程的配合,再一方面也要有调用方法的配合,也就是说错误的调用方法是没有办法把值回传的。 下面是例子 --1、储存过程方面的配合 create procedure dbo.usp_C i as int output ---**注意这里要用output 关键字**--…
JavaScript基础笔记集合(转)
JavaScript基础笔记集合 JavaScript基础笔记集合js简介 js是脚本语言。浏览器是逐行的读取代码,而传统编程会在执行前进行编译 js存放的位置 html脚本必须放在<script>、</script>之内。 <script>可放置在<head>、<body>里 和css一…

Xapian安装
Xapian是一个用C编写的全文检索程序,他的作用类似于Java的lucene。Xapian除了提供原生的C编程接口之外,还提供了Perl,PHP,Python和Ruby编程接口和相应的类库,所以你可以直接从自己喜欢的脚本编程语言当中使用Xapian进行…

IOS开发中多线程的使用
一、创建多线程的五种方式1.开启线程的方法一 NSThread * thread[[NSThread alloc] initWithTarget:self selector:selector(_update) object:nil]; 2.开启线程的方法二 [NSThread detachNewThreadSelector:selector(_update) toTarget:self withObject:nil]; 3.开启线程的方法…

介绍如何用 Python 来绘制高清的交互式地图,建议收藏
作者 |俊欣来源 |关于数据分析与可视化今天小编来为大家介绍一个叫做Folium的模块,我们可以用它来绘制高清的交互式地图,并且标注出重要的地理位置等等,读者在看过本篇文章之后,读者大致会掌握1. 使用Folium来进行交互式地图的绘制…

Pandas Cheat Sheet
Pandas Doc: http://pandas.pydata.org/pandas-docs/stable/10min.html#min 转载于:https://www.cnblogs.com/nuswgg95528736/p/8053582.html

google ProtoBuf开发者指南
目录 1 概览 1.1 什么是protocol buffer 1.2 他们如何工作 1.3 为什么不用XML? 1.4 听起来像是为我的解决方案,如何开始? 1.5 一点历史 2 语言指导 2.1 定义一个消息类型 2.2 值类型 2.3 可选字段与缺省值 2.4 枚举 2.5 使用其他消息…

AI 生成的代码可信吗?编写的代码有 Bug 吗?
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 即使是帮助开发人员编写软件的工具也会产生类似的bug。 目前,大部分的软件开发人员会让 AI 帮助开发者们编写代码,但是开发人员发现 AI 会像程序员的代码一样还是存有 bug。 去年…

嵌入式开发之信号采集同步---VSYNC和HSYNC的作用以及它们两者之间的关系
VSYNC和HSYNC的作用以及它们两者之间的关系 VSYNC和HSYNC的作用以及它们两者之间的关系 VSYNC和HSYNC是什么 VSYNC: vertical synchronization,指与显示器的帧数同步。 简单来说就是启用了VSYNC的渲染过程,帧数不会超过显示器的帧数,一个同步…

对ListenSocket 的研究(四)
对postmaster.c 中的 readmask,rmask,nsocket等进行分析,可以看到:它们之间有如下的关系(与细节无关的代码省略):复制代码/* * Initialise the masks for select() for the ports we are listenin…

MySQL下的NoSQL解决方案HandlerSocket
目前使用MySQL的网站,多半同时使用Memcache作为键值缓存。虽然这样的架构极其流行,有众多成功的案例,但过于依赖Memcache,无形中让Memcache成为故障的根源: Memcache数据一致性的问题:当MySQL数据变化后&a…

人群距离监测 DeepSOCIAL 最全汉化论文+源码导读
作者 |神经星星来源 |HyperAI超神经By 超神经内容一览:在疫情期间,公共场所中尽量避免人群聚集,可以有效控制疫情扩散。英国利兹大学的研究团队开源了 DeepSOCIAL 人群距离监测项目,通过 YOLOv4SORT 的方式快速实现了这一应用。关…

堆和栈的差别(转过无数次的文章)
一、预备知识—程序的内存分配 一个由C/C编译的程序占用的内存分为下面几个部分 1、栈区(stack)— 由编译器自己主动分配释放 ,存放函数的參数值,局部变量的值等。其 操作方式相似于数据结构中的栈。 2、堆区&…

ARM WFI和WFE指令【转】
本文转载至:http://www.wowotech.net/armv8a_arch/wfe_wfi.html 1. 前言 蜗蜗很早以前就知道有WFI和WFE这两个指令存在,但一直似懂非懂。最近准备研究CPU idle framework,由于WFI是让CPU进入idle状态的一种方法,就下决心把它们弄清…

分享几个用 Python 给图片添加水印的方法,简单实用
作者 |俊欣来源 |关于数据分析与可视化今天来分享几种可以给图片添加水印的方法,都是十分的简单实用,大家在看了之后也可以私底下去自己试试,有些方法需要的代码量就比较少,有些方法需要的代码量就稍微多一些,那我们开…

Apache服务器下使用 ab 命令进行压力测试
ab是Apache超文本传输协议(HTTP)的性能测试工具。 其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求. #ab -v可以看出其基本信息 #ab -n1000 -c10 http://localhost:81/t.php 这是一个基本命令 -n1000表示总请求数为…

《Objective-c》Foundation框架 -(字符串:NSString和NSMutableString)
一、NSString(不可变字符串) 1.创建字符串的方式:(利用对象方法) 方式一:最快速的创建 方式二: 方式三: 方式四: 方式五:NSUTF8StringEncoding 用到中文就可以…
基于Vue, Vuex 和 ElementUI 构建轻量单页Hexo主题Lite
Hexo Theme Lite Keep Calm, Lite and Writing.light single page blog application theme, using Vue, Vuex, ElementUI and so on. 一款轻量单页博客主题,基于Vue, Vuex 和 ElementUI 构建, 工具语言 Typescript Live Demo Demo | 在线演示 Github 项目地址 Previ…

怎么关闭wordpress评论
1、要是关闭某一篇文章的评论,在发表文章的时候,在下面有个“讨论”,把"允许评论"去掉勾选就可以了。 2、要是关闭所有文章的评论,在“设置”-“讨论设置”把“默认文章设置”中的“允许访客对新文章发表评论 ”不再勾…

ACM-ICPC历届世界总冠军名单1977-2015
为什么80%的码农都做不了架构师?>>> ACM-ICPC历届世界总冠军1977-2015 更新时间2016-04-20 17:39 年份总决赛地点冠军大学国家2015年摩洛哥马拉喀什聖彼得堡國立資訊科技、機械與光學大學 (破纪录解出全部题目)俄罗斯2014…