金鱼哥RHCA回忆录:DO280管理应用部署--RC

简介: 第七章 DO280管理应用部署--RC
🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质: CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥

🎈支持我:可点赞👍、可收藏⭐️、可留言📝


📜REPLICATION CONTROLLERS

📑RC概述

RC确保pod指定数量的副本一直运行。如果pod被杀死或被管理员显式删除,复制控制器将自动部署相应的pod。类似地,如果运行的pod数量超过所需的数量,它会根据需要删除pod,以匹配指定的副本计数。

RC的定义主要包括:

  • 所需的副本数量
  • 用于创建复制pod的pod定义
  • 用于标识后续管理操作的selector

selector是一组label,RC管理的所有pod都必须匹配这些标签。RC实例化的pod定义中必须包含相同的标签集。RC使用这个selector来确定已经运行了多少pod实例,以便根据需要进行调整。

注意:不执行自动缩放,因为它不跟踪负载或流量。

尽管Kubernetes通常直接管理RC,但OpenShift推荐的方法是管理根据需要创建或更改RC的DC。


📑从DC创建RC

在OpenShift中创建应用程序的最常见方法是使用oc new-app命令或web控制台。以这种方式创建的应用程序使用DeploymentConfig资源在运行时创建RC来创建应用程序pod。DeploymentConfig资源定义定义了要创建的pod的副本的数量,以及要创建的pod的模板。

注意:不要将DeploymentConfig或ReplicationController资源中的template属性误认为OpenShift模板资源类型,OpenShift模板资源用于基于一些常用的语言运行时和框架构建应用程序。

在这里插入图片描述

①指定要运行的pod的拷贝数(或副本数)。

②复制控制器使用选择器来计数正在运行的pod的数量,就像服务使用选择器来查找要进行负载平衡的pod一样。

③控制器创建的pods模板。

④复制控制器创建的pods上的标签必须与选择器上的标签匹配


📑pod副本数控制

DeploymentConfig或ReplicationController资源中的副本数量可以使用oc scale命令动态更改。

$ oc get dc
NAME REVISION DESIRED CURRENT TRIGGERED BY
myapp   1         3        3      config,image(scaling:latest)
$ oc scale --replicas=5 dc myapp

DeploymentConfig资源将更改信息传递至ReplicationController,该控制器通过创建新的pod(副本)或删除现有的pod来响应更改。

虽然可以直接操作ReplicationController资源,但推荐的做法是操作DeploymentConfig资源。在触发部署时,直接对ReplicationController资源所做的更改可能会丢失,例如,使用容器image的新版本重新创建pod。


📑自动伸缩pod

OpenShift可以通过HorizontalPodAutoscaler资源类型根据应用程序pod上的当前负载自动调整部署配置。

HorizontalPodAutoscaler (HPA)资源使用OpenShift metrics子系统收集的性能指标,即如果没有度量子系统(模块),更确切地说是Heapster组件,自动缩放是不可能的。

创建HorizontalPodAutoscaler资源的推荐方法是使用oc autoscale命令,例如:

$ oc autoscale dc/myapp --min 1 --max 10 --cpu-percent=80

该命令创建一个HorizontalPodAutoscaler资源,该资源更改myapp部署配置上的副本数量,以将其pod的CPU使用量控制在请求的总CPU使用量的80%以下。

oc autoscale命令使用DC的名称作为参数(在前面的示例中是myapp)创建一个HorizontalPodAutoscaler资源。

HorizontalPodAutoscaler资源的最大值和最小值用于容纳突发负载,并避免OpenShift集群过载。如果应用程序上的负载变化太快,建议保留一些备用的pod来处理突然出现的用户请求。相反,过多的pod会耗尽所有集群容量,并影响共享相同OpenShift集群的其他应用程序。

要获取当前项目中关于HorizontalPodAutoscaler资源的信息,可使用oc get和oc describe命令。例如

$ oc get hpa/frontend
$ oc describe hpa/frontend

注意:HorizontalPodAutoscaler资源只适用于为引用性能指标定义资源请求的pod。

oc new-app命令创建的大多数pod没有定义任何资源请求。因此,使用OpenShift autoscaler可能需要为应用程序创建定制的YAML或JSON资源文件,或者向项目添加资源范围资源。


📜课本练习

📑环境准备

[student@workstation ~]$ lab install-prepare setup
[student@workstation ~]$ cd /home/student/do280-ansible
[student@workstation do280-ansible]$ ./install.sh

