023.掌握Pod-Pod扩容和缩容
2019-11-24 16:01:23来源:博客园 阅读 ()
023.掌握Pod-Pod扩容和缩容
一 Pod的扩容和缩容
Kubernetes对Pod的扩缩容操作提供了手动和自动两种模式,手动模式通过执行kubectl scale命令或通过RESTful API对一个Deployment/RC进行Pod副本数量的设置。自动模式则需要用户根据某个性能指标或者自定义业务指标,并指定Pod副本数量的范围,系统将自动在这个范围内根据性能指标的变化进行调整。1.1 手动缩容和扩容
1 [root@uk8s-m-01 study]# vi nginx-deployment.yaml 2 apiVersion: apps/v1beta1 3 kind: Deployment 4 metadata: 5 name: nginx-deployment 6 spec: 7 replicas: 3 8 template: 9 metadata: 10 labels: 11 app: nginx 12 spec: 13 containers: 14 - name: nginx 15 image: nginx:1.7.9 16 ports: 17 - containerPort: 80
1 [root@uk8s-m-01 study]# kubectl create -f nginx-deployment.yaml 2 [root@uk8s-m-01 study]# kubectl scale deployment nginx-deployment --replicas=5 #扩容至5个 3 [root@uk8s-m-01 study]# kubectl get pods #查看扩容后的Pod
1 [root@uk8s-m-01 study]# kubectl scale deployment nginx-deployment --replicas=2 #缩容至2个 2 [root@uk8s-m-01 study]# kubectl get pods
1.2 自动扩容机制
Kubernetes使用Horizontal Pod Autoscaler(HPA)的控制器实现基于CPU使用率进行自动Pod扩缩容的功能。HPA控制器基于Master的kube-controller-manager服务启动参数--horizontal-pod-autoscaler-sync-period定义的探测周期(默认值为15s),周期性地监测目标Pod的资源性能指标,并与HPA资源对象中的扩缩容条件进行对比,在满足条件时对Pod副本数量进行调整。- HPA原理
- HPA指标类型
- 扩缩容算法
- Pod正在被删除(设置了删除时间戳):将不会计入目标Pod副本数量。
- Pod的当前指标值无法获得:本次探测不会将这个Pod纳入目标Pod副本数量,后续的探测会被重新纳入计算范围。
- 如果指标类型是CPU使用率,则对于正在启动但是还未达到Ready状态的Pod,也暂时不会纳入目标副本数量范围。
1.3 HorizontalPodAutoscaler
Kubernetes将HorizontalPodAutoscaler资源对象提供给用户来定义扩缩容的规则。 HorizontalPodAutoscaler资源对象处于Kubernetes的API组“autoscaling”中, 目前包括v1和v2两个版本。 其中autoscaling/v1仅支持基于CPU使用率的自动扩缩容, autoscaling/v2则用于支持基于任意指标的自动扩缩容配置, 包括基于资源使用率、 Pod指标、 其他指标等类型的指标数据。 示例1:基于autoscaling/v1版本的HorizontalPodAutoscaler配置,仅可以设置CPU使用率。1 [root@uk8s-m-01 study]# vi php-apache-autoscaling-v1.yaml 2 apiVersion: autoscaling/v1 3 kind: HorizontalPodAutoscaler 4 metadata: 5 name: php-apache 6 spec: 7 scaleTargetRef: 8 apiVersion: apps/v1 9 kind: Deployment 10 name: php-apache 11 minReplicas: 1 12 maxReplicas: 10 13 targetCPUUtilizationPercentage: 50释义: scaleTargetRef:目标作用对象,可以是Deployment、ReplicationController或ReplicaSet。 targetCPUUtilizationPercentage:期望每个Pod的CPU使用率都为50%,该使用率基于Pod设置的CPU Request值进行计算,例如该值为200m,那么系统将维持Pod的实际CPU使用值为100m。 minReplicas和maxReplicas:Pod副本数量的最小值和最大值,系统将在这个范围内进行自动扩缩容操作, 并维持每个Pod的CPU使用率为50%。 为了使用autoscaling/v1版本的HorizontalPodAutoscaler,需要预先安装Heapster组件或Metrics Server,用于采集Pod的CPU使用率。 示例2:基于autoscaling/v2beta2的HorizontalPodAutoscaler配置。
1 [root@uk8s-m-01 study]# vi php-apache-autoscaling-v2.yaml 2 apiVersion: autoscaling/v2beta2 3 kind: HorizontalPodAutoscaler 4 metadata: 5 name: php-apache 6 spec: 7 scaleTargetRef: 8 apiVersion: apps/v1 9 kind: Deployment 10 name: php-apache 11 minReplicas: 1 12 maxReplicas: 10 13 metrics: 14 - type: Resource 15 resource: 16 name: cpu 17 target: 18 type: Utilization 19 averageUtilization: 50释义: scaleTargetRef:目标作用对象,可以是Deployment、ReplicationController或ReplicaSet。 minReplicas和maxReplicas:Pod副本数量的最小值和最大值,系统将在这个范围内进行自动扩缩容操作, 并维持每个Pod的CPU使用率为50%。 metrics:目标指标值。在metrics中通过参数type定义指标的类型;通过参数target定义相应的指标目标值,系统将在指标数据达到目标值时(考虑容忍度的区间)触发扩缩容操作。
- metrics中的type(指标类型)设置为以下几种:
- Resource:基于资源的指标值,可以设置的资源为CPU和内存。
- Pods:基于Pod的指标,系统将对全部Pod副本的指标值进行平均值计算。
- Object:基于某种资源对象(如Ingress)的指标或应用系统的任意自定义指标。
1 metrics: 2 - type: Pods 3 pods: 4 metrics: 5 name: packets-per-second 6 target: 7 type: AverageValue 8 averageValue: 1k
原文链接:https://www.cnblogs.com/itzgr/p/11921727.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- CentOS 磁盘在线扩容 2019-12-13
- 022.掌握Pod-Pod升级和回滚 2019-11-22
- 021.掌握Pod-Pod调度策略 2019-11-21
- LVM 磁盘分区扩容 2019-02-27
- linux -- 扩容 /home 空间( xfs文件系统分区扩容指定挂载点) 2018-10-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash