Helm介绍

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

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

  

  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查看信息:

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

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

2. 安装Tiller。

helm init

注:如果初始化失败,可以把上面的链接中的.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版本,如下表示客户端、服务端都安装完成:

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

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

准备Java微服务

1. 打包jar

mvn package

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虚拟机

4. 打包docker镜像

docker build -t hello:1.0.0 .

准备.Net Core微服务

1. 发布项目

dotnet publish -c Release

2. 准备Dockerfile

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

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

4. 打包docker镜像

docker build -t hello-test:1.0.0 .

使用Helm部署蓝图(Chart)

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

1. 创建chart

helm create hello-test

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

3. 打包chart

helm package hello-test

4. 检查chart

helm lint hello-test

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

5. 调试chart

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

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

6. 通过chart部署release

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

helm ls

kubectl get po

查看结果

java服务:

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

7. 删除release

helm delete hello-test

kubectl get po

helm ls -a

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

使用.Net Core来进行部署

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

1. 核心代码:

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

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

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

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

4. 检查效果

安装:

删除:

源码地址

https://github.com/ErikXu/HelmTutorial

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

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

Helm - Kubernetes服务编排的利器相关推荐

  1. 万字长文:读懂微服务编排利器Zeebe

    万字长文:读懂微服务编排利器Zeebe 1.工作流与微服务编排 1.1工作流 提到工作流,印象里都是OA系统各种请假审批流.事实上,广义上的工作流是对工作流程及其各操作步骤之间业务规则的抽象.概括.描 ...

  2. 微服务编排 conductor_智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台

    背景:从传统运维到容器化的 Docker Swarm 编排,从 Docker Swarm 转向 Kubernetes,然后在 Kubernetes 运行 SpringCloud 微服务全家桶,到最终拥 ...

  3. 将微服务部署到 Azure Kubernetes 服务 (AKS) 实践

    介绍 本文的目的是:通过使用 DockerHub 和 Azure Kubernetes Service (AKS) 将之前 使用 .NET 和 Docker 构建的微服务 部署到微软 Azure 云上 ...

  4. i 智慧 | 深度广度并举,AWS容器服务再推利器!

    戳蓝字"CSDN云计算"关注我们哦! 作者 |  晶少 责编 | 阿秃 出品 | CSDN云计算(ID:CSDNcloud) 据晶少了解,国庆假期后的首个工作日,AWS就在中国区域 ...

  5. k8s包管理器helm_是时候使用Helm了:Helm, Kubernetes的包管理工具

    目前我们的一个产品共有4套环境:dev环境.test环境.staging环境.production环境. 其中dev, test, staging环境在一个Kubernetes集群上以不同namesp ...

  6. 三大公有云托管 Kubernetes 服务 (EKS、GKE、AKS) 评估

    EKS vs GKE vs AKS - Evaluating Kubernetes in the Cloud | StackRoxhttps://www.stackrox.com/post/2021/ ...

  7. 使用Docker和Azure Kubernetes服务将ASP.NET核心应用程序容器化

    目录 介绍 应用概述 容器化ASP.NET核心应用程序 部署在本地Kubernetes集群上 Docker镜像和Azure容器注册表(ACR) 部署Azure Kubernetes服务(AKS)群集 ...

  8. sql azure 语法_Azure Kubernetes服务(AKS)中SQL Server

    sql azure 语法 In this article, we will review how to create a Kubernetes cluster in Azure Kubernetes ...

  9. nomad 服务编排_Nomad微服务的容器模式

    nomad 服务编排 Brendan Burns in his paper Design Patterns for Container-Based Distributed Systems lays o ...

最新文章

  1. iOS学习 plist读取和写入文件
  2. 每月分享github上有意思的项目
  3. 一个技术管理者的苦逼【技术管理漫谈】
  4. 【渝粤教育】国家开放大学2018年春季 0299-22T中国古代文学(1) 参考试题
  5. Postman Forbidden (CSRF token missing or incorrect.)
  6. 力扣55. 跳跃游戏(JavaScript)
  7. Java 1.1.4 检测字符串是否相等
  8. ASP.NET Atlas简单控件介绍——InputControl,TextBox,Button和CheckBox
  9. 导入一个maven项目出现红色叉号的解决办法
  10. c语言折半排序的程序,C语言实现九大排序算法的实例代码
  11. Qt创建桌面快捷方式
  12. 百度 bos php,百度BOS云存储上传插件 - 支持客户端直传、服务端中转、分片上传 – 基于ThinkPHP和Bootstrap的极速后台开发框架...
  13. 云电脑服务:技术与商业模式双重创新
  14. 泰坦尼克号生命值预测
  15. 解决zui-upload(ZUI: 文件上传 - v1.8.1)移动端上传组件的bug
  16. Java面向对象编程——继承
  17. Uva 10158 War
  18. 希望我们不要忘记喜欢过的,喜欢着的
  19. PAKDD2020:阿里巴巴算法大赛冠军思路
  20. 新的网络架构按下“快进键” 快步走入互联网下半场

热门文章

  1. Oracle即将发布的全新Java垃圾收集器 ZGC
  2. CC框架实践(1):实现登录成功再进入目标界面功能
  3. 第五周项目2-对象作为数据成员
  4. 简单链接Simplelink 传感器标签SensorTag
  5. 使用JavaScript实现页面选项自动添加行以及删除行 javaweb
  6. jQuery实现等比例缩放大图片让大图片自适应页面布局
  7. ubuntu下mysql-python模块的安装
  8. ASP.NET : Kerberos网络认证过程
  9. Avalonia跨平台入门第九篇之控件置顶和置底
  10. .NET 6新特性试用 | 无需配置开发人员异常页