Kubernetes系列之Helm介绍篇
本次系列使用的所需部署包版本都使用的目前最新的或最新穩(wěn)定版,安裝包地址請(qǐng)到公眾號(hào)內(nèi)回復(fù)【K8s實(shí)戰(zhàn)】獲取
介紹
Helm 是?Deis?開發(fā)的一個(gè)用于 Kubernetes 應(yīng)用的包管理工具,主要用來(lái)管理 Charts。有點(diǎn)類似于 Ubuntu 中的 APT 或 CentOS 中的 YUM。Helm Chart 是用來(lái)封裝 Kubernetes 原生應(yīng)用程序的一系列 YAML 文件??梢栽谀悴渴饝?yīng)用的時(shí)候自定義應(yīng)用程序的一些 Metadata,以便于應(yīng)用程序的分發(fā)。對(duì)于應(yīng)用發(fā)布者而言,可以通過(guò) Helm 打包應(yīng)用、管理應(yīng)用依賴關(guān)系、管理應(yīng)用版本并發(fā)布應(yīng)用到軟件倉(cāng)庫(kù)。對(duì)于使用者而言,使用 Helm 后不用需要編寫復(fù)雜的應(yīng)用部署文件,可以以簡(jiǎn)單的方式在 Kubernetes 上查找、安裝、升級(jí)、回滾、卸載應(yīng)用程序。
Helm 工作原理
這張圖描述了 Helm 的幾個(gè)關(guān)鍵組件 Helm(客戶端)、Tiller(服務(wù)器)、Repository(Chart 軟件倉(cāng)庫(kù))、Chart(軟件包)之間的關(guān)系。
下載解壓
[root@master-01?~]# mkdir /opt/helm&&cd /opt/helm[root@master-01?helm]#wget https://storage.googleapis.com/kubernetes-helm/helm-v2.12.3-linux-amd64.tar.gz[root@master-01?helm]# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.12.3-linux-amd64.tar.gz[root@master-01?helm]# tar xf helm-v2.12.3-linux-amd64.tar.gz?[root@master-01?helm]# cd linux-amd64/[root@master-01?linux-amd64]# mv helm /usr/bin/[root@master-01?linux-amd64]# helm versionClient: &version.Version{SemVer:"v2.12.3", GitCommit:"79d07943b03aea2b76c12644b4b54733bc5958d6", GitTreeState:"clean"}Error: could?not?find tiller
創(chuàng)建RBAC角色
創(chuàng)建 Kubernetes 的服務(wù)帳號(hào)和綁定角色
[root@master-01 helm]#kubectl create serviceaccount --namespace kube-system tiller[root@master-01 helm]#kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller為 Tiller 設(shè)置帳號(hào)
使用 kubectl patch 更新 API 對(duì)象
[root@master-01?helm]# kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'deployment.extensions?"tiller-deploy"?patched查看是否授權(quán)成功
[root@master-01?helm]# kubectl?get?deploy --namespace kube-system?tiller-deploy --output yaml|grep?serviceAccountserviceAccount:?tillerserviceAccountName: tiller初始化Tiller
tiller是以Deployment部署在k8s集群中的,使用helm init就可以直接安裝
因?yàn)閠iller默認(rèn)是去storage.googleapis.com拉鏡像,所以我們要改成國(guó)內(nèi)源?
[root@master-01?]# helm initCreating?/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?Error: Looks like?"https://kubernetes-charts.storage.googleapis.com"?is?not?a valid chart repository?or?cannot be reached: Get https://kubernetes-charts.storage.googleapis.com/index.yaml: dial tcp?216.58.200.16:443: connect: connection refused更換國(guó)內(nèi)源
[root@master-01?~]# helm repo?add?stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts"stable"?has?been added?to?your repositories再次初始化
[root@master-01?~]# helm init$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.To prevent?this, run `helm init` with the --tiller-tls-verify flag.For more information?on?securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installationHappy Helming!查看pod狀態(tài)
[root@master-02?~]# kubectl -nkube-system?get?po?-owideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATEScoredns-5d668bd598-dt4qm?1/1?Running?0?5h1m?172.17.79.3?192.168.209.132?<none>?<none>coredns-5d668bd598-f5g96?1/1?Running?1?18h?172.17.44.2?192.168.209.131?<none>?<none>kubernetes-dashboard-cb55bd5bd-gc84g?1/1?Running?0?3h25m?172.17.47.2?192.168.209.133?<none>?<none>tiller-deploy-58cf8bbc46-ss5nq?0/1?ImagePullBackOff?3?79s?172.17.44.4?192.168.209.131?<none>?<none>解決無(wú)法 pull tiller
默認(rèn)鏡像用的是gcr.io/kubernetes-helm/tiller:v2.12.3,國(guó)內(nèi)無(wú)法下載,需要替換成國(guó)內(nèi)地址
修改tiller pod 鏡像地址為registry.cn-beijing.aliyuncs.com/minminmsn/tiller:v2.12.3
[root@master-01?helm]# kubectl -nkube-system?edit?deploy tiller-deploydeployment.extensions/tiller-deploy edited[root@master-02?~]# kubectl -nkube-system?get?po?-owideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATEScoredns-5d668bd598-dt4qm?1/1?Running?0?5h3m?172.17.79.3?192.168.209.132?<none>?<none>coredns-5d668bd598-f5g96?1/1?Running?1?18h?172.17.44.2?192.168.209.131?<none>?<none>kubernetes-dashboard-cb55bd5bd-gc84g?1/1?Running?0?3h27m?172.17.47.2?192.168.209.133?<none>?<none>tiller-deploy-5bd5fcdbbd-zdrnj?1/1?Running?0?44s?172.17.58.2?192.168.209.130?<none>?<none>結(jié)果
[root@master-01 ~]#?helm?versionClient: &version.Version{SemVer:"v2.12.3", GitCommit:"eecf22f77df5f65c823aacd2dbd30ae6c65f186e", GitTreeState:"clean"}Server: &version.Version{SemVer:"v2.12.3", GitCommit:"eecf22f77df5f65c823aacd2dbd30ae6c65f186e", GitTreeState:"clean"}示例演示
新建一個(gè)helm chart
[root@master-01?helm]# helm create mychartCreating mychart該命令創(chuàng)建了一個(gè) mychart 目錄,該目錄結(jié)構(gòu)如下所示。這里我們主要關(guān)注目錄中的 Chart.yaml、values.yaml、NOTES.txt 和 Templates 目錄。
[root@master-01?helm]# tree mychart/mychart/├── charts├── Chart.yaml├── templates│ ├── deployment.yaml│ ├── _helpers.tpl│ ├── ingress.yaml│ ├── NOTES.txt│ ├── service.yaml│ └── tests│ └── test-connection.yaml└──?values.yaml3?directories,?8?filesChart.yaml 用于描述這個(gè) Chart的相關(guān)信息,包括名字、描述信息以及版本等。
values.yaml 用于存儲(chǔ) templates 目錄中模板文件中用到變量的值。
NOTES.txt 用于介紹 Chart 部署后的一些信息,例如:如何使用這個(gè) Chart、列出缺省的設(shè)置等。
Templates 目錄下是 YAML 文件的模板,該模板文件遵循 Go template 語(yǔ)法。
Templates 目錄下 YAML 文件模板的值默認(rèn)都是在 values.yaml 里定義的,比如在 deployment.yaml 中定義的容器鏡像。
image:?"{{ .Values.image.repository }}:{{ .Values.image.tag }}"其中的 .Values.image.repository 的值就是在 values.yaml 里定義的 nginx,.Values.image.tag 的值就是 stable。
[root@master-01?helm]#cat mychart/values.yaml|grep?repositoryrepository: nginx[root@master-01?helm]#cat mychart/values.yaml|grep?tagtag:?stable以上兩個(gè)變量值是在 create chart 的時(shí)候就自動(dòng)生成的默認(rèn)值,你可以根據(jù)實(shí)際情況進(jìn)行修改。
修改應(yīng)用介紹信息
[root@master-01?helm]#?cat?mychart/Chart.yamlapiVersion: v1appVersion:?"1.0"description: A Helm chart?for?Kubernetesname: mychartversion:?0.1.0修改應(yīng)用具體編排信息
[root@master-01?helm]#?cat?mychart/values.yaml?# Default?values?for?mychart.# This?is?a?YAML-formatted?file.# Declare variables?to?be?passed into your templates.replicaCount:?1image:repository: nginxtag:?stablepullPolicy: IfNotPresentnameOverride:?""fullnameOverride:?""service:type: ClusterIPport:?80ingress:enabled: falseannotations:?{}# kubernetes.io/ingress.class:?nginx# kubernetes.io/tls-acme:?"true"paths:?[]hosts:- chart-example.localtls:?[]# - secretName: chart-example-tls# hosts:# - chart-example.localresources:?{}# We usually recommend not?to?specify default resources?and?to?leave this?as?a?conscious# choice?for?the user. This also increases chances charts run?on?environments with little# resources, such?as?Minikube. If you?do?want?to?specify resources, uncomment the following# lines, adjust them?as?necessary,?and?remove?the curly braces after?'resources:'.# limits:# cpu:?100m# memory:?128Mi# requests:# cpu:?100m# memory:?128MinodeSelector: {}tolerations:?[]affinity: {}檢查配置語(yǔ)法
[root@master-01?helm]# helm lint mychart==>?Linting mychart[INFO] Chart.yaml: icon?is?recommended1?chart(s) linted,?no?failures如果文件格式錯(cuò)誤,可以根據(jù)提示進(jìn)行修改。
打包應(yīng)用
[root@master-01?helm]# helm package mychartSuccessfully packaged chart?and?saved it?to: /opt/helm/mychart-0.1.0.tgzmychart 目錄會(huì)被打包為一個(gè) mychart-0.1.0.tgz 格式的壓縮包,該壓縮包會(huì)被放到當(dāng)前目錄下,并同時(shí)被保存到了 Helm 的本地缺省倉(cāng)庫(kù)目錄中。
查看本地倉(cāng)庫(kù)
[root@master-01?helm]# helm repo?listNAME URL?stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/chartslocal http://127.0.0.1:8879/charts啟動(dòng)本地倉(cāng)庫(kù)
[root@master-01 helm]#?helm?serve?&[1]?25758[root@master-01 helm]#?Regenerating?index.?This?may?take?a?moment.Now?serving?you?on?127.0.0.1:8879默認(rèn)情況只監(jiān)聽127.0.0.1,如果你要綁定到其它網(wǎng)絡(luò)接口,可使用以下命令:
[root@master-01 helm]#helm?serve?--address?192.168.209.130:8879?&部署應(yīng)用
[root@master-01?helm]# helm install local/mychart --name test-01NAME: test-01LAST DEPLOYED: Tue Mar?12?16:38:04?2019NAMESPACE:?defaultSTATUS: DEPLOYEDRESOURCES:==>?v1/ServiceNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEtest-01-mychart ClusterIP?10.254.105.20?<none>?80/TCP?2s==>?v1/DeploymentNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEtest-01-mychart?1?0?0?0?1s==>?v1/Pod(related)NAME READY STATUS RESTARTS AGEtest-01-mychart-7d84ff968f-76d2l?0/1?Pending?0?1sNOTES:1.?Get the application URL?by?running these commands:export?POD_NAME=$(kubectl get pods --namespace?default?-l?"app.kubernetes.io/name=mychart,app.kubernetes.io/instance=test-01"?-o jsonpath="{.items[0].metadata.name}")echo?"Visit http://127.0.0.1:8080 to use your application"kubectl port-forward $POD_NAME?8080:80完成部署后,現(xiàn)在 Nginx 就已經(jīng)部署到 Kubernetes 集群上。在本地主機(jī)上執(zhí)行提示中的命令后,就可在本機(jī)訪問(wèn)到該 Nginx 實(shí)例。
[root@master-01?helm]#?export?POD_NAME=$(kubectl?get?pods --namespace?default?-l?"app.kubernetes.io/name=mychart,app.kubernetes.io/instance=test-1"?-o jsonpath="{.items[0].metadata.name}")[root@master-01?helm]# echo?"Visit http://127.0.0.1:8080 to use your application"Visit http://127.0.0.1:8080 to use your application[root@master-01?helm]# kubectl port-forward $POD_NAME?8081:80Forwarding?from?127.0.0.1:8081?->?80Forwarding?from?[::1]:8081?->?80在本機(jī)訪問(wèn)
[root@master-01 ~]# curl 127.0.0.1:8081<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style>body?{width:?35em;margin:?0?autofont-family: Tahoma, Verdana, Arial, sans-serif;}......使用helm ls 可以看到已經(jīng)部署的Release和對(duì)應(yīng)的Chart
[root@master-01 ~]#?helm?lsNAME?REVISION?UPDATED?STATUS?CHART?APP?VERSION?NAMESPACEtest-1?1?Tue?Mar?12 18:19:41?2019?DEPLOYED?mychart-0.1.0?1.0?default使用helm status可以看到Release狀態(tài)
[root@master-01?~]# helm status test-1LAST DEPLOYED: Tue Mar?12?18:19:41?2019NAMESPACE:?defaultSTATUS: DEPLOYEDRESOURCES:==>?v1/ServiceNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEtest-1-mychart ClusterIP?10.254.184.247?<none>?80/TCP?7m17s==>?v1/DeploymentNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEtest-1-mychart?1?1?1?1?7m17s==>?v1/Pod(related)NAME READY STATUS RESTARTS AGEtest-1-mychart-85459fd5cd-z6twn?1/1?Running?0?7m16sNOTES:1.?Get the application URL?by?running these commands:export?POD_NAME=$(kubectl get pods --namespace?default?-l?"app.kubernetes.io/name=mychart,app.kubernetes.io/instance=test-1"?-o jsonpath="{.items[0].metadata.name}")echo?"Visit http://127.0.0.1:8080 to use your application"kubectl port-forward $POD_NAME?8080:80升級(jí)和回退一個(gè)應(yīng)用
從上面 helm ls 輸出的結(jié)果中我們可以看到有一個(gè) Revision(更改歷史)字段,該字段用于表示某一個(gè) Release 被更新的次數(shù),我們可以用該特性對(duì)已部署的 Release 進(jìn)行回退
修改 Chart.yaml 文件
將版本號(hào)從 0.1.0 修改為 0.2.0, 然后使用 helm package 命令打包并發(fā)布到本地倉(cāng)庫(kù)。
[root@master-01?helm]#?cat?mychart/Chart.yaml?apiVersion: v1appVersion:?"1.0"description: A Helm chart?for?Kubernetesname: mychartversion:?0.2.0[root@master-01?helm]# helm package mychartSuccessfully packaged chart?and?saved it?to: /opt/helm/mychart-0.2.0.tgz查看本地倉(cāng)庫(kù)Chart信息
可以看到本地有兩個(gè)版本了
[root@master-01 ~]# helm search mychart -lNAME CHART VERSIONAPP VERSIONDESCRIPTION?local/mychart0.2.0 1.0 A Helm chart?for?Kuberneteslocal/mychart0.1.0 1.0 A Helm chart?for?Kubernetes升級(jí)應(yīng)用
現(xiàn)在用 helm upgrade 命令將已部署的 mike-test 升級(jí)到新版本。你可以通過(guò) --version 參數(shù)指定需要升級(jí)的版本號(hào),如果沒(méi)有指定版本號(hào),則缺省使用最新版本。
[root@master-01?~]# helm upgrade test-1 local/mychartRelease?"test-1"?has been upgraded. Happy Helming!LAST DEPLOYED: Tue Mar?12?18:33:18?2019NAMESPACE:?defaultSTATUS: DEPLOYEDRESOURCES:==>?v1/Pod(related)NAME READY STATUS RESTARTS AGEtest-1-mychart-85459fd5cd-z6twn?1/1?Running?0?13m==>?v1/ServiceNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEtest-1-mychart ClusterIP?10.254.184.247?<none>?80/TCP?13m==>?v1/DeploymentNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEtest-1-mychart?1?1?1?1?13mNOTES:1.?Get the application URL?by?running these commands:export?POD_NAME=$(kubectl get pods --namespace?default?-l?"app.kubernetes.io/name=mychart,app.kubernetes.io/instance=test-1"?-o jsonpath="{.items[0].metadata.name}")echo?"Visit http://127.0.0.1:8080 to use your application"kubectl port-forward $POD_NAME?8080:80完成后,可以看到已部署的 mike-test 被升級(jí)到 0.2.0 版本。
[root@master-01 ~]#?helm?lsNAME?REVISIONUPDATED?STATUS?CHART?APP?VERSIONNAMESPACEtest-1?2?Tue?Mar?12 18:33:18?2019DEPLOYEDmychart-0.2.01.0?default回退應(yīng)用
如果更新后的程序由于某些原因運(yùn)行有問(wèn)題,需要回退到舊版本的應(yīng)用。首先我們可以使用 helm history 命令查看一個(gè) Release 的所有變更記錄。
[root@master-01 ~]#?helm?history?test-1REVISIONUPDATED?STATUS?CHART?DESCRIPTION?1?Tue?Mar?12 18:19:41?2019SUPERSEDEDmychart-0.1.0Install?complete2?Tue?Mar?12 18:33:18?2019DEPLOYED?mychart-0.2.0Upgrade?complete我們可以使用下面的命令對(duì)指定的應(yīng)用進(jìn)行回退。
[root@master-01?~]# helm rollback test-1 1Rollback was a success! Happy Helming!我們使用 helm ls 和 helm history 命令都可以看到 mychart 的版本已經(jīng)回退到 0.1.0版本。
[root@master-01 ~]#?helm?lsNAME?REVISIONUPDATED?STATUS?CHART?APP?VERSIONNAMESPACEtest-1?3?Tue?Mar?12 18:35:52?2019DEPLOYEDmychart-0.1.01.0?default?[root@master-01 ~]#?helm?history?test-1REVISIONUPDATED?STATUS?CHART?DESCRIPTION?1?Tue?Mar?12 18:19:41?2019SUPERSEDEDmychart-0.1.0Install?complete2?Tue?Mar?12 18:33:18?2019SUPERSEDEDmychart-0.2.0Upgrade?complete3?Tue?Mar?12 18:35:52?2019DEPLOYED?mychart-0.1.0Rollback?to?1刪除應(yīng)用
如果需要?jiǎng)h除一個(gè)已部署的 Release,可以利用 helm delete 命令來(lái)完成刪除。
[root@master-01?~]# helm delete test-1release?"test-1"?deleted確認(rèn)應(yīng)用是否刪除,該應(yīng)用已被標(biāo)記為 DELETED 狀態(tài)。
[root@master-01 ~]#?helm?ls?-a?test-1NAME?REVISIONUPDATED?STATUSCHART?APP?VERSIONNAMESPACEtest-1?3?Tue?Mar?12 18:35:52?2019DELETEDmychart-0.1.01.0?default也可以使用 --deleted 參數(shù)來(lái)列出已經(jīng)刪除的 Release
[root@master-01 ~]#?helm?ls?--deletedNAME?REVISIONUPDATED?STATUSCHART?APP?VERSIONNAMESPACEtest-1?3?Tue?Mar?12 18:35:52?2019DELETEDmychart-0.1.01.0?default從上面的結(jié)果也可以看出,默認(rèn)情況下已經(jīng)刪除的 Release 只是將狀態(tài)標(biāo)識(shí)為 DELETED 了 ,但該 Release 的歷史信息還是繼續(xù)被保存的。
[root@master-01 ~]#?helm?hist?test-1REVISIONUPDATED?STATUS?CHART?DESCRIPTION?1?Tue?Mar?12 18:19:41?2019SUPERSEDEDmychart-0.1.0Install?complete?2?Tue?Mar?12 18:33:18?2019SUPERSEDEDmychart-0.2.0Upgrade?complete?3?Tue?Mar?12 18:35:52?2019DELETED?mychart-0.1.0Deletion?complete如果要移除指定 Release 所有相關(guān)的 Kubernetes 資源和 Release 的歷史記錄,可以用如下命令:
[root@master-01?~]# helm delete --purge test-1release?"test-1"?deleted再次查看已刪除的 Release,已經(jīng)無(wú)法找到相關(guān)信息
[root@master-01?~]# helm hist test-1Error: release:?"test-1"?not?found[root@master-01?~]# helm ls[root@master-01?~]# helm ls --deleted[root@master-01?~]# helm ls -a test-1部署一個(gè)應(yīng)用示例
部署 Wordpress
這里以一個(gè)典型的三層應(yīng)用 Wordpress 為例,包括 MySQL、PHP 和 Apache。由于測(cè)試環(huán)境暫時(shí)沒(méi)有可用的 PersistentVolume(持久卷,簡(jiǎn)稱 PV),這里暫時(shí)將其關(guān)閉。關(guān)于 Persistent Volumes 的相關(guān)信息我們會(huì)在后續(xù)的相關(guān)文章進(jìn)行講解。
[root@master-01?helm]# helm install --name wordpress-test --set?"persistence.enabled=false,mariadb.persistence.enabled=false,serviceType=NodePort"?stable/wordpressNAME: wordpress-testLAST DEPLOYED: Tue Mar?12?19:13:45?2019NAMESPACE:?defaultSTATUS: DEPLOYEDRESOURCES:==> v1beta1/DeploymentNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEwordpress-test-mariadb?1?1?1?0?3swordpress-test-wordpress?1?1?1?0?3s==> v1/Pod(related)NAME READY STATUS RESTARTS AGEwordpress-test-mariadb-59cfd7c475-27chl?0/1?Pending?0?3swordpress-test-wordpress-6fc9b7cc7f-dt7fq?0/1?ContainerCreating?0?3s==> v1/SecretNAME TYPE DATA AGEwordpress-test-mariadb Opaque?2?4swordpress-test-wordpress Opaque?2?4s==> v1/ConfigMapNAME DATA AGEwordpress-test-mariadb?1?4swordpress-test-mariadb-tests?1?4s==> v1/ServiceNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEwordpress-test-mariadb ClusterIP?10.254.153.229?<none>?3306/TCP?4swordpress-test-wordpress NodePort?10.254.154.132?<none>?80:43629/TCP,443:34204/TCP?3sNOTES:1.?Get the WordPress URL:Or running:export?NODE_PORT=$(kubectl?get?--namespace?default?-o jsonpath="{.spec.ports[0].nodePort}"?services wordpress-test-wordpress)export?NODE_IP=$(kubectl?get?nodes --namespace?default?-o jsonpath="{.items[0].status.addresses[0].address}")echo http://$NODE_IP:$NODE_PORT/admin2.?Login?with?the following credentials to see your blogecho Username: userecho Password: $(kubectl?get?secret --namespace?default?wordpress-test-wordpress -o jsonpath="{.data.wordpress-password}"?| base64 --decode)部署完成后,用以上提示信息生成訪問(wèn)地址和用戶名密碼
[root@master-01?helm]#?export?NODE_PORT=$(kubectl?get?--namespace?default?-o jsonpath="{.spec.ports[0].nodePort}"?services wordpress-test-wordpress)DE_IP:$NODE_PORT/admin[root@master-01?helm]#?export?NODE_IP=$(kubectl?get?nodes --namespace?default?-o jsonpath="{.items[0].status.addresses[0].address}")[root@master-01?helm]# echo http://$NODE_IP:$NODE_PORT/adminhttp://192.168.209.130:43629/admin[root@master-01?helm]# echo Username: userUsername: user[root@master-01?helm]# echo Password: $(kubectl?get?secret --namespace?default?wordpress-test-wordpress -o jsonpath="{.data.wordpress-password}"?| base64 --decode)Password: aOTe96YaSP查看服務(wù)狀態(tài)
[root@master-01?helm]# kubectl get podNAME READY STATUS RESTARTS AGEdnstools-6b77cc4988-b5smz?1/1?Running?0?23hnginx-7899755b7-7s8fl?1/1?Running?0?24htests-1-mychart-7d84ff968f-76d2l?1/1?Running?0?170mwordpress-test-mariadb-59cfd7c475-27chl?1/1?Running?1?14mwordpress-test-wordpress-6fc9b7cc7f-dt7fq?1/1?Running?4?14m訪問(wèn)測(cè)試
好了,進(jìn)行到這 hlem基本使用就結(jié)束了,敬請(qǐng)期待后續(xù)分享,謝謝!
往期文章一覽
1、Kubernetes集群搭建之系統(tǒng)初始化配置篇
2、Kubernetes集群搭建之企業(yè)級(jí)環(huán)境中基于Harbor搭建自己的私有倉(cāng)庫(kù)
3、Kubernetes集群搭建之Etcd集群配置篇
4、Kubernetes集群搭建之CNI-Flanneld部署篇
5、Kubernetes集群搭建之Master配置篇
6、Kubernetes系列之Coredns and Dashboard介紹篇
7、Kubernetes系列之監(jiān)控Metres-server實(shí)戰(zhàn)篇
END
如果您覺(jué)得不錯(cuò),請(qǐng)別忘了轉(zhuǎn)發(fā)、分享、點(diǎn)贊讓更多的人去學(xué)習(xí), 您的舉手之勞,就是對(duì)小編最好的支持,非常感謝!
轉(zhuǎn)載于:https://www.cnblogs.com/guigujun/p/10550256.html
總結(jié)
以上是生活随笔為你收集整理的Kubernetes系列之Helm介绍篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 镜像加法器的基本原理及电路结构
- 下一篇: RS-485半双工延时问题