k8s之helm入門

1.概述mysql

  helm是k8s的另一個項目,至關於linux的yum,在yum倉庫中,yum不光要解決包之間的依賴關係,還要提供具體的程序包,helm倉庫裏面只有配置清單文件,而沒有鏡像,鏡像仍是由鏡像倉庫來提供,好比hub.docker.com、私有倉庫.linux

  helm提供了一個應用所須要的全部清單文件.好比對於一個nginx,咱們須要一個deployment的清單文件、一個service的清單文件、一個hpa的清單文件,把這三個文件打包到一塊兒,就是一個應用程序的程序包,稱之爲Chart.nginx

  Chart是一個helm程序包,其實質只是一個模板,咱們能夠對這個模板進行賦值(value),造成咱們自定義的清單文件,也就實現咱們生產個性化的需求,這樣的倉庫叫Chart倉庫,一個https/http服務器.git

  Helm把Kubernetes資源打包到一個chart中,而chart被保存到chart倉庫,經過chart倉庫可用來存儲和分享chart.helm工做在k8s集羣以外,helm不直接操做apiserver,而是和Tiller交互,Tlller再和apiserver交互,最後由Apiserver把chart使用config賦值,最後部署成爲release.helm是tiller的客戶端,管理本地的chart倉庫,做用:發送chart、實例安裝、查詢、卸載等.github

  helm先去檢查chart是否存在,若是存在就把chart下載到helm本機當前用戶的家目錄下,而後helm把Chart和Config交給tiller,tiller和api server交互,api server把chart部署在k8s集羣上,就再也不叫chart了,而叫release;一個chart賦值不一樣,徹底能夠部署出多個release出來,因此能夠把chart看作是一個安裝包的模板,若是發現chart更新了,helm會自動滾動更新,還支持一鍵回滾的操做.redis

訪問:https://github.com/helm/helm/releases下載安裝包sql

wget https://storage.googleapis.com/kubernetes-helm/helm-v2.12.2-linux-amd64.tar.gz
tar xf helm-v2.12.2-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/
rbac配置文件樣例:https://github.com/helm/helm/blob/master/docs/rbac.md 
cat tiller-rbac.yaml 
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system

kubectl apply -f tiller-rbac.yaml
cat /usr/lib/systemd/system/docker.service
Environment="NO_PROXY=127.0.0.1/8,127.0.0.1/16"
kubectl get pods --all-namespaces=true
# 下面這兩步沒用,還得下國內的鏡像,直接執行第三步
export NO_PROXY="127.0.0.1/8,127.0.0.1/16"
helm init --service-account tiller
helm init --upgrade --tiller-image registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.12.2 \
--stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster
Happy Helming!
helm version 
Client: &version.Version{SemVer:"v2.12.2",...)
Server: &version.Version{SemVer:"v2.12.2",...)

2.使用helmdocker

官方charts列表 https://hub.kubeapps.com/
api

helm默認使用的charts源地址是https://kubernetes-charts.storage.googleapis.com,須要替換爲阿里的helm源:bash

helm repo list
NAME  	URL                                                   
stable	https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
local 	http://127.0.0.1:8879/charts
# helm源已經變成國內的了,下面這兩步是移除默認源的,不須要執行
helm repo remove stable
helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo update
# 添加incubator源,這個源是開發版的安裝包,用起來可能不穩定
helm repo add incubator https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/
#列出charts倉庫中全部可用的應用
helm search
helm search mysql
helm inspect stable/mysql
# 用helm安裝軟件包,-name:指定release名字 
helm install --name mysql1 stable/mysql
helm list # 查看安裝的軟件包
helm delete mysql1

helm經常使用命令

release管理:
    install
    delete
    upgrade/rollback
    list
    history:查看release歷史版本
    status:獲取release狀態信息
chart管理:
    create:建立一個chart,生成基礎chart示例性文件,供咱們修改用
    fetch:下載倉庫中的一個char到本地
    get
    inspect
    package
    verify

# helm把安裝包下載到當前用戶的家目錄下
ll /root/.helm/cache/archive/
# 修改chart裏面的values.yaml實現定製,values.yaml文件中##是註釋,#是可開啓的參數
helm install --name mysql1 -f /root/values.yaml stable/mysql
metrics想要能被prometheus收集數據須要在metadata中將prometheus.io/scrape:設置爲true
metadata:
  annotations:
    prometheus.io/scrape: 'true'
# 部署完應用包後,查看release提示信息
helm status mysql1
helm fetch stable/redis
查看chart官方手冊,瞭解每一個參數的含義https://docs.helm.sh/developing_charts/#charts 
# 用helm生成基礎chart示例性文件,myapp是chart的名字
helm create myapp
# 作語法檢查
helm lint myapp
==> Linting myapp
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, no failures
# 打包
helm package myapp/
Successfully packaged chart and saved it to: /root/myapp-0.1.0.tgz
# 啓動8879倉庫的服務 
helm serve
# 查看local倉庫裏面是否有咱們建立的chart包
helm search myapp
# 部署咱們自定義的chart
helm install --name myapp1 local/myapp
# 刪除咱們部署的chart 
helm delete --purge myapp1

 

參考博客:http://blog.itpub.net/28916011/viewspace-2216650/

相關文章
相關標籤/搜索