HPA 管理--创建 HPA 规则
hpa管理
仅供参考~~
HPA 管理–创建 HPA 规则
默认情况下 HPA 是无法调整伸缩灵敏度的,但不同的业务场景对伸缩灵敏度的要求不一样。要求在 default 命名空间下使用 nginx 镜像创建一个名为 web 的 deployment,自定义HPA 的伸缩灵敏度,为该deployment 创建一个名为web 的HPA,扩容时立即新增当前 9 倍数量的副本数,时间窗口为 5s,伸缩范围为 1–1000。例如一开始只有 1 个 Pod,当 CPU 使用率超过 80%时,Pod 数量变化趋势为:1 → 10 → 100 → 1000。
完成后提交 master 节点的 IP 地址、用户名和密码到答题框。
1,创建名为web的deployment
[root@k8s-master-node1 ~]# cat web.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
2,配置 HPA ,如果没有指定所需的 CPU 资源的 request,导致无法获取 CPU 利用率指标,因此 HPA 无法计算所需的 Pod 数量。
[root@k8s-master-node1 ~]# cat deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 1
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:latest
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 500m # 指定所需的 CPU 资源 request
3,创建hpa,并指定规则
[root@k8s-master-node1 ~]# cat hpa.yaml
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: web
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: web
minReplicas: 1
maxReplicas: 1000 #指定伸缩范围为 1–1000
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
behavior:
scaleUp:
stabilizationWindowSeconds: 5
policies:
- type: Pods
value: 9 #9倍数量的副本数
periodSeconds: 1
scaleDown:
stabilizationWindowSeconds: 5 #时间窗口为 5s
policies:
- type: Pods
value: 1
periodSeconds: 1
[root@k8s-master-node1 ~]# kubectl apply -f web.yaml
[root@k8s-master-node1 ~]# kubectl apply -f deployment.yaml
[root@k8s-master-node1 ~]# kubectl apply -f hpa.yaml
[root@k8s-master-node1 ~]# kubectl get hpa web
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
web Deployment/web 0%/80% 1 1000 1 24m


浙公网安备 33010602011771号