1. 程式人生 > 實用技巧 >k8s 之HPA應用

k8s 之HPA應用

1、建立測試deployment

apiVersion: v1
kind: Service
metadata:
  name: my-app
  namespace: default
spec:
  type: NodePort
  selector: 
    app: my-app
    release: canary
  ports:
  - name: http
    nodePort: 30327
    port: 80
  
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-deploy
  namespace: default
spec:
  replicas: 
3 selector: matchLabels: app: my-app release: canary template: metadata: labels: app: my-app release: canary spec: containers: - name: my-app image: ikubernetes/myapp:v2 ports: - name: http containerPort:
80
resources:
requests:
cpu: 128m
memory: 128Mi
limits:
cpu: 128m
memory: 128Mi

kubectl create -f app.yaml

[root@10 ingress]#  kubectl get pod | grep my-app
my-app-deploy-76f86b954b-5r5n7                                    1/1     Running            0
3m25s my-app-deploy-76f86b954b-8n2dp 1/1 Running 0 3m25s my-app-deploy-76f86b954b-d95d8 1/1 Running 0 3m25s [root@10 ingress]# kubectl get svc | grep my-app my-app NodePort 192.168.192.192 <none> 80:30327/TCP 3m29s [root@10 ingress]#

2、建立HPA

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: my-app-hpa # 名稱
  namespace: default #k8s名稱空間
spec:
  maxReplicas: 10  # 最大副本數
  minReplicas: 3   # 最小副本數
  scaleTargetRef:   
    apiVersion: apps/v1beta1
    kind: Deployment  
    name: my-app-deploy   # 監控名為my-app-deploy的Deployment
  targetCPUUtilizationPercentage: 20  # cpu 閾值
kubectl create -f hap.yaml

[root@10 zhangpan]# kubectl get hpa
NAME         REFERENCE                  TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
my-app-hpa   Deployment/my-app-deploy   <unknown>/80%   2         10        3          77s
[root@10 zhangpan]# 

也可以直接用命令建立hpa

kubectl autoscale deployment myapp --min=2 --max=10 --cpu-percent=20

如果出現unknown,可以檢視原始deployment的resource有沒有設定cpu的限制,或者沒有找到deployment,也有可能是由於heapster元件沒有安裝,也有可能是資料沒有檢測到,預設heapster採集時間為1分,需要稍等一會看一下狀態。

可以用kubectl describe hpa my-app-hpa 檢視具體原因

正常後顯示如下:

[root@10 zhangpan]# kubectl get hpa
NAME         REFERENCE                  TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
my-app-hpa   Deployment/my-app-deploy   0%/20%    2         10        2          6m29s
[root@10 zhangpan]#