金鱼哥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 回忆录

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

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

目录
相关文章
|
消息中间件 运维 算法
金鱼哥RHCA回忆录:CL210OpenStack操作的故障排除--章节实验
第九章 OpenStack操作的故障排除--章节实验
544 2
金鱼哥RHCA回忆录:CL210OpenStack操作的故障排除--章节实验
|
运维 Kubernetes 监控
金鱼哥RHCA回忆录:DO280管理和监控OpenShift平台--资源限制
第九章 管理和监控OpenShift平台--资源限制
167 0
金鱼哥RHCA回忆录:DO280管理和监控OpenShift平台--资源限制
|
运维 监控 Kubernetes
金鱼哥RHCA回忆录:DO280管理和监控OpenShift平台--使用probes监视应用
第九章 管理和监控OpenShift平台--使用probes监视应用
215 0
金鱼哥RHCA回忆录:DO280管理和监控OpenShift平台--使用probes监视应用
|
存储 运维 监控
金鱼哥RHCA回忆录:DO280管理和监控OpenShift平台--OCP升级
第九章 管理和监控OpenShift平台–OCP升级
140 0
金鱼哥RHCA回忆录:DO280管理和监控OpenShift平台--OCP升级
|
运维 JavaScript 关系型数据库
金鱼哥RHCA回忆录:DO280管理应用部署--管理image 、IS、Templates与章节实验
第七章 DO280管理应用部署--管理image 、IS、Templates与章节实验
193 0
 金鱼哥RHCA回忆录:DO280管理应用部署--管理image 、IS、Templates与章节实验
|
存储 Kubernetes 监控
金鱼哥RHCA回忆录:DO280安装和配置Metric系统
第八章 安装和配置Metric系统
222 0
 金鱼哥RHCA回忆录:DO280安装和配置Metric系统
|
JSON 运维 安全
金鱼哥RHCA回忆录:DO280OpenShift网络--创建router
第三章 OpenShift网络--创建router
343 0
金鱼哥RHCA回忆录:DO280OpenShift网络--创建router
|
JSON 运维 负载均衡
金鱼哥RHCA回忆录:DO280OpenShift网络--创建router练习与章节实验
第三章 OpenShift网络--创建router练习与章节实验
180 0
金鱼哥RHCA回忆录:DO280OpenShift网络--创建router练习与章节实验
|
运维 Linux 数据安全/隐私保护
金鱼哥RHCA回忆录:DO280OpenShift安装与部署--安装部署与验证
第二章 OpenShift安装与部署--安装部署与验证
229 0
金鱼哥RHCA回忆录:DO280OpenShift安装与部署--安装部署与验证
|
运维 Kubernetes 负载均衡
金鱼哥RHCA回忆录:DO280OpenShift网络--平台网络实现
第三章 OpenShift网络--平台网络实现
190 0
金鱼哥RHCA回忆录:DO280OpenShift网络--平台网络实现