【K8s】专题四(3):Kubernetes 控制器之 ReplicaSet

2024-06-03 17:28

本文主要是介绍【K8s】专题四(3):Kubernetes 控制器之 ReplicaSet,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!

公众号二维码


目录

一、基本介绍

二、工作原理

三、相关特性

四、资源清单(示例)

五、常用操作


一、基本介绍

前文【K8s】专题四(2):Kubernetes 控制器之 Deployment 中提到了副本集控制器 ReplicaSet,本文将对其展开介绍。

ReplicaSet 控制器是 Kubernetes 的一个 API 对象,它负责维护一组指定数量的 Pod 副本始终运行在 Kubernetes 集群中。当某个 Pod 副本因为故障而终止,ReplicaSet 会及时、自动创建新的 Pod 副本对其进行替换。

ReplicaSet 通常与 Deployment 一起使用,由 Deployment 控制器管理 ReplicaSet 的生命周期和更新。


二、工作原理
  • 定义对象:用户在创建 Deployment 对象时自动创建一个 ReplicaSet 对象,指定 Pod 模板和副本数量
  • 监控 Pod:ReplicaSet 通过 Label 标签以及 Selector 标签选择器识别并监控由其管理的所有 Pod,如果任何 Pod 副本失败(例如,因为容器崩溃或节点故障),ReplicaSet 控制器会自动替换它们,以确保始终有指定数量的 Pod 副本运行
  • 管理更新:当 Deployment 对象有更新时,系统自动创建一个新的 ReplicaSet,新 ReplicaSet 的 Pod 副本数逐步增加至预期值,旧 ReplicaSet 的 Pod 副本数逐步减少至 0


三、相关特性
  • 副本机制:确保集群中始终有指定数量的 Pod 副本运行
  • 自动替换:自动替换失败的 Pod 副本,无需手动干预
  • 滚动更新:支持滚动更新,逐步替换旧的 Pod 副本,以减少服务中断
  • 管理 Pod:使用标签选择器来识别和管理 Pod,确保只有匹配标签的 Pod 被管理
  • 声明式操作:用户只需声明期望的状态,ReplicaSet 会自动实现这一状态
  • 可扩展性:适用于大规模集群,可以管理成千上万的 Pod 副本
  • 生命周期:通常作为 Deployment 的一部分,由 Deployment 管理其生命周期


四、资源清单(示例)
# replicaset.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:name: demo-replicaset
spec:replicas: 3selector:matchLabels:app: demo-replicasettemplate:metadata:labels:app: demo-replicasetspec:containers:- name: demo-containerimage: demo-image:latestports:- containerPort: 80

上述 replicaset.yaml 文件定义了一个名为 demo-replicaset 的 ReplicaSet 对象,该对象包括 3 个 Pod 副本,每个 Pod 包含一个名为 demo-container 的业务容器,业务容器使用 demo-image:latest 镜像,并指定监听端口为 80。

说明:可以通过以下命令查看 ReplicaSet 资源清单支持定义的内容

kubectl explain replicaset --recursive


五、常用操作

1、创建 ReplicaSet

# 方式一:命令行
kubectl create replicaset demo-replicaset --image=demo-image:latest# 方式二:资源清单
kubectl create -f replicaset.yaml
或
kubectl apply -f replicaset.yaml

2、查看 ReplicaSet

# 查看实例列表
kubetcl get replicaset# 查看详细信息
kubectl describe replicaset demo-replicaset

3、删除 ReplicaSet

# 方式一:命令行
kubectl delete replicaset demo-replicaset# 方式二:资源清单
kubectl delete -f replicaset.yaml

4、副本伸缩

kubectl scale replicaset demo-replicaset --replicas=1 

这篇关于【K8s】专题四(3):Kubernetes 控制器之 ReplicaSet的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1027638

相关文章

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

k8s中实现mysql主备过程详解

《k8s中实现mysql主备过程详解》文章讲解了在K8s中使用StatefulSet部署MySQL主备架构,包含NFS安装、storageClass配置、MySQL部署及同步检查步骤,确保主备数据一致... 目录一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

k8s搭建nfs共享存储实践

《k8s搭建nfs共享存储实践》本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限... 目录1. NFS搭建1.1 部署NFS服务端1.1.1 下载nfs-utils和rpcbind1.1

k8s容器放开锁内存限制问题

《k8s容器放开锁内存限制问题》nccl-test容器运行mpirun时因NCCL_BUFFSIZE过大导致OOM,需通过修改docker服务配置文件,将LimitMEMLOCK设为infinity并... 目录问题问题确认放开容器max locked memory限制总结参考:https://Access

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

详解如何在SpringBoot控制器中处理用户数据

《详解如何在SpringBoot控制器中处理用户数据》在SpringBoot应用开发中,控制器(Controller)扮演着至关重要的角色,它负责接收用户请求、处理数据并返回响应,本文将深入浅出地讲解... 目录一、获取请求参数1.1 获取查询参数1.2 获取路径参数二、处理表单提交2.1 处理表单数据三、

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

k8s部署MongDB全过程

《k8s部署MongDB全过程》文章介绍了如何在Kubernetes集群中部署MongoDB,包括环境准备、创建Secret、创建服务和Deployment,并通过Robo3T工具测试连接... 目录一、环境准备1.1 环境说明1.2 创建 namespace1.3 创建mongdb账号/密码二、创建Sec