Helm - Kubernetes服务编排的利器

Helm介绍

  在Kubernetes中部署容器云应用(容器或微服务编排)是一项有挑战性的工作,Helm就是为了简化在Kubernetes中安装部署容器云应用的一个客户端工具。通过Helm能够帮助开发者定义、安装和升级Kubernetes中的容器云应用。同时,也可以通过Helm进行容器云应用的分享。

  Helm的整体架构如下图(图片来源-Kubernetes中文社区)所示:

  640?wx_fmt=jpeg

  Helm架构由Helm客户端、Tiller服务器端和Chart仓库所组成;Tiller部署在Kubernetes中,Helm客户端从Chart仓库中获取Chart安装包,并将其安装部署到Kubernetes集群中。 

 

Helm是管理Kubernetes包的工具,Helm能提供以下能力:

  • 创建新的charts

  • 将charts打包成tgz文件

  • 与chart仓库交互

  • 安装和卸载Kubernetes的应用

  • 管理使用Helm安装的charts的生命周期

 

在Helm中,有三个需要了解的重要概念:

  • chart:是创建Kubernetes应用实例的信息集合

  • config:创建发布对象的chart的配置信息

  • release:chart的运行实例,包含特定的config

 

安装Helm

注:有些文件或镜像在国内可能无法下载,可以通过此地址获取:https://pan.baidu.com/s/1yVUCz7wGYie8hkzQaNc3eg

1. 在Master中下载安装Helm的客户端,可根据需要下载对应的版本,这里使用的版本是2.8.2。

curl -LO https://storage.googleapis.com/kubernetes-helm/helm-v2.8.2-linux-amd64.tar.gz

tar xzf helm-v2.8.2-linux-amd64.tar.gz

mv linux-amd64/helm /usr/local/bin

 

helm version查看信息:

640?wx_fmt=png

服务端Tiller还未安装,因此无法获取信息。

注:如果helm-v2.8.2-linux-amd64.tar.gz无法下载,可以从上面的链接中获取。

 

 2. 安装Tiller。

helm init

640?wx_fmt=png

注:如果初始化失败,可以把上面的链接中的.helm目录拷贝到master的root目录下。tiller的镜像文件也可以从目录获取。

如果出现了“Error:Get https://10.96.0.1:443/version:dial tcp 10.96.0.1:443:i/o timeout.”的问题,可以参考我的回答来解决:

https://github.com/kubernetes/helm/issues/3347#issuecomment-385468128

 

使用helm version查看Helm版本,如下表示客户端、服务端都安装完成:

640?wx_fmt=png

 

Kubernetes 1.6+版本加入了RBAC的机制,因此需要添加Role Binding:

kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default

640?wx_fmt=png

 

准备Java微服务

1. 打包jar

mvn package

640?wx_fmt=png

 

2. 准备Dockerfile

FROM java:8u111-jre
RUN mkdir /app
COPY . /app
WORKDIR /app
CMD ["java","-Xmx4g","-Djava.security.egd=file:/dev/./urandom","-jar","hello-1.0.0.jar"]

 

3. 拷贝打包好的jar包以及Dockerfile到node虚拟机

640?wx_fmt=png

 

4. 打包docker镜像

docker build -t hello:1.0.0 .

640?wx_fmt=jpeg

 

准备.Net Core微服务

1. 发布项目

dotnet publish -c Release

640?wx_fmt=jpeg

 

2. 准备Dockerfile

FROM microsoft/aspnetcore:2.0COPY . /app
WORKDIR /appEXPOSE 5000/tcp
ENV ASPNETCORE_URLS http://*:5000ENTRYPOINT ["dotnet", "HelloTest.dll"]

3. 拷贝打包好的程序包以及Dockerfile到node虚拟机

640?wx_fmt=png

 

4. 打包docker镜像

docker build -t hello-test:1.0.0 .

 640?wx_fmt=png

 

使用Helm部署蓝图(Chart)

这里演示如何通过helm完成上面两个微服务的部署。

 

1. 创建chart

helm create hello-test

640?wx_fmt=png

 

2. 在templates目录中放入相应的部署脚本

640?wx_fmt=png

 

3. 打包chart

helm package hello-test

640?wx_fmt=png

 

4. 检查chart

helm lint hello-test

640?wx_fmt=png

缺少chart的图标,但不影响,可以忽略。

 

5. 调试chart

helm install ./hello-test-0.1.0.tgz --debug --dry-run

640?wx_fmt=png

 

调试模式不会真的部署,通过helm list来查看:

