kubernetes 的hpa实际案例
2022-08-09
3 min read
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