kubernetes HPA

木木12个月前技术文章393

Horizontal Pod Autoscaling 可以根据 CPU 利用率自动伸缩一个 ReplicaSet、Deployment 或者中的 Pod 数量

cat hpa-deploy.yaml 

apiVersion: apps/v1
kind: Deployment
metadata:
 name: hpa-web
spec:
 selector:
   matchLabels:
     app: hpa-web
 replicas: 1
 template:
   metadata:
     labels:
       app: hpa-web
   spec:
     containers:
       - name: hpa-web
         image: gcr.io/google_containers/hpa-example
         imagePullPolicy: IfNotPresent
         ports:
         - containerPort: 80
         resources:
           limits:
             cpu: 200m
             memory: 200Mi
           requests:
             cpu: 100m
             memory: 100Mi
---
apiVersion: v1
kind: Service
metadata:
 name: hpa-web
spec:
 type: ClusterIP
 selector:
   app: hpa-web
 ports:
 - name: http
   port: 80
   targetPort: 80

179.png

180.png

创建 HPA 控制器 - 相关算法的详情请参阅这篇文档:http://git.k8s.io/community/contributors/design-proposals/horizontal-pod-autoscaler.md#autoscaling-algorithm

kubectl autoscale deployment hpa-web --cpu-percent=50 --min=1 --max=10

181.png

增加负载,查看负载节点数目

两种方式:

1.命令行创建:

创建测试POD:
kubectl run -i --tty zutuanxue --image=busybox --image-pull-policy='IfNotPresent' /bin/sh

执行命令:
while true; do wget -q -O- http://hpa-web.default.svc.cluster.local; done

2.副本控制器创建:

cat test.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
 name: ceshi
spec:
 selector:
   matchLabels:
     app: ceshi
 replicas: 1
 template:
   metadata:
     labels:
       app: ceshi
   spec:
     containers:
       - name: ceshi
         image: docker.io/busybox
         imagePullPolicy: IfNotPresent
         command: ['sh', '-c', 'while true; do wget -q -O- http://hpa-web.default.svc.cluster.local; done']

182.png

183.png

184.png

资源限制 - Pod

Kubernetes 对资源的限制实际上是通过 cgroup 来控制的,cgroup 是容器的一组用来控制内核如何运行进程的相关属性集合。针对内存、CPU 和各种设备都有对应的 cgroup

默认情况下,Pod 运行没有 CPU 和内存的限额。 这意味着系统中的任何 Pod 将能够像执行该 Pod 所在的节点一样,消耗足够多的 CPU 和内存 。一般会针对某些应用的 pod 资源进行资源限制,这个资源限制是通过resources 的 requests 和 limits 来实现

spec:
   containers:
   - image: xxxx
     imagePullPolicy: Always
     name: auth
     ports:
     - containerPort: 8080
       protocol: TCP
     resources:
       limits:
         cpu: "4"
         memory: 2Gi
       requests:
         cpu: 250m
         memory: 250Mi

requests 要分配的资源,limits 为最高请求的资源值。可以简单理解为初始值和最大值

资源限制 - 名称空间

1、计算资源配额

apiVersion: v1
kind: ResourceQuota
metadata:
 name: compute-resources
 namespace: zutuanxue
spec:
 hard:
   pods: "20"
   requests.cpu: "20"
   requests.memory: 100Gi
   limits.cpu: "40"
   limits.memory: 200Gi

2、配置对象数量配额限制

apiVersion: v1
kind: ResourceQuota
metadata:
 name: object-counts
 namespace: zutuanxue
spec:
 hard:
   configmaps: "10"
   persistentvolumeclaims: "4"
   ReplicaSet: "20"
   secrets: "10"
   services: "10"

3、配置 CPU 和 内存 LimitRange

apiVersion: v1
kind: LimitRange
metadata:
 name: mem-limit-range
spec:
 limits:
 - default:
     memory: 50Gi
     cpu: 5
   defaultRequest:
     memory: 1Gi
     cpu: 1
   type: Container

default 即 limit 的值

defaultRequest 即 request 的值


相关文章

使用Sqoop将数据从Hive导入MySQL(一)

使用Sqoop将数据从Hive导入MySQL(一)

使用Sqoop将数据从Hive导入MySQL首先查看csv数据类型创建类似的hive表并导入数据CREATE TABLE data (    province STRING,    code INT,...

正式发布 | 《云运维服务白皮书》开放下载!

正式发布 | 《云运维服务白皮书》开放下载!

在全球数字化变革的背景下,为适应数字经济环境下企业生存发展和市场变化的需要,企业进行主动的、系统性、整体性的数字化转型升级。大数据、云计算、人工智能、区块链等新一代信息通信技术为企业的数字化转型提供了...

hive创建hbase映射表

hive创建hbase映射表

hbase创建表,导入数据/opt/app/hbase-2.1.0/bin/hbase shell查看已有表,创建新表,查看表结构listcreate 'student', 'info', 'scor...

IDC:疫情下,第三方云管理服务市场逆势增长!

IDC:疫情下,第三方云管理服务市场逆势增长!

IDC预测,中国第三方云管理服务在2019年到2023年间将保持54.7%的增长率,2023年市场规模预计达到32.1亿美元。2019年第三方云管理服务市场呈现出如下特点:云管理服务成为众多服务商的战...

EMR-java配置国密SM4加密

EMR-java配置国密SM4加密

首先找到bcprov-jdk15on-1.56.jar这个包<dependency>    <groupId>org.bouncycastle</groupId> ...

EMR-flinksql运行失败问题

EMR-flinksql运行失败问题

运行flinksqlsql-client.sh报错:[root@emr1 bin]# ./sql-client.shSLF4J: Class path contains multiple SLF4J...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。