《OpenShift 4.x HOL教程汇总》
说明:本文已经在OpenShift 4.6环境中验证

文章目录

  • 手动扩展收缩Pod数
  • 手动收缩到“0”个Pod
  • 自动扩展收缩Pod数

手动扩展收缩Pod数

  1. 创建测试项目
$ oc new-project scale-up-down
  1. 创建测试应用资源
$ oc new-app --image-stream=php --code=https://github.com/liuxiaoyu-git/hpademo
$ oc expose svc hpademo
  1. 访问测试应用
$ curl $(oc get route hpademo --template={{.spec.host}})
OK!
  1. 查看项目包括的资源,确认目前是有1个Pod,这是由于Deployment关联的 replicaset只定义了1个Pod副本。
$ oc get all
NAME                           READY   STATUS      RESTARTS   AGE
pod/hpademo-1-build            0/1     Completed   0          89s
pod/hpademo-74c787766d-62tcs   1/1     Running     0          43sNAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
service/hpademo   ClusterIP   172.30.69.117   <none>        8080/TCP,8443/TCP   90sNAME                      READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/hpademo   1/1     1            1           90sNAME                                 DESIRED   CURRENT   READY   AGE
replicaset.apps/hpademo-74c787766d   1         1         1       43s
replicaset.apps/hpademo-c855d4967    0         0         0       90sNAME                                     TYPE     FROM   LATEST
buildconfig.build.openshift.io/hpademo   Source   Git    1NAME                                 TYPE     FROM          STATUS     STARTED              DURATION
build.build.openshift.io/hpademo-1   Source   Git@122d440   Complete   About a minute ago   46sNAME                                     IMAGE REPOSITORY                                                         TAGS     UPDATED
imagestream.image.openshift.io/hpademo   image-registry.openshift-image-registry.svc:5000/scale-up-down/hpademo   latest   43 seconds ago
  1. 手动扩展运行应用的Pod数为3副本。
$ oc scale deployment/hpademo --replicas=3
deployment.apps/hpademo scaled
  1. 查看确认当前运行应用的Pod数为3个。
$ oc get pod
NAME                       READY   STATUS      RESTARTS   AGE
hpademo-1-build            0/1     Completed   0          11m
hpademo-74c787766d-62tcs   1/1     Running     0          10m
hpademo-74c787766d-p4p6j   1/1     Running     0          10s
hpademo-74c787766d-p6vtg   1/1     Running     0          10s

手动收缩到“0”个Pod

虽然我们可以在Kubernetes中手动将Deployment对应的replicaset设为0个,但是这样设置意义不大,因为此时即便有用户访问应用,Kubernetes也不会再创建Pod来运行这个应用了。相比Kubernetes,OpenShift提供了手动Idling的功能。Idling可将运行应用的Pod数暂时降为“0”个,这样当应用不被访问的时候就不会再消耗系统资源。如果有请求访问应用,OpenShift会恢复运行replicaset设置的运行应用Pod副本数量。不过,OpenShift只支持根据请求自动将Pod数从“0“扩展到“多”的过程,而不支持反向Pod自动收缩到“0”个过程 - 即当没有应用访问的时候,Pod数最少只能自动收缩的“1”个。如果要收缩到“0”个,只能通过手动的方式实现。

  1. 查看Service对应的Endpoint对象,确认目前Endpoint中有3个地址,这是由于Service后台有3个运行的Pod。
$ oc get endpoints
NAME      ENDPOINTS                                                        AGE
hpademo   10.128.2.77:8443,10.128.2.78:8443,10.131.0.73:8443 + 3 more...   11m
  1. 执行命令,将让endpoints对象空闲。注意提示“The service will unidle Deployment “scale-up-down/hpademo” to 3 replicas once it receives traffic”是说当应用接收到请求后会直接恢复运行3个副本。
$ oc idle endpoints/hpademo
The service "scale-up-down/hpademo" has been marked as idled
The service will unidle Deployment "scale-up-down/hpademo" to 3 replicas once it receives traffic
Deployment "scale-up-down/hpademo" has been idled
  1. 此时再次查看名为hpademo的Endpoint,确认已经没有访问Endpoint对应的地址了,说明后台没有运行这个应用的Pod了。
