中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

零基礎攻略!如何使用kubectl和HPA擴展Kubernetes應用程序

發布時間:2020-07-07 16:51:05 來源:網絡 閱讀:250 作者:RancherLabs 欄目:云計算

現如今,Kubernetes已經完全改變了軟件開發方式。Kubernetes作為一個管理容器化工作負載及服務的開源平臺,其擁有可移植、可擴展的特性,并促進了聲明式配置和自動化,同時它還證明了自己是管理復雜微服務的主要參與者。而Kubernetes之所以能夠在業界被廣泛采用,究其原因是Kubernetes迎合了以下需求:

 

  • 企業想要在不斷地增長的同時維持低成本

  • DevOps想要一個可以大規模運行應用程序的穩定平臺

  • 開發人員希望有一個可靠并且可復制的流程來編寫、測試和debug代碼

 

但是,你是否考慮過如何在使用實際需要的資源的同時獲得強大的容器編排平臺?最佳資源利用的關鍵是知道需要擴展什么應用程序以及何時需要擴展應用程序。因此,在本文中,我們將討論和學習如何擴展Kubernetes容器,并且我們將特別關注兩類服務:kubectl和Horizontal Pod Autoscaler(HPA)。
 

kubectl

 

在絕大部分情況下和Kubernetes交互是通過一個名為kubectl的命令行工具。kubectl主要用于和Kubernetes API進行通信來創建、更新以及刪除在Kubernetes內的工作負載。在下文中,我們將提供一些常見的命令,你可以利用它們開始管理Kubernetes。

 

大部分常見的kubectl命令都提供了要執行的特定操作或動作,比如創建、刪除等。這一方法通常涉及解釋描述Kubernetes中的對象(pod、服務、資源等)的文件(YAML或JSON)。這些文件可用于模板以及環境中的持續文件,并且幫助保持Kubernetes對聲明式配置的關注。命令行所指定的操作將會傳遞到API Server,然后根據需要與Kubernetes中的后端服務進行通信。下方的表格可以幫助你安裝kubectl:
 
零基礎攻略!如何使用kubectl和HPA擴展Kubernetes應用程序
 
請注意:隨著新版本的發布,適用于Windows的kubectl的最佳版本會有所變化。想要找到目前最合適的二進制文件,請訪問以下網址:
 
https://storage.googleapis.com/kubernetes-release/release/stable.txt

并根據需要調整上述URL。

 

kubectl 句法

 

kubectl句法如下:
 

kubectl [command] [TYPE] [NAME] [flags]

 

  • Command:指你想要執行的動作(創建、刪除等)

  • Type:指你要針對其執行命令的資源類型(Pod、Service等)

  • Name:資源對象的名稱(區分大小寫),如果你不指定一個名稱,它會獲取所有與你命令匹配的資源信息。

  • Flags:這部分在句法中不是必要的,但是當需要查找指定資源時,十分有用。例如,-namespace可以讓你指定一個特定的命名空間,以在其中執行操作。
     
    kubectl操作

 

以下示例可以幫助你熟悉運行常用的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的官方指南。此外,我們在往期的文章中也有介紹:
 
你一定會用到的7條kubectl命令
 
使用Kubectl管理Kubernetes的全解教程
 

Horizontal Pod Autoscaler(HPA)

 

Pod水平自動伸縮(HPA)是Kubernetes的一個重要功能,它可以讓你配置集群以自動伸縮正在運行的服務。HPA實現為一種Kubernetes API資源和controller。資源決定controller的行為,controller會定期調整replication controller或部署中的副本數量,使觀察到的平均CPU利用率與用戶指定的目標相匹配。

 

同時,HPA實現為控制回路,其周期由controller manager的–horizontal-pod-autoscaler-sync-period標志控制(默認值為30秒)。
 

