kubernetes资源--RC和RS

简介: Replication Controller(RC) RC是K8S中的另一个核心概念,应用托管在K8S后,K8S需要保证应用能够持续运行,这是RC的工作内容。 主要功能 确保pod数量:RC用来管理正常运行Pod数量,一个RC可以由一个或多个Pod组成,在RC被创建后,系统会根据定义好的副本数来创建Pod数量。

Replication Controller(RC)

RC是K8S中的另一个核心概念,应用托管在K8S后,K8S需要保证应用能够持续运行,这是RC的工作 内容。

主要功能

确保pod数量:RC用来管理正常运行Pod数量,一个RC可以由一个或多个Pod组成,在RC被创建后,系统会根据定义好的副本数来创建Pod数量。在运行过程中,如果Pod数量小于定义的,就会重启停止的或重新分配Pod,反之则杀死多余的。

确保pod健康:当pod不健康,运行出错或者无法提供服务时,RC也会杀死不健康的pod,重新创建新的。

弹性伸缩 :在业务高峰或者低峰期的时候,可以通过RC动态的调整pod的数量来提高资源的利用率。同时,配置相应的监控功能(Hroizontal Pod Autoscaler),会定时自动从监控平台获取RC关联pod的整体资源使用情况,做到自动伸缩。

滚动升级:滚动升级为一种平滑的升级方式,通过逐步替换的策略,保证整体系统的稳定,在初始化升级的时候就可以及时发现和解决问题,避免问题不断扩大。


弹性伸缩

  弹性伸缩是指适应负载变化,以弹性可伸缩的方式提供资源。反映到K8S中,指的是可根据负载的高低动态调整Pod的副本数量。调整Pod的副本数是通过修改RC中Pod的副本是来实现的,示例命令如下:

  扩容Pod的副本数目到10

kubectl scalerelicationcontroller yourRcName --replicas=10

缩容Pod的副本数目到1

kubectl scalerelicationcontroller yourRcName --replicas=1

滚动升级

滚动升级是一种平滑过渡的升级方式,通过逐步替换的策略,保证整体系统的稳定,在初始升级的时候就可以及时发现、调整问题,以保证问题影响度不会扩大。

升级方式

使用配置文件升级

kubectlrolling-update test-rc-v1 -f test-rc.yaml --update-period=10s

直接使用images

kubectlrolling-update test-rc --image=webapache:v3

升级过程

升级开始后,首先依据提供的定义文件创建v2版本的RC,然后每隔10s(--update-period=10s)逐步的增加v2版本的Pod副本数,逐步减少v1版本Pod的副本数。升级完成之后,删除v1版本的RC,保留v2版本的RC,及实现滚动升级。

升级回滚

升级过程中,发生了错误中途退出时,可以选择继续升级。K8S能够智能的判断升级中断之前的状态,然后紧接着继续执行升级。当然,也可以进行回退,命令如下:

kubectlrolling-update my-rcName-v1 -f my-rcName-v2-rc.yaml --update-period=10srollback

yaml文件例子

升级之前的yaml文件为

apiVersion: v1

kind: ReplicationController

metadata:

 name: test-rc

 labels:

 app: apache

 version: v1

spec:

 replicas: 5

 selector:

 app: apache

 version: v1

 template:

 metadata:

 labels:

 app: apache

 version: v1

 spec:

 containers:

 - name: apache-rc

 image: web:apache

 command: [ "sh", "/etc/run.sh" ]

 ports:

 - containerPort: 80

 name: http

 protocol: TCP


升级用的yaml文件内容为

apiVersion: v1

kind: ReplicationController

metadata:

 name: test-rc-v2

 labels:

 app: apache

 version: v1

spec:

 replicas: 50

 selector:

 app: apache

 version: v2

 template:

 metadata:

 labels:

 app: apache

 version: v2

 spec:

 containers:

 - name: apache-rc-v2

 image: web:apache

 command: [ "sh", "/etc/run.sh" ]

 ports:

 - containerPort: 80

 name: http

 protocol: TCP

·注意事项

要求新的RC需要使用旧的RC的Namespace。

RC的名字(name)不能与旧的RC的名字相同;

