部署和體驗Helm(2.16.1版本)

關於Helm

在Kubernetes上進行容器化部署並不是易事,docker、環境變量、存儲、網絡等方面都會涉及到,這些複雜的操做能夠被Helm應用包管理工具實現,避免了全手工操做的,Helm官網:https://helm.shnode

實戰環境

  1. 本次實戰環境是kubernetes集羣(1.15.3版本),由三臺CentOS7.7服務器組成;
  2. 部署完畢後,在體驗Helm的環節,須要您提早準備好NFS,做爲部署應用的網絡存儲空間;

部署客戶端

ssh登陸到能夠執行kubectl操做的服務器:linux

  1. 下載helm包,地址:https://get.helm.sh/helm-v2.1...
  2. 解壓:
tar -zxvf helm-v2.16.1-linux-amd64.tar.gz
  1. 把解壓後的文件夾內的helm文件放入<font color="blue">/usr/local/bin/</font>:
mv linux-amd64/helm /usr/local/bin/
  1. 查看helm版本,以下,可見客戶端版本是<font color="blue">2.16.1</font>,因爲helm服務端(名爲tiller)尚未部署,所以顯示"could not find tiller":
[root@node1 ~]# helm version
Client: &version.Version{SemVer:"v2.16.1", GitCommit:"bbdfe5e7803a12bbdf97e94cd847859890cf4050", GitTreeState:"clean"}
Error: could not find tiller

客戶端部署完畢,接下來要把ServiceAccount和角色綁定建好git

帳號與角色綁定

  1. 建立名爲<font color="blue">tiller</font>的ServiceAccount:
kubectl create serviceaccount --namespace kube-system tiller
  1. 把tiller與角色tiller-cluster-rule進行綁定:
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
  1. helm初始化,其中tiller的鏡像來自阿里雲,而且將默認倉庫也設置爲阿里雲的:
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.16.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts --service-account tiller
  1. 等待控制檯提示成功後再次執行<font color="blue">helm version</font>,輸出以下,可見helm的服務端已經返回了信息:
[root@node1 ~]# helm version
Client: &version.Version{SemVer:"v2.16.1", GitCommit:"bbdfe5e7803a12bbdf97e94cd847859890cf4050", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.16.1", GitCommit:"bbdfe5e7803a12bbdf97e94cd847859890cf4050", GitTreeState:"clean"}

如今helm已裝好,接下來部署個應用試試程序員

準備NFS

  1. 接下來用helm部署服務的時候會用到存儲卷,所以要提早準備PV;
  2. 我這裏已經準備好了NFS做爲PV,關於NFS如何部署能夠參考《Ubuntu16環境安裝和使用NFS》
  3. 注意,K8S集羣全部宿主機上都要裝好NFS客戶端,CentOS的安裝命令以下:
yum install nfs-utils -y
  1. 建立名爲<font color="blue">pv-tomcat.yaml</font>的文件,內容以下,其中<font color="blue">192.168.133.142</font>是NFS服務器的地址,<font color="blue">/usr/local/work/test/001</font>是可用的存儲路徑:
apiVersion: v1
kind: PersistentVolume
metadata:
 name: pv-tomcat
 namespace: default
spec:
 capacity:
 storage: 10Gi
 accessModes:
 - ReadWriteOnce
 persistentVolumeReclaimPolicy: Recycle
 nfs:
 path: /usr/local/work/test/001
 server: 192.168.133.142
  1. 執行如下命令建立PV:
kubectl create -f pv-tomcat.yaml

PV已經準備好,能夠經過Helm部署應用了github

體驗

  1. 想部署tomcat,執行命令helm search tomcat查找,卻發現阿里雲的helm倉庫裏沒有,只能在其餘倉庫去找了;
  2. 增長一個倉庫:
helm repo add bitnami https://charts.bitnami.com/bitnami
  1. 再次查找tomcat,這回有了:
[root@node1 ~]# helm search tomcat
NAME CHART VERSION APP VERSION DESCRIPTION 
bitnami/tomcat 6.0.6 9.0.29 Chart for Apache Tomcat
  1. 執行如下命令部署tomcat,指定chat名爲my-tomcat:
helm install \
--name my-tomcat \
bitnami/tomcat
  1. 使用<font color="blue">helm list</font>命令查看:
[root@node1 ~]# helm list
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
my-tomcat 1 Sun Nov 24 20:29:16 2019 DEPLOYED tomcat-6.0.6 9.0.29 default
  1. 使用<font color="blue">kubectl get services</font>命令查看kubernetes服務,可見爲tomcat建立了service,類型是<font color="blue">LoadBalancer</font>:
[root@node1 local]# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.233.0.1 <none> 443/TCP 3h36m
my-tomcat LoadBalancer 10.233.16.166 <pending> 80:31229/TCP 100s
  1. 由上述信息可見,tomcat服務類型爲LoadBalancer,所以咱們能夠經過宿主機的31229端口訪問,以下圖可見:

在這裏插入圖片描述
至此,實戰結束,在您安裝和使用Helm的時候,但願本文能給您一些參考;docker

歡迎關注個人公衆號:程序員欣宸

在這裏插入圖片描述
https://github.com/zq2599/blog_demosshell

相關文章
相關標籤/搜索