640?wx_fmt=png

 

6. 通过chart部署release

helm install --name hello-test ./hello-test-0.1.0.tgz

640?wx_fmt=png

 

helm ls

640?wx_fmt=png

 

kubectl get po

640?wx_fmt=png

 

查看结果

java服务: 

640?wx_fmt=png

.Net Core服务(调用java服务):

640?wx_fmt=png

 

7. 删除release

helm delete hello-test

640?wx_fmt=png

 

kubectl get po

640?wx_fmt=png

 

helm ls -a

640?wx_fmt=png

hello-test还在,但状态是DELETED,表示可以重用。如果想彻底删除,可以通过helm delete hello-test --purge来删除

640?wx_fmt=png

 

使用.Net Core来进行部署

使用的组件是:https://github.com/qmfrederik/helm/。

 

1. 核心代码:

640?wx_fmt=png

注:这里需要获取Kubernetes的admin.config的证书,该证书在master节点上:/etc/kubernetes/admin.conf。

 

2. 参考上述准备.Net Core微服务的步骤,完成helm-client的镜像打包及部署。

注:需要把admin.conf拷贝到镜像中:

640?wx_fmt=png

 

3. 准备yaml文件helm-client.yaml并完成部署

640?wx_fmt=png

640?wx_fmt=png

 

4. 检查效果

安装:

640?wx_fmt=png

640?wx_fmt=png

 

删除:

640?wx_fmt=png

640?wx_fmt=png

 

源码地址

https://github.com/ErikXu/HelmTutorial

原文地址https://www.cnblogs.com/Erik_Xu/p/8893725.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320796.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core微服务之基于MassTransit实现数据最终一致性(Part 1)

一、预备知识:数据一致性关于数据一致性的文章,园子里已经有很多了,如果你还不了解,那么可以通过以下的几篇文章去快速地了解了解,有个感性认识即可。(1)左正,《保证分布式系统数据一…

Asp.NetCoreWebApi图片上传接口(二)集成IdentityServer4授权访问(附源码)

写在前面本文地址:http://www.cnblogs.com/yilezhu/p/9315644.html作者:yilezhu上一篇关于Asp.Net Core Web Api图片上传的文章使用的是mongoDB进行图片的存储,文章发布后,张队就来了一句,说没有使用GridFS。的确博主只…

.NET Core开发日志——从ASP.NET Core Module到KestrelServer

ASP.NET Core程序现在变得如同控制台(Console)程序一般,同样通过Main方法启动整个应用。而Main方法要做的事情很简单,创建一个WebHostBuilder类,调用其Build方法生成一个WebHost类,最后启动之。实现代码一目了然:要想探…

【bfs】极其简单的最短路问题

极其简单的最短路问题 题目大意: 求最短路,权值只有1或2 原题: 题目描述 小C终于被小X感动了,于是决定与他看电影,然而小X距离电影院非常远,现在假设每条道路需要花费小X的时间为1,由于有数…

GraphQL 的前世今生

GraphQL是什么GraphQL是一种新的API标准,它提供了一种更高效、强大和灵活的数据提供方式。它是由Facebook开发和开源,目前由来自世界各地的大公司和个人维护。GraphQL本质上是一种基于api的查询语言,现在大多数应用程序都需要从服务器中获取数…

C#:如何将坏的代码重新编译为好的代码

自己的前言说明:本文原作者:Radoslaw Sadowski,原文链接为:C# BAD PRACTICES: Learn how to make a good code by bad example。本系列还有其他文章,后续将慢慢翻译。引言:我的名字叫Radoslaw Sadowski&…

走进 Cake for .NET

