91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker中如何使用helm

發布時間:2021-11-19 11:32:16 來源:億速云 閱讀:768 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關docker中如何使用helm,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

    在k8s中,我們對無狀態應用如nginx、myapp,我們可以使用deployment控制器進行伸縮非常容易。

    對于有狀態應用比如tomcat、redis、etcd單一實例應用,我們使用deployment限制它只有一個實例,其實也是沒有任何問題的。

    但是,對于有狀態應用的多實例,比如redis主從,就不那么容易了。

    helm是k8s的另外一個項目,相當于linux的yum。

    我們知道,在yum 倉庫中,yum不光要解決包之間的依賴關系,還要提供具體的程序包。但是helm倉庫里面只有配置清單文件,而沒有鏡像,鏡像還是由鏡像倉庫來提供,比如hub.docker.com、私有倉庫等。

    也就是說,helm提供了一個應用所需要的所有清單文件。比如對于一個nginx,我們需要一個deployment的清單文件、一個service的清單文件、一個hpa的清單文件。我們把這三個文件打包到一起,就是一個應用程序的程序包,我們稱之為Chart。

    一般來說,Chart是一個helm程序包,其實質只是一個模板,我們可以對這個模板進行賦值(value),而形成我們自定義的清單文件,也就實現我們生產個性化的需求。這樣的倉庫叫Chart倉庫(其實就是一個https/http服務器)。

    Helm把Kubernetes資源(比如deployments、services或 ingress等) 打包到一個chart中,而chart被保存到chart倉庫。通過chart倉庫可用來存儲和分享chart。

    helm是工作在k8s集群之外的。helm不直接操作apiserver,而是和Tiller交互。Tlller再和apiserver交互,最后由Apiserver把chart使用config賦值(值文件),最后部署成為release。

docker中如何使用helm

    在helm工作中,helm先去檢查chart是否存在,存在就把chart下載到helm本機當前用戶的家目錄下。然后helm把chart交給tiller,tiller再和api server交互。api server一旦把chart部署在k8s集群上,就不再叫chart了,而叫release。

    所以,一個chart賦值不同,完全可以部署出多個release出來的,所以我們可以把chart看做是一個安裝包的模板。

    如果發現chart更新了,helm就自動滾動更新,而且helm還支持一鍵回滾的操作。

安裝helm服務器

    helm是安裝在k8s集群之外的服務器上的。

    可以到如下鏈接下載helm的安裝包:

https://github.com/helm/helm/releases

    docker中如何使用helm

    下載下來后,就是個helm命令,可以直接用:

[root@master linux-amd64]# mv helm /usr/bin/
[root@master linux-amd64]# helm -h
The Kubernetes package manager
To begin working with Helm, run the 'helm init' command:
$ helm init
This will install Tiller to your running Kubernetes cluster.
It will also set up any necessary local configuration.
Common actions from this point include:
- helm search:    search for charts
- helm fetch:     download a chart to your local directory to view
- helm install:   upload the chart to Kubernetes
- helm list:      list releases of charts
Environment:
  $HELM_HOME          set an alternative location for Helm files. By default, these are stored in ~/.helm
  $HELM_HOST          set an alternative Tiller host. The format is host:port
  $HELM_NO_PLUGINS    disable plugins. Set HELM_NO_PLUGINS=1 to disable plugins.
  $TILLER_NAMESPACE   set an alternative Tiller namespace (default "kube-system")
  $KUBECONFIG         set an alternative Kubernetes configuration file (default "~/.kube/config")

    我們看到helm部署好了,就是這么簡單粗暴。

配置rbac

    rbac配置文件樣例: https://github.com/helm/helm/blob/master/docs/rbac.md

[root@master helm]# 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
[root@master helm]# kubectl apply -f tiller-rbac.yaml 
serviceaccount/tiller created
clusterrolebinding.rbac.authorization.k8s.io/tiller created
[root@master helm]# kubectl get sa  -n kube-system |grep tiller
tiller                               1         21m

 部署Tiller

[root@master helm]# export NO_PROXY='172.16.0.0/16,127.0.0.0/0' #做過linux代理的可以加這個,不是可以不加這個環境變量
[root@master helm]#  helm init --service-account tiller
Creating /root/.helm 
Creating /root/.helm/repository 
Creating /root/.helm/repository/cache 
Creating /root/.helm/repository/local 
Creating /root/.helm/plugins 
Creating /root/.helm/starters 
Creating /root/.helm/cache/archive 
Creating /root/.helm/repository/repositories.yaml 
Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com 
Adding local repo with URL: http://127.0.0.1:8879/charts 
$HELM_HOME has been configured at /root/.helm.
Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.
Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation
Happy Helming!

    由于 Helm 默認會去 storage.googleapis.com 拉取鏡像,如果你當前執行的機器不能訪問該域名的話可以使用以下命令來安裝:

