K8S——RC与RS的介绍及区别

本文介绍了Kubernetes中的RS(ReplicaSet)和RC(ReplicationController),探讨了两者之间的关联和差异,指出RC已被官方建议用RS替代。详细讲述了如何通过RS与Deployment进行应用管理,包括创建、扩容、回滚等操作,提供了具体的命令示例。
摘要由CSDN通过智能技术生成

RS与RC与Deployment关联

RC (ReplicationController )主要的作用就是用来确保容器应用的副本数始终保持在用户定义的副本数 。即如
果有容器异常退出,会自动创建新的Pod来替代;而如果异常多出来的容器也会自动回收

Kubernetes 官方建议使用 RS(ReplicaSet ) 替代 RC (ReplicationController ) 进行部署,RS 跟 RC 没有
本质的不同,只是名字不一样,并且 RS 支持集合式的 selector

pull nginx镜像

docker pull nginx
#查看镜像
docker images#TAG是latest

建立演示文件

创建rs.yaml

apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
  name: frontend
spec:
  replicas: 3    #有三个模板
  selector:       #标签选择器
    matchLabels:
      tier: frontend
  template:     #模板
    metadata:
      labels:
        tier: frontend
    spec:
      containers:
       - name: myapp
         image: nginx:latest
         env:
         - name: GET_HOSTS_FROM
           value: dns
         ports:
         - containerPort: 80

创建pod:

kubectl create -f  rs.yaml

查看rs

[root@apiserver ~]# kubectl get rs
NAME       DESIRED   CURRENT   READY   AGE
frontend   3         3         3       21s

查看pod
这里要等一会

[root@apiserver ~]# kubectl get pod
NAME             READY   STATUS    RESTARTS   AGE
frontend-87wtq   1/1     Running   0          23s
frontend-r8kjt   1/1     Running   0          23s
frontend-w7n98   1/1     Running   0          23s

查看rs标签

[root@apiserver ~]# kubectl get pod --show-labels
NAME             READY   STATUS    RESTARTS   AGE     LABELS
frontend-87wtq   1/1     Running   0          2m39s   tier=frontend
frontend-r8kjt   1/1     Running   0          2m39s   tier=frontend
frontend-w7n98   1/1     Running   0          2m39s   tier=frontend

修改pod标签
pod标签是pod的唯一标识符
将frontend-87wtq tier=frontend1

[root@apiserver ~]# kubectl label pod frontend-87wtq tier=frontend1
error: 'tier' already has a value (frontend), and --overwrite is false
[root@apiserver ~]# kubectl label pod frontend-87wtq tier=frontend1 --overwrite=true
pod/frontend-87wtq labeled
[root@apiserver ~]# kubectl get pod --show-labels
NAME             READY   STATUS    RESTARTS   AGE     LABELS
frontend-87wtq   1/1     Running   0          5m49s   tier=frontend1
frontend-r8kjt   1/1     Running   0          5m49s   tier=frontend
frontend-w7n98   1/1     Running   0          5m49s   tier=frontend
frontend-wh4xx   1/1     Running   0          2s      tier=frontend

查看rs
发现还是3个

[root@apiserver ~]# kubectl get rs
NAME       DESIRED   CURRENT   READY   AGE
frontend   3         3         3       24m

这时我们会发现rs的数量没有变,pod的数量多了一个,原因是rs replicas:3是以标签tier=frontend为准,当修改标签后。
会自动创建和原来标签一样的pod,当删除rs之后,还会存留tier=frontend1的pod

[root@apiserver ~]# kubectl delete rs --all
replicaset.extensions "frontend" deleted
[root@apiserver ~]# 
[root@apiserver ~]# kubectl get pod --show-labels 
NAME             READY   STATUS    RESTARTS   AGE   LABELS
frontend-87wtq   1/1     Running   0          29m   tier=frontend1

RS与Deployment的关联

在这里插入图片描述

Deployment

Deployment 为 Pod 和 ReplicaSet 提供了一个声明式定义(declarative)方法,用来替代以前的
ReplicationController 来方便的管理应用。典型的应用场景包括:

  • 定义Deployment来创建Pod和ReplicaSet
  • 滚动升级和回滚应用
  • 扩容和缩容
  • 暂停和继续Deployment

1. 创建deployment.yaml文件

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: ngin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值