提示:若已经拥有一个完整环境,可不执行


📑创建应用

[student@workstation ~]$ oc login -u developer -p redhat https://master.lab.example.com
[student@workstation ~]$ oc new-project scaling
[student@workstation ~]$ oc new-app -o yaml -i php:7.0 \
http://registry.lab.example.com/scaling > ~/scaling.yml        #将部署的yaml导出至本地
[student@workstation ~]$ vim ~/scaling.yml
……
  spec:
    replicas: 3
    selector:
      app: scaling
      deploymentconfig: scaling                #修改副本数
……
[student@workstation ~]$ oc create -f ~/scaling.yml    #以修改副本数后的yaml部署应用

📑监视部署

[student@workstation ~]$ watch -n 3 oc get builds
Every 3.0s: oc get builds                                                                     Wed Mar  3 21:31:11 2021

NAME        TYPE      FROM          STATUS     STARTED              DURATION
scaling-1   Source    Git@0bdae71   Complete   About a minute ago   29s 
[student@workstation ~]$ oc get pods
NAME              READY     STATUS      RESTARTS   AGE
scaling-1-9dd8r   1/1       Running     0          1m
scaling-1-build   0/1       Completed   0          2m
scaling-1-r97zl   1/1       Running     0          1m
scaling-1-z4zdg   1/1       Running     0          1m

📑暴露服务

[student@workstation ~]$ oc expose service scaling --hostname=scaling.apps.lab.example.com

📑web查看相关信息

浏览器访问https://master.lab.example.com,使用developer用户和redhat密码登陆。选择scaling项目。

在这里插入图片描述
在这里插入图片描述


📑测试负载均衡

[student@workstation ~]$ oc get pod -o wide
NAME              READY     STATUS      RESTARTS   AGE       IP             NODE
scaling-1-9dd8r   1/1       Running     0          1h        10.128.0.189   node1.lab.example.com
scaling-1-build   0/1       Completed   0          1h        10.128.0.187   node1.lab.example.com
scaling-1-r97zl   1/1       Running     0          1h        10.129.0.253   node2.lab.example.com
scaling-1-z4zdg   1/1       Running     0          1h        10.128.0.188   node1.lab.example.com


[student@workstation ~]$ for i in {1..5};do curl -s http://scaling.apps.lab.example.com | grep IP;done
<br/> Server IP: 10.128.0.189 
 <br/> Server IP: 10.129.0.253 
 <br/> Server IP: 10.128.0.188 
 <br/> Server IP: 10.128.0.189 
 <br/> Server IP: 10.129.0.253

浏览器可能无法严格检查均衡性,因为OpenShift route存在会话关联性(也称为粘性会话)。即来自同一个web浏览器的所有请求都将转到同一个pod。


📑扩容应用

[student@workstation ~]$ oc describe dc scaling | grep Replicas
Replicas:    3
    Replicas:    3 current / 3 desired
[student@workstation ~]$ oc scale --replicas=5 dc scaling

在这里插入图片描述

[student@workstation ~]$ oc get pod -o wide
NAME              READY     STATUS      RESTARTS   AGE       IP             NODE
scaling-1-9dd8r   1/1       Running     0          1h        10.128.0.189   node1.lab.example.com
scaling-1-build   0/1       Completed   0          1h        10.128.0.187   node1.lab.example.com
scaling-1-hmzk8   1/1       Running     0          33s       10.129.0.254   node2.lab.example.com
scaling-1-pf9bh   1/1       Running     0          33s       10.129.0.255   node2.lab.example.com
scaling-1-r97zl   1/1       Running     0          1h        10.129.0.253   node2.lab.example.com
scaling-1-z4zdg   1/1       Running     0          1h        10.128.0.188   node1.lab.example.com

📑测试负载均衡

[student@workstation ~]$ for i in {1..5};do curl -s http://scaling.apps.lab.example.com | grep IP;done
 <br/> Server IP: 10.128.0.188 
 <br/> Server IP: 10.128.0.189 
 <br/> Server IP: 10.129.0.253 
 <br/> Server IP: 10.129.0.254 
 <br/> Server IP: 10.129.0.255

📑清除实验

[student@workstation ~]$ oc delete project scaling
project "scaling" deleted

💡总结

RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

以上就是【金鱼哥】对 第七章 DO280管理应用部署--RC 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