在selector中应至少有一个Label与旧的RC的Label不同,以标识其为新的RC。

metadata与之前相同,否则升级后service无法对应上。


replica set(RS)

被认为 是“升级版”的RC。RS也是用于保证与label selector匹配的pod数量维持在期望状态。

区别在于,

1、RC只支持基于等式的selector(env=dev或environment!=qa),但RS还支持新的,基于集合的selector(version in (v1.0, v2.0)或env notin (dev, qa)),这对复杂的运维管理很方便。

2、升级方式

RS不能使用kubectlrolling-update进行升级

kubectl rolling-update专用于rc

RS升级使用deployment或者kubectl replace命令


社区引入这一API的初衷是用于取代vl中的RC,也就是说当v1版本被废弃时,RC就完成了它的历史使命,而由RS来接管其工作。


yaml文件例子

apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
 name: test-rs
 labels:
 software: apache
 project: test
 app: test-rs
 version: v1
spec:
 replicas: 2
 selector:
 matchLabels:
 name: test-rs
 software: apache
 project: test
 app: test-rs
 version: v1
 template:
 metadata:
 labels:
 name: test-rs
 software: apache
 project: test
 app: test-rs
 version: v1
 spec:
 containers:
 - name: test-rs
 image: web:apache
 command: [ "sh", "/etc/run.sh" ]
 ports:
 - containerPort: 80
 name: http
 protocol: TCP
本文转自开源中国- kubernetes资源--RC和RS
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
运维 Kubernetes 监控
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
59 0
|
2月前
|
存储 Kubernetes 负载均衡
Kubernetes的“厨房”:架构是菜谱,组件是厨具,资源对象是食材(下)
本文深入探讨了Kubernetes(K8s)的架构、核心组件以及资源对象。Kubernetes作为一个开源的容器编排系统,通过其独特的架构设计和丰富的组件,实现了对容器化应用程序的高效管理和扩展。通过本文的介绍,读者可以深入了解Kubernetes的架构、核心组件以及资源对象,从而更好地应用和管理容器化应用程序。Kubernetes的灵活性和可扩展性使得它成为容器编排领域的领先者,为企业提供了强大的容器运行环境。
|
5月前
|
Kubernetes Cloud Native 应用服务中间件
云原生|kubernetes|ResourceQuota 资源与准入控制器
云原生|kubernetes|ResourceQuota 资源与准入控制器
64 0
|
5月前
|
Kubernetes 网络协议 Docker
k8s教程(service篇)-资源定义详解
k8s教程(service篇)-资源定义详解
41 0
|
1月前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
25 0
|
2月前
|
Kubernetes 网络协议 应用服务中间件
K8S管理核心资源的三种基本方法
K8S管理核心资源的三种基本方法
28 0
|
2月前
|
Kubernetes API 调度
Kubernetes的“厨房”:架构是菜谱,组件是厨具,资源对象是食材(上)
本文深入探讨了Kubernetes(K8s)的架构、核心组件以及资源对象。Kubernetes作为一个开源的容器编排系统,通过其独特的架构设计和丰富的组件,实现了对容器化应用程序的高效管理和扩展。通过本文的介绍,读者可以深入了解Kubernetes的架构、核心组件以及资源对象,从而更好地应用和管理容器化应用程序。Kubernetes的灵活性和可扩展性使得它成为容器编排领域的领先者,为企业提供了强大的容器运行环境。
|
3月前
|
Kubernetes 调度 微服务
K8s 生产最佳实践 - 限制 NameSpace 资源用量
K8s 生产最佳实践 - 限制 NameSpace 资源用量
|
3月前
|
Kubernetes Linux 调度
「译文」深入了解 Kubernetes 指标 - 第三部分 - 容器资源指标
「译文」深入了解 Kubernetes 指标 - 第三部分 - 容器资源指标
|
5月前
|
Prometheus Kubernetes Cloud Native
kubernetes|云原生|Deployment does not have minimum availability 的解决方案(资源隐藏的由来)
kubernetes|云原生|Deployment does not have minimum availability 的解决方案(资源隐藏的由来)
546 0