[root@master helm]# helm init --upgrade --tiller-image registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

    看到tiller 的pod已經運行起來了:

[root@master helm]# kubectl get pods -n kube-system -o wide |grep tiller
tiller-deploy-759cb9df9-t6b2l           1/1       Running   0          18m       10.244.2.89    node2

    看到helm可以工作,并能和k8s集群連接起來了。

[root@master ~]# helm version

Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

使用helm

     1、更改helm倉庫源

    helm默認使用的helm源地址是 https://kubernetes-charts.storage.googleapis.com 但是由于中國大陸不可描述的原因,需要替換為阿里的helm源。 更改方法如下:

[root@master ~]# helm repo remove stable 
"stable" has been removed from your repositories
[root@master ~]# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
"stable" has been added to your repositories

    2、查看本地可用helm源

[root@master ~]# helm repo list
NAME  URL                                                   
local http://127.0.0.1:8879/charts                          
stable  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

    3、更新helm倉庫

[root@master ~]# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "stable" chart repository
Update Complete. ? Happy Helming!?

     3.在倉庫中搜索

[root@master ~]# helm search  #列出helm倉庫中所有可用的應用
[root@master ~]# helm search mysql #過濾操作
NAME                         CHART VERSIONAPP VERSIONDESCRIPTION                                       
stable/mysql                 0.3.5                   Fast, reliable, scalable, and easy to use open-...
stable/percona               0.3.0                   free, fully compatible, enhanced, open source d...
stable/percona-xtradb-cluster0.0.2        5.7.19     free, fully compatible, enhanced, open source d...
stable/gcloud-sqlproxy       0.2.3                   Google Cloud SQL Proxy                            
stable/mariadb               2.1.6        10.1.31    Fast, reliable, scalable, and easy to use open-...

    4、查看應用詳細信息

[root@master ~]# helm inspect stable/mysql

   注意:上面的stable是倉庫的名字,通過helm repo list顯示的就是

     5、helm源

     https://hub.kubeapps.com/

    6、用helm安裝軟件包

[root@master ~]# helm install --name mysql1  stable/mysql

--name:指定release名字

    7、查看安裝的軟件包

[root@master ~]# helm list
NAME  REVISIONUPDATED                 STATUS  CHART      NAMESPACE
mysql11       Wed Oct 17 04:50:58 2018DEPLOYEDmysql-0.3.5default

    8、卸載安裝的軟件包

[root@master ~]# helm delete mysql1
release "mysql1" deleted

    9、總結

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

    10、helm把安裝包會默認下載到當前用戶的家目錄下

    在我們install或者fetch時,都會把安裝包下載到當前用戶的家目錄下:

[root@master archive]# ll /root/.helm/cache/archive/
total 8
-rw-r--r-- 1 root root 5536 Oct 17 04:50 mysql-0.3.5.tgz

    11、修改chart里面的values.yaml,實現個性化安裝

[root@master archive]# cd /root/.helm/cache/archive
[root@master archive]# ls
mysql-0.3.5.tgz
[root@master archive]# tar -xvf mysql-0.3.5.tgz
[root@master archive]# tree  mysql
mysql
├── Chart.yaml #描述chart的
├── README.md
├── templates #模板文件
│   ├── configmap.yaml
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── NOTES.txt
│   ├── pvc.yaml
│   ├── secrets.yaml
│   └── svc.yaml
└── values.yaml  #自己修改這個文件的相應參數,可以自定義安裝包的內容

      如果我們有個性化的安裝需求,我們可以改values.yaml文件的內容,這個文件放在哪個位置都行,改完后:

[root@master mysql]# helm install --name mysql1 -f /root/values.yaml stable/mysql

  注:--name指定的是自定義release名字。   

    12、查看部署后的提示信息

    用helm部署完應用包后,會有很多提示信息,這些提示信息非常重要,但是如果你沒有及時記錄,有沒有辦法再查看呢。答案是有的,通過以下辦法找到他們:

[root@master ~]# helm status mysql1
LAST DEPLOYED: Wed Oct 17 04:50:58 2018
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1/Service
NAME          TYPE       CLUSTER-IP     EXTERNAL-IP  PORT(S)   AGE
mysql1-mysql  ClusterIP  10.110.40.169  <none>       3306/TCP  15h
==> v1beta1/Deployment
NAME          DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGE
mysql1-mysql  1        1        1           0          15h
==> v1/Pod(related)
NAME                           READY  STATUS   RESTARTS  AGE
mysql1-mysql-7b7f7ffcd5-vrs9d  0/1    Pending  0         15h
==> v1/Secret
NAME          TYPE    DATA  AGE
mysql1-mysql  Opaque  2     15h
==> v1/PersistentVolumeClaim
NAME          STATUS   VOLUME  CAPACITY  ACCESS MODES  STORAGECLASS  AGE
mysql1-mysql  Pending  15h
NOTES:
MySQL can be accessed via port 3306 on the following DNS name from within your cluster:
mysql1-mysql.default.svc.cluster.local
To get your root password run:
    MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace default mysql1-mysql -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo)
