您好,登錄后才能下訂單哦!
現(xiàn)如今,Kubernetes已經(jīng)完全改變了軟件開發(fā)方式。Kubernetes作為一個(gè)管理容器化工作負(fù)載及服務(wù)的開源平臺(tái),其擁有可移植、可擴(kuò)展的特性,并促進(jìn)了聲明式配置和自動(dòng)化,同時(shí)它還證明了自己是管理復(fù)雜微服務(wù)的主要參與者。而Kubernetes之所以能夠在業(yè)界被廣泛采用,究其原因是Kubernetes迎合了以下需求:
企業(yè)想要在不斷地增長(zhǎng)的同時(shí)維持低成本
DevOps想要一個(gè)可以大規(guī)模運(yùn)行應(yīng)用程序的穩(wěn)定平臺(tái)
但是,你是否考慮過如何在使用實(shí)際需要的資源的同時(shí)獲得強(qiáng)大的容器編排平臺(tái)?最佳資源利用的關(guān)鍵是知道需要擴(kuò)展什么應(yīng)用程序以及何時(shí)需要擴(kuò)展應(yīng)用程序。因此,在本文中,我們將討論和學(xué)習(xí)如何擴(kuò)展Kubernetes容器,并且我們將特別關(guān)注兩類服務(wù):kubectl和Horizontal Pod Autoscaler(HPA)。
在絕大部分情況下和Kubernetes交互是通過一個(gè)名為kubectl的命令行工具。kubectl主要用于和Kubernetes API進(jìn)行通信來創(chuàng)建、更新以及刪除在Kubernetes內(nèi)的工作負(fù)載。在下文中,我們將提供一些常見的命令,你可以利用它們開始管理Kubernetes。
大部分常見的kubectl命令都提供了要執(zhí)行的特定操作或動(dòng)作,比如創(chuàng)建、刪除等。這一方法通常涉及解釋描述Kubernetes中的對(duì)象(pod、服務(wù)、資源等)的文件(YAML或JSON)。這些文件可用于模板以及環(huán)境中的持續(xù)文件,并且?guī)椭3諯ubernetes對(duì)聲明式配置的關(guān)注。命令行所指定的操作將會(huì)傳遞到API Server,然后根據(jù)需要與Kubernetes中的后端服務(wù)進(jìn)行通信。下方的表格可以幫助你安裝kubectl:
請(qǐng)注意:隨著新版本的發(fā)布,適用于Windows的kubectl的最佳版本會(huì)有所變化。想要找到目前最合適的二進(jìn)制文件,請(qǐng)?jiān)L問以下網(wǎng)址:
https://storage.googleapis.com/kubernetes-release/release/stable.txt
并根據(jù)需要調(diào)整上述URL。
kubectl 句法
kubectl句法如下:
kubectl [command] [TYPE] [NAME] [flags]
Command:指你想要執(zhí)行的動(dòng)作(創(chuàng)建、刪除等)
Type:指你要針對(duì)其執(zhí)行命令的資源類型(Pod、Service等)
Name:資源對(duì)象的名稱(區(qū)分大小寫),如果你不指定一個(gè)名稱,它會(huì)獲取所有與你命令匹配的資源信息。
以下示例可以幫助你熟悉運(yùn)行常用的kubectl操作:
kubectl apply - Apply or Update a resource from a file or stdin.
# Create a service using the definition in example-service.yaml.
kubectl apply -f example-service.yaml
kubectl get - List one or more resources.
# List all pods in plain-text output format.
kubectl get pods
# List all pods in plain-text output format and include additional information (such as node name).
kubectl describe - Display detailed state of one or more resources, including the uninitialized ones by default.
# Display the details of the node with name <node-name>.
kubectl describe nodes <node-name>
kubectl delete - Delete resources either from a file, stdin, or specifying label selectors, names, resource selectors, or resources.
# Delete a pod using the type and name specified in the pod.yaml file.
kubectl delete -f pod.yaml
# Delete all the pods and services that have the label name=<label-name>.
kubectl delete pods,services -l name=<label-name>
kubectl logs - Print the logs for a container in a pod.
# Return a snapshot of the logs from pod <pod-name>.
kubectl logs <pod-name>
# Start streaming the logs from pod <pod-name>. This is similar to the 'tail -f' Linux command.
kubectl logs -f <pod-name>
以上都是kubectl中常用的操作,如果你想了解更多,可以查閱kubectl的官方指南。此外,我們?cè)谕诘奈恼轮幸灿薪榻B:
你一定會(huì)用到的7條kubectl命令
使用Kubectl管理Kubernetes的全解教程
Pod水平自動(dòng)伸縮(HPA)是Kubernetes的一個(gè)重要功能,它可以讓你配置集群以自動(dòng)伸縮正在運(yùn)行的服務(wù)。HPA實(shí)現(xiàn)為一種Kubernetes API資源和controller。資源決定controller的行為,controller會(huì)定期調(diào)整replication controller或部署中的副本數(shù)量,使觀察到的平均CPU利用率與用戶指定的目標(biāo)相匹配。
同時(shí),HPA實(shí)現(xiàn)為控制回路,其周期由controller manager的–horizontal-pod-autoscaler-sync-period標(biāo)志控制(默認(rèn)值為30秒)。
在每個(gè)周期期間,controller manager 會(huì)根據(jù)每個(gè)HPA定義中指定的指標(biāo)來查詢資源利用率。Controller manager會(huì)從資源指標(biāo)API(針對(duì)per-pod資源指標(biāo))或自定義指標(biāo)API(針對(duì)所有其他指標(biāo))中獲得指標(biāo)。
HPA controller將會(huì)通過兩種不同的方式獲取指標(biāo):direct Heapster access和REST client access。當(dāng)使用direct Heapster access時(shí),HPA將會(huì)通過API server的服務(wù)代理子資源直接查詢Heapster。請(qǐng)注意,Heapster需要部署在集群上并在kube-system命名空間中運(yùn)行。
HPA的工作流程包含以下四個(gè)步驟,如圖所示:
在設(shè)置默認(rèn)30秒間隔期間,HPA會(huì)持續(xù)檢查你所配置的指標(biāo)值
如果達(dá)到指定閾值,則HPA嘗試增加pod的數(shù)量
HPA主要更新在部署中或replication controller中的副本數(shù)量
在本文中,我們討論了兩種擴(kuò)展Kubernetes應(yīng)用程序的主要工具,兩者都是所有Kubernetes服務(wù)的關(guān)鍵組件。我們看到了如何安裝并且使用不同的功能,如應(yīng)用、獲取、刪除、描述以及kubectl的日志等。同時(shí),我們回顧并了解有關(guān)Horizontal Pod Autoscaler的信息,例如它是如何工作的以及它對(duì)任意Kubernetes服務(wù)的重要性。在擴(kuò)展微服務(wù)應(yīng)用程序時(shí),kubectl和HPA都是Kubernetes的重要功能。
在上個(gè)月發(fā)布的Rancher 2.3中,已經(jīng)集成了HPA功能,可以在Rancher中通過UI使用。目前,Rancher 2.3也已經(jīng)stable,如果想要更全面地了解Rancher 2.3關(guān)注我們下周三晚上的Rancher K8S云課堂吧!
歡迎添加小助手(×××:×××),進(jìn)官方技術(shù)群,了解更多Kubernetes使用攻略
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。