iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
DevOps

從煉獄走到天堂的AWS DevOps 工具及應用開發大進擊系列 第 27

利用世界第八大奇蹟,讓你的財富橫向擴展

HPA

當電商網站舉辦周年慶活動時,網站的瀏覽流量一定會面臨到網站掛掉或網站速度很慢,當然解決辦法也有相對應的解決辦法:

  1. 使用更好的硬體,提高CPU core和memory,但也會有浪費,花費不必要的費用 (反正是公司的錢
  2. 橫向擴展: 可以是EC2做ASG增加機器數量,或是[Day19]增加Container數量,更完善的利用CPU/Memory的資源。
    而Kubernetes也有提供類似的功能如HPA,會根據CPU/Memory的使用率,或自動的metric,此篇以CPU為主,針對deployment所控制的Pod進行數量的調整,當CPU使用率超過設定值就會進行scale-out;反之,CPU使用率低於設定值就會進行scale-in

Ps. HPA也有支援cooldown的功能,避免增加/減少太多Pod,緩衝區的概念

講解如何建立HPA在EKS上,如下步驟:

  1. 安裝Metric Server
kubectl apply -f https://github.com/kubernetes-sigs/metrics-
server/releases/latest/download/components.yaml
  1. Deploy Application(deployment)
kubectl apply -f hpa.yaml
  1. 針對想要進行HPA的deployment做設定
kubectl autoscale deployment hpa-deploy --cpu-percent=50 --min=1 –
max=10
  1. 查看HPA的詳細資訊
kubectl describe hpa/hpa-deploy
  1. 查看HPA
kubectl get hpa/hpa-deploy

檔案解析

hpa.yaml是由Service和Deployment,設定都跟之前的文章一樣

apiVersion: v1
kind: Service
metadata:
  name: hpa-svc
  labels:
    app: hpa-svc
spec:
  type: NodePort
  selector:
    app: hpa-deploy
  ports:
    - port: 80
      targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hpa-deploy
  labels:
    app: hpa-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hpa-deploy
  template:
    metadata:
      labels:
        app: hpa-deploy
    spec:
      containers:
        - name: hpa-deploy
          image: johnson860312/awswebdb
          ports:
          - containerPort: 80
          resources:
            limits:
              memory: "512Mi"
              cpu: "256m"
            requests:
              memory: "256Mi"
              cpu: "128m"

測試方式

這邊也是使用ApacheBench(ab)進行測試,雖然筆者有設定NodePort把Pod做expose,但需要在EC2上設定SG,增加NodePort為inbound rule,這邊直接使用kubectl port-forward的方式,來訪問到Pod
https://ithelp.ithome.com.tw/upload/images/20211011/20140172k0HrAvWVGT.png
https://ithelp.ithome.com.tw/upload/images/20211011/20140172gEPPWDzntQ.png
HPA大致就講解到這裡,明天開始會講EKS的Storage系列


上一篇
順著藏寶圖的指示,可以尋獲龐大的財富
下一篇
只有留存下來的人事物才是你所擁有
系列文
從煉獄走到天堂的AWS DevOps 工具及應用開發大進擊30

尚未有邦友留言

立即登入留言