当前位置:首页 > Web开发 > 正文

kubernetes资源配置之ReplicaSets

2024-03-31 Web开发

标签:

什么是ReplicaSets?ReplicaSet的目的是维护在任何给定时间运行的稳定的副本Pod集。 因此,它通常用于保证指定数量的相同Pod的可用性ReplicaSets怎么样工作?ReplicaSet由字段定义,其中包括一个选择器,该选择器指定如何标识它可以获取的Pod,多个副本指示其应维护的Pod数,一个Pod模板指定应创建的新Pod数据以满足该数量。 复制标准。 然后,,ReplicaSet通过创建和删除Pod以达到所需数量来实现其目的。 当ReplicaSet需要创建新的Pod时,它将使用其Pod模板。什么时候使用ReplicaSets?ReplicaSet确保在任何给定时间都运行指定数量的Pod副本。 但是,Deployments是一个高级概念,用于管理ReplicaSets,并提供对Pod的声明性更新以及许多其他有用的功能。 因此,除非您需要自定义更新编排或完全不需要更新,否则我们建议使用Deployments而不是直接使用ReplicaSets。示例:

---
apiVersion: apps/v1
kind: ReplicaSet
metadata:
     name: myweb
     namespace: default
spec:
     replicas: 3
     selector:
         matchLabels:
             app: web
             tier: Develop
     template:
         metadata:
             name: myweb-pod
             labels:
                 app: web
                 tier: Develop
         spec:
             containers:
             - name: myweb
               image: mycloudedu/myweb:v1
               ports:
               - name: http
                 containerPort: 80

将清单提交给kubernetes集群,将创建定义的ReplicaSet及其管理的pod[[email protected] kubernetes]# kubectl apply -f rs-demo.yaml 验证:[[email protected] kubernetes]# kubectl get rs NAME    DESIRED   CURRENT   READY   AGE myweb   3         3         3       4m37s

[[email protected] kubernetes]# kubectl get pod --show-labels
NAME          READY   STATUS    RESTARTS   AGE   LABELS
myweb-269pt   1/1     Running   0          11m   app=web,tier=Develop
myweb-flwth   1/1     Running   0          11m   app=web,tier=Develop
myweb-fwbmb   1/1     Running   0          11m   app=web,tier=Develop
nginx-pod     1/1     Running   0          42s   app=nginx,tier=frontend

选项说明:(查找帮助不会这里就不讲解了,请看点击这里了解。)kubectl explain rs

跟往常一样还是五个字段。这里只讲解metadata和spec字段。查看上面文章

kubectl explain rs.metadata

name    <string>

namespace    <string>

kubectl explain rs.spec

replicas    <integer>    pod的副本数

selector <Object>       kubernetes根据这个标签查看有几个pod。符不符ReplicaSet合期望值。有两种写法(matchExpressions、matchLabels)这里不说了,自行去查帮助文档。

template <Object>     kubernetes根据这个模板创建pod。跟创建pod的属性差不多,这里只提不同之处

这里重点提template的几个注意事项:

1.metadata.name这项可以不定义。因为定义了也不会生效。

2.metadata.labels必须含有selector的标签。

3.spec与pod的spec是一样的,这里就不在说明了。需要了解的查看上面文章。

测试:1、是否是标签选择器来创建pod。将上述的nginx-pod添加两个和myweb的标签一样,看看什么情况?[[email protected] kubernetes]# kubectl label pod nginx-pod app=web --overwrite=true[[email protected] kubernetes]# kubectl label pod nginx-pod tier=Develop --overwrite=true验证:

[[email protected] kubernetes]# kubectl get pods --show-labels

NAME          READY   STATUS        RESTARTS   AGE   LABELS

myweb-269pt   1/1     Running       0          18m   app=web,tier=Develop

myweb-flwth   1/1     Running       0          18m   app=web,tier=Develop

myweb-fwbmb   1/1     Running       0          18m   app=web,tier=Develop

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/40752.html