在每個周期期間,controller manager 會根據每個HPA定義中指定的指標來查詢資源利用率。Controller manager會從資源指標API(針對per-pod資源指標)或自定義指標API(針對所有其他指標)中獲得指標。
 

  • 針對per-pod資源指標(如CPU),controller會從資源指標API中為HPA定位的每個Pod獲取指標。然后,如果設置了目標利用率值,則controller將會把利用率值計算為每個pod中容器的同等資源請求的百分比。如果設置了目標原始值,則直接使用原始指標值。然后,controller將所有目標pod的利用率或原始值(取決于指定的目標類型)取平均值,并產生一個用于伸縮所需副本數量的比率。
     
  • 針對per-pod自定義指標,controller的功能類似于per-pod資源指標,但它適用于原始值,而非利用率值。
     
  • 對于對象指標,將會獲取單個指標(該指標描述了所討論的對象),并將其與目標值進行比較,以產生用于伸縮所需副本數量的比率。

 

HPA controller將會通過兩種不同的方式獲取指標:direct Heapster access和REST client access。當使用direct Heapster access時,HPA將會通過API server的服務代理子資源直接查詢Heapster。請注意,Heapster需要部署在集群上并在kube-system命名空間中運行。

 

HPA的工作流程包含以下四個步驟,如圖所示:

 

  1. 在設置默認30秒間隔期間,HPA會持續檢查你所配置的指標值

  2. 如果達到指定閾值,則HPA嘗試增加pod的數量

  3. HPA主要更新在部署中或replication controller中的副本數量

  4. 然后,部署/replication controller將會添加任何額外所需的pod
     
    零基礎攻略!如何使用kubectl和HPA擴展Kubernetes應用程序
     
    當你推出HPA時請考慮以下因素:

 

  • 默認的HPA檢查間隔是30秒,這個默認值可以通過controller manager的— horizontal-pod-autoscaler-sync-period標志進行配置。

 

  • 默認的HPA相關指標容差為10%。

 

  • 在上一次擴展事件之后,HPA將會等待3分鐘,以使指標穩定下來。這一等待事件同樣可以通過— horizontal-pod-autoscaler-upscale-delay標志進行配置。

 

  • 從上一次縮小事件開始,HPA將會等待5分鐘,以避免autoscaler抖動。同樣可以通過— horizontal-pod-autoscaler-downscale-delay標志進行配置。

 

  • 與replication controller相比,HPA最適合與部署對象或Pod指標配合使用,不適用于使用直接操作的replication controller的滾動更新。當你進行部署時,需要根據部署對象來管理底層副本集的大小。

 

  • 當HPA與自定義指標(如Pod指標或對象指標)一起使用時,你需要決定何時進行伸縮。由于Kubernetes支持多種指標,因此你可以同時使用多種指標來決定伸縮的時間。請注意,Kubernetes會依照次序來考慮每個指標。更多示例請查閱:
    https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale
     

結 論

 
在本文中,我們討論了兩種擴展Kubernetes應用程序的主要工具,兩者都是所有Kubernetes服務的關鍵組件。我們看到了如何安裝并且使用不同的功能,如應用、獲取、刪除、描述以及kubectl的日志等。同時,我們回顧并了解有關Horizontal Pod Autoscaler的信息,例如它是如何工作的以及它對任意Kubernetes服務的重要性。在擴展微服務應用程序時,kubectl和HPA都是Kubernetes的重要功能。

 

在上個月發布的Rancher 2.3中,已經集成了HPA功能,可以在Rancher中通過UI使用。目前,Rancher 2.3也已經stable,如果想要更全面地了解Rancher 2.3關注我們下周三晚上的Rancher K8S云課堂吧!
 
零基礎攻略!如何使用kubectl和HPA擴展Kubernetes應用程序

 

歡迎添加小助手(×××:×××),進官方技術群,了解更多Kubernetes使用攻略

向AI問一下細節

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

AI

吴桥县| 祁门县| 汨罗市| 赫章县| 秀山| 察雅县| 都江堰市| 武城县| 巴马| 蓬莱市| 汾阳市| 隆昌县| 平潭县| 大竹县| 屏东县| 双鸭山市| 武功县| 平和县| 南木林县| 高淳县| 万盛区| 牟定县| 高陵县| 旬邑县| 太原市| 城步| 游戏| 马关县| 岳池县| 丰顺县| 宿州市| 东海县| 阿勒泰市| 长白| 稻城县| 洛阳市| 北票市| 万山特区| 茌平县| 通州市| 边坝县|