一、什么是 CakeCake(C# Make) 是一个使用 C# DSL 面向 Task 的跨平台构建自动化系统,像编译代码,复制文件和文件夹,运行单元测试,压缩文件和构建 NuGet 包。更多内容请访问官网二、使用 Cake先尝试一下 P…

Wannafly挑战赛17

剩下的不太会就没接着打了&#xff0c;没有注意到比赛截至时间&#xff0c;好像提前了几分钟公开题解。意识到的时候已经来不及了。。。抱歉。。。 —————————————————————————————————————— A.走格子 按题意模拟即可 #include <bits/…

【结论】环

环 题目大意&#xff1a; 给出一个环中的三个数&#xff0c;这三个数按输入顺序连接&#xff08;有向&#xff09;&#xff0c;问连接的线是顺时针还是逆时针 原题&#xff1a; 题目描述 有一个圆&#xff0c;1-N共N个数在圆环上顺时针排列着。 现在给你a,b,c三个数&#…

Asp.Net Core 快速邮件队列设计与实现

发送邮件几乎是软件系统中必不可少的功能&#xff0c;在Asp.Net Core 中我们可以使用MailKit发送邮件&#xff0c;MailKit发送邮件比较简单&#xff0c;网上有许多可以参考的文章&#xff0c;但是应该注意附件名长度&#xff0c;和附件名不能出现中文的问题&#xff0c;如果你遇…

.net core redis 驱动推荐,为什么不使用 StackExchange.Redis

前言本人从事 .netcore 转型已两年有余&#xff0c;对 .net core 颇有好感&#xff0c;这一切得益于优秀的语法、框架设计。2006年开始使用 .net 2.0&#xff0c;从 asp.net 到 winform 到 winservice 等等领域开发都些许涉猎。对.net和大多数同胞有着类似的感触&#xff0c;那…

[开源]开放域实体抽取泛用工具 NetCore2.1

开放域实体抽取泛用工具https://github.com/magicdict/FDDC更新时间 2018年7月16日 By 带着兔子去旅行开发这个工具的起源是天池大数据竞赛&#xff0c;FDDC2018金融算法挑战赛02&#xff0d;A股上市公司公告信息抽取。这个比赛是针对金融公告开展的信息抽取比赛。在参赛过程中…

【DP】树塔狂想曲

树塔狂想曲 题目大意&#xff1a; 有一个数字金字塔&#xff0c;让你求出去掉一个点后&#xff0c;从最顶端走到最低端的最大值&#xff08;只能往下或右下走&#xff09; 原题: 题目描述 相信大家都在长训班学过树塔问题&#xff0c;题目很简单求最大化一个三角形数塔从上…

.NET Core开发日志——HttpClientFactory

当需要向某特定URL地址发送HTTP请求并得到相应响应时&#xff0c;通常会用到HttpClient类。该类包含了众多有用的方法&#xff0c;可以满足绝大多数的需求。但是如果对其使用不当时&#xff0c;可能会出现意想不到的事情。博客园官方团队就遇上过这样的问题&#xff0c;国外博主…

【asp.net Core MVC + angular6实战】 - 1. 环境搭建

为什么打算写这些文章&#xff1f;没有为什么&#xff0c;只是为了学习Angular和更了解.Net Core等技术需要用到的技术&#xff1f;后端使用.Net Core 2.1 EF Core 2.1 Mysql 5.7 Identity &#xff08;不知道Identity算不算一个独立的技术点&#xff09;前端主要使用的是An…

微软宣布公开预览Dev Spaces for AKS

微软宣布公开预览面向Azure Kubernetes Services&#xff08;AKS&#xff09;的Dev Spaces&#xff0c;为团队提供了一种快速的Kubernetes迭代开发体验。该版本是继5月份Build 2018大会上Dev Spaces内部预览之后的版本。借助这个版本&#xff0c;微软希望为开发人员提供一种在A…

解析Visual C# 7.2中的private protected访问修饰符

去年12月份&#xff0c;随着Visual Studio 2017 Update 15.5的发布&#xff0c;Visual C#迎来了它的最新版本&#xff1a;7.2. 在这个版本中&#xff0c;有个让人难以理解的新特性&#xff0c;就是private protected访问修饰符&#xff08;Access Modifier&#xff09;。至此&a…

【Floyed】廉价最短路径

廉价最短路径 题目大意&#xff1a; 一个图中&#xff0c;在满足最短路的前提下&#xff0c;求最小代价 原题&#xff1a; 题目描述 图是由一组顶点和一组边组成的。一条边连接两个顶点。例如&#xff0c;图1表示了一个有4个顶点V、5条边的图。图中&#xff0c;每条边e是有…

Net Core集成Exceptionless分布式日志功能以及全局异常过滤

相信很多朋友都看过我的上篇关于Exceptionless的简单入门教程[asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程][https://www.cnblogs.com/yilezhu/p/9193723.html] 上篇文章只是简单的介绍了Exceptionless是什么&#xff1f;能做什么呢…

AspNetCore微服务下的网关-Kong(一)

Kong是Mashape开源的高性能高可用API网关和API服务管理层。它基于OpenResty&#xff0c;进行API管理&#xff0c;并提供了插件实现API的AOP。Kong在Mashape 管理了超过15,000 个API&#xff0c;为200,000开发者提供了每月数十亿的请求支持。本文将从架构、API管理、插件三个层面…