kubernetes 的hpa实际案例

1.保证集群可用且有metrics-server

保证metrics-server的正常

[root@master-etcd1-234-31 test]# kubectl top node
NAME             CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
192.168.234.31   1089m        27%    2224Mi          64%
192.168.234.32   244m         6%     1244Mi          35%
192.168.234.33   234m         5%     1211Mi          34%
192.168.234.41   122m         3%     678Mi           9%
192.168.234.42   131m         3%     822Mi           10%
192.168.234.43   132m         3%     713Mi           9%

2.创建hpa自动伸缩的资源类型

apiVersion: apps/v1
kind: Deployment #创建了资源类型为Deployment的资源。
metadata:
  labels:
    app: web-nginx-hpa
  name: web-deployment-nginx-test
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web-nginx-hpa
  template:
    metadata:
      labels:
        app: web-nginx-hpa
    spec:
      containers:
      - image: nginx:1.22.0
        name: web-deployment-nginx-test
        resources:  # 注意Resources必须要配置,否则无法探测到
          limits:
            cpu: "1000m"  # 限制单个Pod最多可以使用1核CPU和100Mi内存
            memory: 100Mi
          requests: # 默认可以只配置Requests,但根据生产中的经验,建议把limits资源限制也加上,因为对kubernetes来说,只有这两个都配置了且配置的值都要一样,这个pod资源的优先级才是最高的,在node资源不够的情况下,首先是把没有任何资源分配配置的pod资源给干掉,其次是只配置了requests的,最后才是两个都配置的情况,根据QOS服务质量。
            cpu: "500m"
            memory: 500Mi

3.创建service方便访问测试资源

apiVersion: v1
kind: Service
metadata:
  name: hpa-service
spec:
  selector:
    app: web-nginx-hpa
  ports:
  - name: http
    port: 80
    targetPort: 80

4. 创建HPA资源

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler #HPA类型
metadata:
  name: web-deployment-nginx-test 
spec:
  scaleTargetRef:
    apiVersion: apps/v1   # API的版本
    kind: Deployment       # HPA针对的资源类型
    name: web-deployment-nginx-test  # Deployment的具体名称
  minReplicas: 2   # 最小Pod数量
  maxReplicas: 10  # 最大Pod数量
  targetCPUUtilizationPercentage: 30  # CPU到百分之30使用扩缩容。

原贴地址

https://www.cnblogs.com/xunweidezui/p/16494897.html