HPA 管理--创建 HPA 规则

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  #指定伸缩范围为 11000
  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

HPA 管理--创建 HPA 规则_第1张图片

你可能感兴趣的:(容器云,docker,运维,kubernetes)