96

Helm - Kubernetes服务编排的利器

 6 years ago
source link: http://www.10tiao.com/html/391/201807/2654071021/2.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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 /app

EXPOSE 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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK