使用Kubectl部署应用
目錄??
使用Kubectl部署應(yīng)用?
Kubectl部署流程?
部署一個(gè)簡(jiǎn)單的Demo網(wǎng)站?
使用Kubectl部署應(yīng)用
一旦運(yùn)行了Kubernetes集群,就可以在其上部署容器化應(yīng)用程序。因此在開始之前,我們需要先確保集群已經(jīng)準(zhǔn)備就緒,無(wú)論是使用Minikube還是kubeadm創(chuàng)建的集群。
接下來(lái),我們講述使用Deployment(部署)對(duì)象來(lái)部署一個(gè)簡(jiǎn)單網(wǎng)站。
Kubectl部署流程
使用Kubectl的部署流程如下所示:
接下來(lái)我們根據(jù)這個(gè)流程部署一個(gè)簡(jiǎn)單的Demo網(wǎng)站。
部署一個(gè)簡(jiǎn)單的Demo網(wǎng)站
這里,我們可以通過(guò)創(chuàng)建Kubernetes Deployment對(duì)象來(lái)運(yùn)行應(yīng)用程序。那么我們需要編寫一個(gè)YAML文件來(lái)定義Deployment對(duì)象。
1.編寫Deployment對(duì)象的配置文件
在開始之前,我們需要對(duì)Deployment對(duì)象的配置有初步的了解。官方介紹文檔如下所示:
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.15/#deployment-v1-apps
根據(jù)官方標(biāo)準(zhǔn),我們定義了一個(gè)簡(jiǎn)單的Deployment配置:
apiVersion: apps/v1 #API對(duì)象版本,可通過(guò)“kubectl api-versions”命令查看
kind: Deployment #資源類型,區(qū)分大小寫,可通過(guò)“kubectl api-resources”命令查看,這里使用Deployment對(duì)象
metadata: #標(biāo)準(zhǔn)的元數(shù)據(jù)
?name: demo-deployment ?#當(dāng)前Deployment對(duì)象名稱,同一個(gè)命名空間下必須唯一
spec: #部署規(guī)范(目標(biāo)),Deployment控制器會(huì)根據(jù)此模板調(diào)整當(dāng)前Pod到最終的期望狀態(tài)
replicas: 5 # Pod數(shù)量,這里指運(yùn)行5個(gè)Pod selector: #選擇器,其定義了Deployment控制器如何找到要管理的Pod matchLabels: #匹配標(biāo)簽 app: demo #待匹配的標(biāo)簽鍵值對(duì) template: # Pod模板定義 metadata: #標(biāo)準(zhǔn)的元數(shù)據(jù) labels: #Pod標(biāo)簽 app: demo #定義Pod標(biāo)簽,由鍵值對(duì)組成 spec: #Pod規(guī)范 containers: #容器列表,Pod中至少有一個(gè)容器 - name: demo #容器名稱 image: microsoft/dotnet-samples:aspnetapp #鏡像地址 ports: #端口列表 - containerPort: 80 #設(shè)置容器端口如上面定義所示,我們定義了一個(gè)簡(jiǎn)單的部署示例,它將使用創(chuàng)建一個(gè)ReplicaSet對(duì)象以利用復(fù)制控制器創(chuàng)建5個(gè)Pod來(lái)運(yùn)行“dotnet-samples”。
2.使用“kubectl create”執(zhí)行資源創(chuàng)建
YAML文件準(zhǔn)備好了,接下來(lái)我們來(lái)執(zhí)行創(chuàng)建:
kubectl create -f deployment-demo.yaml結(jié)合配置,這里有幾個(gè)重點(diǎn)說(shuō)明一下:
如上面配置所示,部署名稱為“demo-deployment”。
此部署對(duì)象將創(chuàng)建5個(gè)復(fù)制的Pod,由replicas字段決定。如上圖所示該部署創(chuàng)建了5個(gè)Pod。
selector字段定義了Deployment控制器如何找到要管理的Pod,所以標(biāo)簽的鍵值對(duì)一定不能出錯(cuò)。
template字段則定義了Pod模板,其子字段labels定義了Pod 的標(biāo)簽,spec字段則定義了容器。
執(zhí)行創(chuàng)建部署之后,我們可以通過(guò)命令“kubectl get Deployment demo-deployment”來(lái)檢查部署對(duì)象是否已經(jīng)創(chuàng)建,部署是否已經(jīng)完成:
如上圖所示,上述字段分別代表:
READY代表是否已就緒,左側(cè)數(shù)字表示當(dāng)前已運(yùn)行的副本數(shù),右側(cè)表示所需的副本數(shù)。
UP-TO-DATE表示已更新已實(shí)現(xiàn)預(yù)期狀態(tài)的副本數(shù)。
AVAILABLE則表示用戶可以使用的應(yīng)用程序副本數(shù)。
AGE表示應(yīng)用已運(yùn)行的時(shí)間。
通用的,我們可以運(yùn)行以下命令來(lái)查看副本集(ReplicaSet)對(duì)象:
kubectl get ReplicaSets -lapp=demo通過(guò)上圖可知,我們創(chuàng)建Deployment對(duì)象的過(guò)程實(shí)際上就是生成對(duì)應(yīng)的副本集對(duì)象(Replica Set)并完成Pod副本的創(chuàng)建過(guò)程。
值得注意的是,副本集的名稱格式為[部署名稱]-[隨機(jī)字符串]。隨機(jī)字符串是隨機(jī)生成的,并使用pod-template-hash作為種子。如何查看pod-template-hash呢?使用如下命令即可:
kubectl get pods -lapp=demo --show-labels如上圖所示,5個(gè)Pod已經(jīng)部署完成。
往期內(nèi)容
Docker+ Kubernetes已成為云計(jì)算的主流(二十六)
容器化之后如何節(jié)省云端成本?(二十七)
了解Kubernetes主體架構(gòu)(二十八)
使用Minikube部署本地Kubernetes集群(二十九)
使用kubectl管理k8s集群(三十)
使用Kubeadm創(chuàng)建k8s集群之部署規(guī)劃(三十一)
使用Kubeadm創(chuàng)建k8s集群之節(jié)點(diǎn)部署(三十二)
集群故障處理之處理思路以及健康狀態(tài)檢查(三十三)
集群故障處理之處理思路以及聽診三板斧(三十四)
使用WebDeploy部署遠(yuǎn)程IIS網(wǎng)站
總結(jié)
以上是生活随笔為你收集整理的使用Kubectl部署应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Stack Overflow引入CROK
- 下一篇: Mercurial黄昏,Bitbucke