$ oc get endpoints
NAME      ENDPOINTS   AGE
hpademo   <none>      5m7s
$ oc get pod
NAME              READY   STATUS      RESTARTS   AGE
hpademo-1-build   0/1     Completed   0          4m21s
  1. 再次访问测试应用。
$ curl $(oc get route hpademo --template={{.spec.host}})
OK!
  1. 再次查看名为hpademo的Endpoint,确认它已经有了3个对应的访问IP地址。
$ oc describe endpoints hpademo
Name:         hpademo
Namespace:    scale-up-down
Labels:       app=hpademoapp.kubernetes.io/component=hpademoapp.kubernetes.io/instance=hpademoapp.kubernetes.io/name=php
Annotations:  endpoints.kubernetes.io/last-change-trigger-time: 2020-08-24T12:27:59Z
Subsets:Addresses:          10.128.2.81,10.128.2.82,10.131.0.74NotReadyAddresses:  <none>Ports:Name      Port  Protocol----      ----  --------8443-tcp  8443  TCP8080-tcp  8080  TCPEvents:  <none>

自动扩展收缩Pod数

  1. 将运行应用的Pod副本恢复为“1”。
$ oc scale deployment/hpademo --replicas=1
  1. 设置Deployment可以使用的CPU资源上限。
$ oc set resources deployment hpademo --requests=cpu=200m --limits=cpu=500m
  1. 为名为hpademo的Deployment设置Autoscaler,最小1个(无法设成“0”)Pod副本,最大10个Pod副本。
$ oc autoscale deployment hpademo --cpu-percent=50 --min=1 --max=10
  1. 查看“oc autoscale”命令在项目中自动生成的HPA对象。
$ oc describe hpa hpademo
Name:                                                  hpademo
Namespace:                                             scale-up-down
Labels:                                                <none>
Annotations:                                           <none>
CreationTimestamp:                                     Thu, 24 Dec 2020 12:15:03 +0000
Reference:                                             Deployment/hpademo
Metrics:                                               ( current / target )resource cpu on pods  (as a percentage of request):  0% (0) / 50%
Min replicas:                                          1
Max replicas:                                          10
Deployment pods:                                       1 current / 1 desired
。。。
  1. 获得访问测试应的ROUTE-URL。
$ oc get route hpademo --template={{.spec.host}}
  1. 在一个新的Terminal窗口执行以下命令,直接根据指定的Image运行一个Pod。
$ oc run -it --rm load-generator --image=busybox /bin/sh
  1. 然后在上一步运行的Pod中执行以下脚本,其中需用实际地址替换“”。
# while true; do wget -q -O- <ROUTE-URL>; done
  1. 通过查看HPA跟踪当前运行Pod的副本数量,可以看到REPLICAS一列从‘1’逐步增加。
$ oc get hpa -w
NAME      REFERENCE            TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
hpademo   Deployment/hpademo   <unknown>/50%   1         10        1          72s
hpademo   Deployment/hpademo   0%/50%          1         10        1          75s
hpademo   Deployment/hpademo   13%/50%         1         10        1          90s
hpademo   Deployment/hpademo   36%/50%         1         10        1          2m15s
hpademo   Deployment/hpademo   69%/50%         1         10        1          2m30s
hpademo   Deployment/hpademo   68%/50%         1         10        2          2m45s
hpademo   Deployment/hpademo   95%/50%         1         10        2          3m
hpademo   Deployment/hpademo   94%/50%         1         10        2          3m15s

