zoukankan      html  css  js  c++  java
  • kubernetes资源配置之ReplicaSets

    什么是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

    [root@master kubernetes]# kubectl apply -f rs-demo.yaml

    验证:

    [root@master kubernetes]# kubectl get rs

    NAME    DESIRED   CURRENT   READY   AGE

    myweb   3         3         3       4m37s

    [root@master 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的标签一样,看看什么情况?

    [root@master kubernetes]# kubectl label pod nginx-pod app=web --overwrite=true

    [root@master kubernetes]# kubectl label pod nginx-pod tier=Develop --overwrite=true

    验证:

    [root@master 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

    nginx-pod     0/1     Terminating   0          12s   app=web,tier=Develop      (马上被kill,第二次查看就没有了)

    [root@master 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

    注:pod是随机被kill掉。不是一定kill掉nginx-pod。

    2、把原有的pod删除一个,使得pod的个数小于期望值。测试会不会立刻创建恢复期望值

    [root@master kubernetes]# kubectl delete pods myweb-269pt
    pod "myweb-269pt" deleted

    验证:

    [root@master kubernetes]# kubectl get pods
    NAME          READY   STATUS    RESTARTS   AGE
    myweb-27fzd   1/1     Running   0          15s
    myweb-flwth   1/1     Running   0          61m
    myweb-fwbmb   1/1     Running   0          61m

    查看更常用的资源清单Deployment,请点击这里

  • 相关阅读:
    Centos7安装Docker
    [LeetCode] 651. 四键键盘 ☆☆☆(动态规划)
    一行代码就能解决的算法题
    博弈问题--石头游戏(动态规划)
    [LeetCode] 322. 零钱兑换 ☆☆☆(动态规划)
    java趣题
    [LeetCode] 516. 最长回文子序列 ☆☆☆(动态规划)
    [LeetCode] 337. 打家劫舍III ☆☆☆(动态规划)
    算法基础--贪心算法
    [LeetCode] 42. 接雨水 ☆☆☆☆☆(按列、动态规划、双指针)
  • 原文地址:https://www.cnblogs.com/mycloudedu/p/12026629.html
Copyright © 2011-2022 走看看