K8S实战
01、K8s实战:Windows10安装Docker,配置阿里云加速器
02、K8s实战:基础知识之简介
03、K8s实战:基础知识之组件
04、K8s实战:Centos7.6yum安装Docker,配置阿里云加速器
05、K8s实战:Centos7.6安装dockercompose
06、K8s实战:Centos7.6使用Ansible安装K8S(测试单节点)
07、K8s实战:Dockercompose安装中文版GitLab,配置SSH免密登录
08、K8s实战:Centos7.6安装私服Harbor
09、K8s实战:SpringBoot使用jib打包Docker镜像至私服
10、K8s实战:dockercompose之网络设置
11、K8s实战:使用开源项目io.fabric8之docker
12、K8s实战:二进制方式搭建K8S集群(环境准备)
13、K8s实战:二进制方式搭建K8S集群(完结)
14、K8s实战:K8S管理平台Rancher安装及集群导入
15、K8s实战:陈述式管理之kubectl常用命令
16、K8s实战:声明式管理示例之K8S部署Nginx及修改删除
17、K8s实战:K8S存储Volume之ConfigMap
18、K8s实战:K8S存储Volume之Secret
19、K8s实战:K8S存储之emptyDir+hostPath
20、K8s实战:K8S存储之NFSPVPVC
21、K8s实战:K8S控制器之ReplicaSet
22、K8s实战:K8S控制器之Deployment
23、K8s实战:K8S控制器之DaemonSet
24、K8s实战:K8S控制器之JobCronJob
25、K8s实战:K8S之Service
26、K8s实战:K8S之Ingress
27、K8s实战:K8S之Schedule
28、K8s实战:K8S之Helm安装与配置
29、K8s实战:K8S之部署微服务项目实战
本文档使用 MrDoc 发布
-
+
首页
21、K8s实战:K8S控制器之ReplicaSet
### **什么是控制器** Pod是Kubernetes中的最小调度单位,但是Pod自身出现故障不能自愈,所以K8S内置了很多控制器,用来控制Pod的具体状态和行为。在使用Pod时,应当通过控制器来创建及管理Pod。 **特性:** - 水平扩展 - 版本更新 - 故障恢复 **类型:** - ReplicationController(RC已淘汰) - ReplicaSet - Deployment - StatefulSet - DaemonSet - Job - CronJob - HPA **ReplicaSet** **定义** ReplicaSet的目的是维护在任何给定时间运行的稳定的副本Pod集。如果有Pod异常退出,会自动创建一个新的替代,因此,它通常用于保证指定数量的相同Pod的可用性。( 官方推荐使用 Deployment 替代 ReplicaSet) **工作方式** ReplicaSet的定义中,包含: - selector: 用于指定哪些 Pod 属于该 ReplicaSet 的管辖范围 - replicas: 副本数,用于指定该 ReplicaSet 应该维持多少个 Pod 副本 - template: Pod模板,在 ReplicaSet 使用 Pod 模板的定义创建新的 Pod ReplicaSet 控制器将通过创建或删除 Pod,以使得当前 Pod 数量达到 replicas 指定的期望值。ReplicaSet 创建的 Pod 中,都有一个字段 metadata.ownerReferences 用于标识该 Pod 从属于哪一个 ReplicaSet。 ReplicaSet 通过 selector 字段的定义,识别哪些 Pod 应该由其管理。如果 Pod 没有 ownerReference 字段,或者 ownerReference 字段指向的对象不是一个控制器,且该 Pod 匹配了 ReplicaSet 的 selector,则该 Pod 的 ownerReference 将被修改为 该 ReplicaSet 的引用。 ### **创建** ```python # 查看rs模板信息 kubectl explain rs # vim nginx-rs.yaml # 内容 apiVersion: apps/v1 kind: ReplicaSet metadata: name: frontend spec: # 副本数 replicas: 3 # 标签选择器,匹配tier: frontend selector: matchLabels: tier: frontend # 模板,定义怎么创建RS template: metadata: # 添加标签 labels: tier: frontend spec: containers: - name: nginx image: daocloud.io/library/nginx:1.7.11 ports: - name: nginx-port containerPort: 80 # 创建并查看,此时有三个pod被创建 kubectl create -f nginx-rs.yaml kubectl get rs kubectl describe rs/frontend kubectl get pods --show-labels ```  **删除** ```python # 只删除rs,不删除pod,可以创建新的rs来替代 kubectl delete rs frontend --cascade=false # rs及pod都会被删除 kubectl delete rs frontend ``` **Pod隔离** 修改Pod 的标签,可以使 Pod 脱离 ReplicaSet 的管理,ReplicaSet 将立刻自动创建一个新的 Pod 以维持其指定的 replicas 副本数。 ```python # 修改标签 ,然后发现有四个pod kubectl edit pod frontend-5k6mj kubectl get pod ``` **自动伸缩** HPA概念 Horizontal Pod Autoscaling可以根据指标自动伸缩控制器中的Pod数量 ```python # 将frontend控制器中的POD伸缩为5个副本,此时会创建一个hpa kubectl autoscale rs frontend --max=5 # 查看hpa kubectl get hpa frontend ```
李智
2025年3月17日 13:28
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码