OpenShift - 扩展收缩应用部署规模相关推荐

  1. OpenShift V3 应用发布部署的简单场景演示

    本文讲的是OpenShift V3 应用发布部署的简单场景演示[编者的话]本文是一篇关于OpenShift如何应用在DevOps方面的文章.全文由浅入深,由易到难,通过3种不同场景下的部署,给读者一个 ...

  2. OpenStack 第 26 版 Zed 已发布,整体部署规模达4000万+

    OpenStack社区正式发布第26版Zed,该版本强化了安全性并进一步扩展了对硬件的支持.此外,社区基于用户反馈意见,新增适用于大规模部署场景的日志管理模块Venus,还新增Skyline组件优化了 ...

  3. OpenInfra 十一年:OpenStack 部署规模超 2500 万计算核心

    后疫情时代下,产生海量在线需求,越来越多金融.政府.教育.通信和医疗保健等上云业务需依赖现代云基础设施来正常运行.其中开源提供了一种更具成本效益的开发方式,据最新<2021 年度 Octover ...

  4. Windows上PHP扩展的实现,部署及应用

    2019独角兽企业重金招聘Python工程师标准>>> PHP对扩展的编写要求非常严格.如果没有按照官方文档,使用对应的PHP版本,PHP源码版本,以及Visual Studio版本 ...

  5. OpenShift Security (5) - 评估部署中的风险

    <OpenShift 4.x HOL教程汇总> 本文在 OpenShift 4.9 和 RHACS 3.67.1 环境中进行验证. 文章目录 和部署风险相关的指标 违反安全政策情况 可疑的 ...

  6. OpenShift 4 - Istio-Tutorial (2) 部署三个微服务

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 本系列演示的场景使用了基于Java实现的三个微服务:Customer.Preferen ...

  7. OpenStack 2014 用户调查解析——中国部署规模仅次于美国

    作者:郑晨,OpenStack中国社区,转载请注明出处 编者按:OpenStack已经愈见成熟,本届峰会的主要议程已经接近尾声,"超级用户"们已经在峰会当中就OpenStack的企 ...

  8. SlideView 图片滑动(扩展/收缩)展示效果

    滑动展示效果主要用在图片或信息的滑动展示,也可以设置一下做成简单的口风琴(Accordion)效果. 这个其实就是以前写的图片滑动展示效果的改进版,那是我第一篇比较受关注的文章,是时候整理一下了. 有 ...

  9. Django扩展 —— uwsgi+nginx部署

    -- uwsgi+nginx部署(django) -- 服务器环境配置 -- 导出虚拟环境的所有包 pip freeze > list.txt -- 通过ftp软件将项目以及list.txt文件 ...

最新文章

  1. 不要怂,就是GAN (生成式对抗网络) (六):Wasserstein GAN(WGAN) TensorFlow 代码
  2. 深入Windows原理杂记
  3. 【干货】SqlServer 总结几种存储过程分页的使用
  4. 你什么时候觉得自己会被边缘化?
  5. Delphi 2009 新增单元 Character[2]: IsLetter、IsUpper、IsLower、IsDigit、IsNumber
  6. python dlib学习(六):训练模型
  7. 【LeetCode-SQL每日一练】—— 620. 有趣的电影
  8. Python实用技法第26篇:定义实现最短匹配的正则表达式
  9. Microsoft Visio 2010 - 直线连接线
  10. 第五章 编码传输中的码率控制
  11. nginx 引号 x22
  12. 无线基础知识学习(一)
  13. 2021杭电多校第3场_HDU6975_Forgiving Matching
  14. 阿里云云计算工程师ACA认证(Alibaba Cloud Certified Associate - Cloud Computing)考试大纲-V3.0
  15. 1tb等于多少g 1TB和500G有什么区别
  16. Altium Designer画板子步骤
  17. C---calloc
  18. NGUI渲染机制——从顶点和UV说起
  19. Cauchy-Riemann方程的极坐标形式(翻译)
  20. 【电信增值业务学习笔记】9基于智能网的增值业务实现技术和应用

热门文章

  1. 视觉错觉模型_极具视觉爆发力的影院设计
  2. android 数据文件存储,实例详解Android文件存储数据方式
  3. python read函数报错_python 使用read_csv读取 CSV 文件时报错
  4. vue4 跳转外部链接_vue跳转到外部链接
  5. 基于php的外卖订餐系统开题报告_石化二小参加区2020省市级现代教育技术课题研究开题会议...
  6. 二十四节气插画素材,每一张都带你如感
  7. 手绘平面设计邮票插画素材,复古元素走起
  8. 网页ui设计模板素材|液体流动效果!
  9. 王者荣耀s12赛季服务器维护,王者荣耀S12赛季延期,这篇攻略让我段位狂涨!
  10. insert into 时间_值得花点时间背记的out of有关短语