
- Kubernetes 教程
- Kubernetes - 首頁
- Kubernetes - 概述
- Kubernetes - 架構
- Kubernetes - 設定
- Kubernetes - 映象
- Kubernetes - 作業
- Kubernetes - 標籤 & 選擇器
- Kubernetes - 名稱空間
- Kubernetes - 節點
- Kubernetes - 服務
- Kubernetes - Pod
- Kubernetes - 複製控制器
- Kubernetes - 副本集
- Kubernetes - 部署
- Kubernetes - 卷
- Kubernetes - 金鑰
- Kubernetes - 網路策略
- 高階 Kubernetes
- Kubernetes - API
- Kubernetes - Kubectl
- Kubernetes - Kubectl 命令
- Kubernetes - 建立應用程式
- Kubernetes - 應用程式部署
- Kubernetes - 自動伸縮
- Kubernetes - 儀表盤設定
- Kubernetes - 監控
- Kubernetes 有用資源
- Kubernetes - 快速指南
- Kubernetes - 有用資源
- Kubernetes - 討論
Kubernetes - 自動伸縮
自動伸縮是 Kubernetes 叢集中的關鍵特性之一。它是一種功能,叢集能夠根據服務響應的需求增加節點數量,並在需求減少時減少節點數量。此自動伸縮功能目前在 Google Cloud Engine (GCE) 和 Google Container Engine (GKE) 中受支援,並且很快將在 AWS 中開始使用。
為了在 GCE 中設定可擴充套件的基礎設施,我們需要首先擁有一個啟用了 Google Cloud Monitoring、Google Cloud Logging 和 Stackdriver 功能的活動 GCE 專案。
首先,我們將在其中執行少量節點的叢集中設定叢集。完成後,我們需要設定以下環境變數。
環境變數
export NUM_NODES = 2 export KUBE_AUTOSCALER_MIN_NODES = 2 export KUBE_AUTOSCALER_MAX_NODES = 5 export KUBE_ENABLE_CLUSTER_AUTOSCALER = true
完成後,我們將透過執行kube-up.sh啟動叢集。這將建立一個叢集以及叢集自動伸縮器外掛。
./cluster/kube-up.sh
建立集群后,我們可以使用以下 kubectl 命令檢查我們的叢集。
$ kubectl get nodes NAME STATUS AGE kubernetes-master Ready,SchedulingDisabled 10m kubernetes-minion-group-de5q Ready 10m kubernetes-minion-group-yhdx Ready 8m
現在,我們可以在叢集上部署應用程式,然後啟用水平 Pod 自動伸縮器。這可以使用以下命令完成。
$ kubectl autoscale deployment <Application Name> --cpu-percent = 50 --min = 1 -- max = 10
上述命令表明,隨著應用程式負載的增加,我們將至少維護一個且最多 10 個 POD 的副本。
我們可以透過執行$kubclt get hpa命令來檢查自動伸縮器的狀態。我們將使用以下命令增加 Pod 上的負載。
$ kubectl run -i --tty load-generator --image = busybox /bin/sh $ while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done
我們可以透過執行$ kubectl get hpa命令來檢查hpa。
$ kubectl get hpa NAME REFERENCE TARGET CURRENT php-apache Deployment/php-apache/scale 50% 310% MINPODS MAXPODS AGE 1 20 2m $ kubectl get deployment php-apache NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE php-apache 7 7 7 3 4m
我們可以使用以下命令檢查正在執行的 Pod 數量。
jsz@jsz-desk2:~/k8s-src$ kubectl get pods php-apache-2046965998-3ewo6 0/1 Pending 0 1m php-apache-2046965998-8m03k 1/1 Running 0 1m php-apache-2046965998-ddpgp 1/1 Running 0 5m php-apache-2046965998-lrik6 1/1 Running 0 1m php-apache-2046965998-nj465 0/1 Pending 0 1m php-apache-2046965998-tmwg1 1/1 Running 0 1m php-apache-2046965998-xkbw1 0/1 Pending 0 1m
最後,我們可以獲取節點狀態。
$ kubectl get nodes NAME STATUS AGE kubernetes-master Ready,SchedulingDisabled 9m kubernetes-minion-group-6z5i Ready 43s kubernetes-minion-group-de5q Ready 9m kubernetes-minion-group-yhdx Ready 9m
廣告