helm——工具使用舉例

1、helm支持的四種安裝方法

  • 安裝倉庫中的chart包,命令舉例:helm install stable/xxx;
  • 經過tar包安裝,命令舉例:helm install xxx-1.tgz(不推薦使用);
  • 經過chart本地目錄安裝,命令舉例:helm install xxx/xxx(通常是使用helm fetch stable/xxxxx 下載相應的模板,而後使用tar zxf 解壓,修改解壓後的目錄中的valumes.yaml文件中的值,就是自定義服務了,這種方式比較經常使用);
  • 經過URL安裝,不太經常使用,命令舉例:helm install https://xxxx/charts/xxx-1.gz

2、自定義Chart包舉例

//建立testchart包
[root@docker-k8s01 ~]# helm create testchart
//能夠看到生成的目錄下各類模板都有了,根據業務需求進行更改便可
[root@docker-k8s01 ~]# tree testchart/
testchart/
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml
[root@docker-k8s01 ~]# helm install testchart/ --dry-run --debug
//「--dry-run」:模擬安裝;「--debug」 :檢測輸出
//執行上述命令後,便可輸出該目錄模板的yaml文件內容
//對該目錄的內容進行語法檢測
[root@docker-k8s01 ~]# helm lint testchart/
==> Linting testchart/
[INFO] Chart.yaml: icon is recommended

1 chart(s) linted, no failures

https://hub.helm.sh/ ,這是一個helm模板倉庫的網站,上面有大量的helm模板,能夠自行查看。node

3、運行一個MySQL服務進行示例

一、部署NFS服務

[root@docker-k8s01 ~]# yum -y install nfs-utils
[root@docker-k8s01 ~]# cat /etc/exports
/nfsdata *(rw,sync,no_root_squash)
[root@docker-k8s01 ~]# systemctl restart rpcbind
[root@docker-k8s01 ~]# systemctl restart nfs-server
[root@docker-k8s01 ~]# showmount -e
Export list for docker-k8s01:
/nfsdata *

二、建立一個PV

[root@docker-k8s01 ~]# cat mysql-pv.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 8Gi
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /nfsdata/mysql-pv      //指定本地的掛載目錄
    server: 192.168.171.151
[root@docker-k8s01 ~]# mkdir -p /nfsdata/mysql-pv
[root@docker-k8s01 ~]# kubectl apply -f mysql-pv.yaml 
//肯定pv運行狀態
[root@docker-k8s01 ~]# kubectl get pv 
NAME       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
mysql-pv   8Gi        RWO            Retain           Available                                   3s

三、helm部署MySQL

//在線安裝MySQL,並設置mysql的root密碼爲123.com,「-n」表示指定其名稱
[root@docker-k8s01 ~]# helm install stable/mysql --set mysqlRootPassword=123.com -n test-mysql
//使用helm查看
[root@docker-k8s01 ~]# helm list   
NAME        REVISION    UPDATED                     STATUS      CHART       APP VERSION NAMESPACE
test-mysql  1           Sun Dec  1 21:22:56 2019    DEPLOYED    mysql-0.3.5             default  
[root@docker-k8s01 ~]# kubectl get pod -o wide     #查看mysql所對應的pod
NAME                               READY   STATUS    RESTARTS   AGE     IP           NODE     NOMINATED NODE   READINESS GATES
test-mysql-mysql-dfb9b6944-4kmgv   1/1     Running   0          9m16s   10.244.2.2   node02   <none>           <none>
//能夠登陸數據庫進行測試
[root@dokcer-k8s01 ~]# kubectl exec -it test-mysql-mysql-dfb9b6944-4kmgv -- mysql -uroot -p123.com

當install安裝後,會輸出一些提示信息,其中就包括了查看MySQL數據庫密碼的命令,若是沒有使用「--set」命令設置數據庫的root密碼,那麼能夠經過此命令查看出默認的數據庫root與用戶密碼,提示命令以下:mysql

helm——工具使用舉例

也能夠經過如下命令查看到關於test-mysql實例的詳細狀態信息sql

//查看test-mysql的實例信息
[root@docker-k8s01 ~]# helm status test-mysql

//在線升級MySQL鏡像操做docker

[root@docker-k8s01 ~]# helm upgrade --set imageTag=5.7.16 test-mysql stable/mysql
#其中test-mysql是實例名稱;
#仍是須要指定初次運行時指定的stable/mysql文件,若是初次運行時指定的是目錄,那麼這裏就換成目錄
#驗證鏡像是否更新成功
[root@docker-k8s01 ~]# kubectl describe pod test-mysql-mysql-68484cd8db-59wm5

上述命令執行後,輸出的結果以下(能夠看到鏡像的版本已經更新):數據庫

helm——工具使用舉例

[root@docker-k8s01 ~]# helm list      #再次查看實例,能夠發現「REVISION」字段爲2,而初次建立實例時,該列爲1,
#每更新一次,該數值就會+1.
NAME        REVISION    UPDATED                     STATUS      CHART       APP VERSION NAMESPACE
test-mysql  2           Sun Dec  1 21:53:00 2019    DEPLOYED    mysql-0.3.5             default  

[root@docker-k8s01 ~]# helm history test-mysql     #查看該實例的歷史版本
REVISION    UPDATED                     STATUS      CHART       DESCRIPTION     
1           Sun Dec  1 21:22:56 2019    SUPERSEDED  mysql-0.3.5 Install complete
2           Sun Dec  1 21:53:00 2019    DEPLOYED    mysql-0.3.5 Upgrade complete

//進行test-mysql實例的版本回滾api

[root@docker-k8s01 ~]# helm rollback test-mysql 1    #回滾到版本1
Rollback was a success.

[root@docker-k8s01 ~]# helm list   #再次查看,能夠看到「REVISION」的值變成了3
NAME        REVISION    UPDATED                     STATUS      CHART       APP VERSION NAMESPACE
test-mysql  3           Sun Dec  1 22:12:25 2019    DEPLOYED    mysql-0.3.5             default  
#查看MySQL對應的容器詳細信息
[root@docker-k8s01 ~]# kubectl describe pod test-mysql-mysql-dfb9b6944-8hfj4

返回的信息以下,能夠看到鏡像的版本已經回滾到初次建立的版本了,以下:app

helm——工具使用舉例

相關文章
相關標籤/搜索