Helm - Kubernetes服务编排的利器
Helm介紹
在Kubernetes中部署容器云應(yīng)用(容器或微服務(wù)編排)是一項(xiàng)有挑戰(zhàn)性的工作,Helm就是為了簡化在Kubernetes中安裝部署容器云應(yīng)用的一個(gè)客戶端工具。通過Helm能夠幫助開發(fā)者定義、安裝和升級(jí)Kubernetes中的容器云應(yīng)用。同時(shí),也可以通過Helm進(jìn)行容器云應(yīng)用的分享。
Helm的整體架構(gòu)如下圖(圖片來源-Kubernetes中文社區(qū))所示:
Helm架構(gòu)由Helm客戶端、Tiller服務(wù)器端和Chart倉庫所組成;Tiller部署在Kubernetes中,Helm客戶端從Chart倉庫中獲取Chart安裝包,并將其安裝部署到Kubernetes集群中。?
?
Helm是管理Kubernetes包的工具,Helm能提供以下能力:
創(chuàng)建新的charts
將charts打包成tgz文件
與chart倉庫交互
安裝和卸載Kubernetes的應(yīng)用
管理使用Helm安裝的charts的生命周期
?
在Helm中,有三個(gè)需要了解的重要概念:
chart:是創(chuàng)建Kubernetes應(yīng)用實(shí)例的信息集合
config:創(chuàng)建發(fā)布對(duì)象的chart的配置信息
release:chart的運(yùn)行實(shí)例,包含特定的config
?
安裝Helm
注:有些文件或鏡像在國內(nèi)可能無法下載,可以通過此地址獲取:https://pan.baidu.com/s/1yVUCz7wGYie8hkzQaNc3eg
1. 在Master中下載安裝Helm的客戶端,可根據(jù)需要下載對(duì)應(yīng)的版本,這里使用的版本是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查看信息:
服務(wù)端Tiller還未安裝,因此無法獲取信息。
注:如果helm-v2.8.2-linux-amd64.tar.gz無法下載,可以從上面的鏈接中獲取。
?
?2. 安裝Tiller。
helm init
注:如果初始化失敗,可以把上面的鏈接中的.helm目錄拷貝到master的root目錄下。tiller的鏡像文件也可以從目錄獲取。
如果出現(xiàn)了“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版本,如下表示客戶端、服務(wù)端都安裝完成:
?
Kubernetes 1.6+版本加入了RBAC的機(jī)制,因此需要添加Role Binding:
kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
?
準(zhǔn)備Java微服務(wù)
1. 打包jar
mvn package
?
2. 準(zhǔn)備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虛擬機(jī)
?
4. 打包docker鏡像
docker build -t hello:1.0.0 .
?
準(zhǔn)備.Net Core微服務(wù)
1. 發(fā)布項(xiàng)目
dotnet publish -c Release
?
2. 準(zhǔn)備Dockerfile
FROM microsoft/aspnetcore:2.0COPY . /app WORKDIR /appEXPOSE 5000/tcp ENV ASPNETCORE_URLS http://*:5000ENTRYPOINT ["dotnet", "HelloTest.dll"]3. 拷貝打包好的程序包以及Dockerfile到node虛擬機(jī)
?
4. 打包docker鏡像
docker build -t hello-test:1.0.0 .
?
?
使用Helm部署藍(lán)圖(Chart)
這里演示如何通過helm完成上面兩個(gè)微服務(wù)的部署。
?
1. 創(chuàng)建chart
helm create hello-test
?
2. 在templates目錄中放入相應(yīng)的部署腳本
?
3. 打包c(diǎn)hart
helm package hello-test
?
4. 檢查chart
helm lint hello-test
缺少chart的圖標(biāo),但不影響,可以忽略。
?
5. 調(diào)試chart
helm install ./hello-test-0.1.0.tgz --debug --dry-run
?
調(diào)試模式不會(huì)真的部署,通過helm list來查看:
?
6. 通過chart部署release
helm install --name hello-test ./hello-test-0.1.0.tgz
?
helm ls
?
kubectl get po
?
查看結(jié)果
java服務(wù):?
.Net Core服務(wù)(調(diào)用java服務(wù)):
?
7. 刪除release
helm delete hello-test
?
kubectl get po
?
helm ls -a
hello-test還在,但狀態(tài)是DELETED,表示可以重用。如果想徹底刪除,可以通過helm delete hello-test?--purge來刪除
?
使用.Net Core來進(jìn)行部署
使用的組件是:https://github.com/qmfrederik/helm/。
?
1. 核心代碼:
注:這里需要獲取Kubernetes的admin.config的證書,該證書在master節(jié)點(diǎn)上:/etc/kubernetes/admin.conf。
?
2. 參考上述準(zhǔn)備.Net Core微服務(wù)的步驟,完成helm-client的鏡像打包及部署。
注:需要把a(bǔ)dmin.conf拷貝到鏡像中:
?
3. 準(zhǔn)備yaml文件helm-client.yaml并完成部署
?
4. 檢查效果
安裝:
?
刪除:
?
源碼地址
https://github.com/ErikXu/HelmTutorial
原文地址:https://www.cnblogs.com/Erik_Xu/p/8893725.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的Helm - Kubernetes服务编排的利器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谈谈surging引擎的tcp、http
- 下一篇: GraphQL 的前世今生