其他分享
首页 > 其他分享> > kubernetes之ReplicaSet

kubernetes之ReplicaSet

作者:互联网

1.什么是ReplicaSet?

2.RepliicaSet的组成部分

2.1 ReplicaSet控制器包含了3个基本的组成部分;
1.Selector:标签选择器,匹配并关联Pod对象,并加入控制器的管理;
2.Replicas:期望的副本数,期望在集群所运行的Pod的数量;
3.template:Pod模板,其实就是Pod的规范,相当于把一个Pod的描述以模板嵌套进了ReplicaSet;

3.ReplicaSet的资源规范

点击查看代码
ReplicaSet配置文件示例:
apiVersion: apps/v1   # 所在群组是apps/v1群组和Deployment一样;
kind: ReplicaSet       # 资源类型为ReplicaSet;
metadata: 
  name:   # Pod的名称;
  namespace:  # Pod所在的namespace,默认是Default;
spec:
   minReadySeconds <integer>  #  Pod就绪后多少秒内任一容器crash方可视为"就绪"
   replicas  <integer>        #  期望的Pod副本数,默认为1。如果期望Pod的副本数增加,只需要更改replicas的数字即可。如果你写2个,创建的Pod就是根据template定义的规范去运行起来的。Pod启动后就会被我们标签选择器所管理,进而被我们RS所管理。
   selector:    # 这里的标签选择器与Service的标签选择器是不一样的,不是选择器的功能不一样,而是选择器的格式不同;
     matchExpressions <[]Object>
     matchLabels <map[string]string>
   template:    # 定义Pod的模板,用来描述Pod的详情;比如定义containers、images、resoucre、lifecycle,把它做成一个模板。
    metadata:
      labels:  # 定义Pod的标签,
    spec: 

4.RelicaSet配置示例

点击查看代码
# cat nginx-test-replicas.yaml 
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-rs # RS控制器名称
  namespace: default
spec:     # 定义RS规范
  replicas: 2
  minReadySeconds: 20
  selector:
    matchLabels:
       app: nginx-test
  template:
    metadata:
      labels:
        app: nginx-test
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - name: http
          containerPort: 80

# kubectl apply -f nginx-test-replicas.yaml 
replicaset.apps/nginx-rs created

# 这两个副本都能提供服务且是相同的服务。
# kubectl get pods -l app=nginx-test
NAME             READY   STATUS    RESTARTS   AGE
nginx-rs-542db   1/1     Running   0          2m1s
nginx-rs-hcxh9   1/1     Running   0          2m1s

# ReplicaSet可以简写为rs,写replicaset或者rs都可以。
# kubectl get  rs nginx-rs
NAME       DESIRED   CURRENT   READY   AGE
nginx-rs   2         2         2       85s
# DESIRED:期望是2个Pod
# CURRENT:正常运行是2个
# READY: 正在运行是2个
# AGE:运行时间

# 如果我把某一个Pod删除以后,控制器是自己会创建Pod的。ReplicaSet会始终维持与我们所期望的副本数保持一致;
# kubectl delete pods nginx-rs-hcxh9 
pod "nginx-rs-hcxh9" deleted
# kubectl get pods -l app=nginx-test
NAME             READY   STATUS              RESTARTS   AGE
nginx-rs-542db   1/1     Running             0          7m32s
nginx-rs-n8995   0/1     Running             0          5s

标签:控制器,副本,ReplicaSet,kubernetes,rs,nginx,Pod
来源: https://www.cnblogs.com/xunweidezui/p/16517663.html