💾 红帽认证专栏系列:
RHCSA专栏: 戏说 RHCSA 认证
RHCE专栏: 戏说 RHCE 认证
此文章收录在RHCA专栏: RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

目录
相关文章
|
数据库
【mlflow系列3】mlflow 升级(upgrade)
【mlflow系列3】mlflow 升级(upgrade)
639 0
【mlflow系列3】mlflow 升级(upgrade)
|
8月前
|
JSON 安全 中间件
Python Web 框架 FastAPI
FastAPI 是一个现代的 Python Web 框架,专为快速构建 API 和在线应用而设计。它凭借速度、简单性和开发人员友好的特性迅速走红。FastAPI 支持自动文档生成、类型提示、数据验证、异步操作和依赖注入等功能,极大提升了开发效率并减少了错误。安装简单,使用 pip 安装 FastAPI 和 uvicorn 即可开始开发。其优点包括高性能、自动数据验证和身份验证支持,但也存在学习曲线和社区资源相对较少的缺点。
363 15
|
6月前
|
存储 人工智能 自然语言处理
智能体模拟《西部世界》一样的社会,复旦大学等出了篇系统综述
复旦大学等机构学者发表综述,探讨基于大型语言模型(LLM)的智能体在社会模拟中的应用与前景。文章将智能体模拟分为个体、场景和社会三种类型,为社会学研究提供全新视角和工具。然而,该技术也面临准确性、隐私保护及社会不平等等伦理挑战,需加强技术标准与法律法规建设以推动其健康发展。
152 9
|
12月前
|
NoSQL 关系型数据库 MySQL
不是 PHP 不行了,而是 MySQL 数据库扛不住啊
【9月更文挑战第8天】这段内容讨论了MySQL在某些场景下面临的挑战及其原因,并指出这些问题不能完全归咎于MySQL本身。高并发读写压力、数据量增长以及复杂查询和事务处理都可能导致性能瓶颈。然而,应用程序设计不合理、系统架构不佳以及其他数据库选择和优化策略不足也是重要因素。综合考虑这些方面才能有效解决性能问题,而MySQL通过不断改进和优化,仍然是许多应用场景中的可靠选择。
234 9
|
8月前
|
Ubuntu Linux 网络安全
Linux磁盘挂接教程
Linux磁盘挂接教程
159 14
|
11月前
|
人工智能 自然语言处理 程序员
跨界码王:21天从产品汪到攻城狮
《跨界码王:21天从产品汪到攻城狮》—— AI师傅(AI-Shifu.com)携手通义灵码带你飞。本文记录了一名产品经理从零开始学习Python编程的过程,通过AI师傅的指导和通义灵码的帮助,成功实现了一个减肥餐工具,并逐步优化需求,最终跑通了140行代码。文章生动展现了编程学习的奇妙旅程,鼓励更多编程小白勇敢尝试编程,实现自己的创意。
268 9
|
API
Echarts实战案例代码(28):象形图与dataZoom组件实现大事记进度图
Echarts实战案例代码(28):象形图与dataZoom组件实现大事记进度图
293 0
|
设计模式 前端开发 数据库
微服务架构谈(4) plus:DDD 分层架构如何推动架构演进
微服务架构谈(4) plus:DDD 分层架构如何推动架构演进
1142 0
微服务架构谈(4) plus:DDD 分层架构如何推动架构演进
|
开发框架 前端开发 .NET
CodeWF.EventBus:轻量级事件总线,让通信更流畅
CodeWF.EventBus,一款灵活的事件总线库,实现模块间解耦通信。支持多种.NET项目类型,如WPF、WinForms、ASP.NET Core等。采用简洁设计,轻松实现事件的发布与订阅。通过有序的消息处理,确保事件得到妥善处理。简化您的代码,提升系统可维护性。
|
开发工具 git 开发者
使用Git进行版本控制的最佳实践
【6月更文挑战第3天】使用Git进行版本控制的最佳实践包括:初始化配置Git仓库,设置个人信息和默认编辑器;提交信息要简洁明了,使用有意义的标题和描述;分支管理中,为新功能或修复创建分支,定期合并并保持主分支稳定;进行代码审查以保证质量;使用标签标记里程碑;忽略不必要的文件;定期备份仓库并学会恢复操作;不断学习和实践Git的高级用法。遵循这些实践可提升开发效率和代码质量。