金鱼哥RHCA回忆录: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 回忆录
如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。
如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!
- 点赞
- 收藏
- 关注作者
评论(0)