To connect to your database:
1. Run an Ubuntu pod that you can use as a client:
    kubectl run -i --tty ubuntu --image=ubuntu:16.04 --restart=Never -- bash -il
2. Install the mysql client:
    $ apt-get update && apt-get install mysql-client -y
3. Connect using the mysql cli, then provide your password:
    $ mysql -h mysql1-mysql -p
To connect to your database directly from outside the K8s cluster:
    MYSQL_HOST=127.0.0.1
    MYSQL_PORT=3306
    # Execute the following commands to route the connection:
    export POD_NAME=$(kubectl get pods --namespace default -l "app=mysql1-mysql" -o jsonpath="{.items[0].metadata.name}")
    kubectl port-forward $POD_NAME 3306:3306
    mysql -h ${MYSQL_HOST} -P${MYSQL_PORT} -u root -p${MYSQL_ROOT_PASSWORD}

  創建可用自定義chart 

    1、下載倉庫中的一個chart到本地

[root@master helm]# helm fetch stable/mysql
[root@master helm]# ls
mysql-0.3.5.tgz
[root@master helm]#

    2、查看chart的目錄結構

[root@master helm]# tree mysql
mysql
├── Chart.yaml #做個整個chart初始化的,用來對外表明自己的元數據信息,記錄當前chart的版本、名稱、維護者、內部的維護信息等
├── README.md #這是markdown格式的文本文件,這是個自述文件,說明這個chart是怎么開發等內容的介紹
|-----requirements.yaml:當前chart是否依賴其他chart,這個文件是可選的。
├── templates #所有的模板文件,這些文件是可以復用的,要熟悉go語言才好
│   ├── configmap.yaml
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── NOTES.txt #提供給用戶的最終顯示信息
│   ├── pvc.yaml
│   ├── secrets.yaml
│   └── svc.yaml
└── values.yaml  #主要為template模板中自定義屬性設置默認值的
|------ charts/ #里面放置的是當前chart所要依賴的其他chart,這個是可選的
1 directory, 10 files

    可用查看chart官方手冊,來了解每項目的含義:

https://docs.helm.sh/developing_charts/#charts

docker中如何使用helm

  3、用helm生成基礎chart示例性文件

[root@master helm]# helm create myapp
Creating myapp

注:myapp是chart的名字

[root@master helm]# tree myapp/
myapp/
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── ingress.yaml
│   ├── NOTES.txt
│   └── service.yaml
└── values.yaml

   4、做語法檢查

[root@master helm]# ls
myapp
[root@master helm]# helm lint myapp
==> Linting myapp
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, no failures

    5、打包

[root@master helm]# ls
myapp  
[root@master helm]# helm package myapp/
Successfully packaged chart and saved it to: /root/helm/myapp-0.1.0.tgz
  
[root@master helm]# ls
myapp  myapp-0.1.0.tgz

    看到把myapp打包成了myapp-0.1.0.tgz

    6、啟動8879倉庫的服務

[root@master helm]# helm repo list
NAME  URL                                                   
local http://127.0.0.1:8879/charts                          
stablehttps://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
[root@master helm]# helm serve
Regenerating index. This may take a moment.
Now serving you on 127.0.0.1:8879

  7、查看local倉庫里面是否有我們創創建的chart包

[root@master ~]# helm search myapp
NAME       CHART VERSIONAPP VERSIONDESCRIPTION                
local/myapp0.1.0        1.0        A Helm chart for Kubernetes

  8、部署我們自定義的chart

[root@master ~]# helm install --name myapp1 local/myapp

  9、刪除我們部署的chart

[root@master ~]# helm delete --purge myapp1
release "myapp1" deleted

關于“docker中如何使用helm”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长阳| 兴化市| 许昌县| 天津市| 巴林左旗| 阿拉善右旗| 乌兰浩特市| 临夏县| 渝中区| 岢岚县| 三原县| 合山市| 吉林省| 日喀则市| 陆丰市| 卫辉市| 潞西市| 瑞金市| 洛南县| 西乡县| 柯坪县| 清原| 阿克陶县| 利川市| 新兴县| 镇远县| 棋牌| 塘沽区| 库尔勒市| 尚志市| 柞水县| 云梦县| 连江县| 康乐县| 常宁市| 抚宁县| 廉江市| 桐庐县| 秀山| 彭山县| 安平县|