什么是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,请点击这里

kubernetes资源配置之ReplicaSets的更多相关文章

  1. [译]Kubernetes 分布式应用部署和人脸识别 app 实例

    原文地址:KUBERNETES DISTRIBUTED APPLICATION DEPLOYMENT WITH SAMPLE FACE RECOGNITION APP 原文作者:skarlso 译文出 ...

  2. kubernetes 安装学习

    什么是Kubernetes Kubernetes是一个开源平台,用于跨主机群集自动部署,扩展和操作应用程序容器,提供以容器为中心的基础架构. 使用Kubernetes,您可以快速高效地响应客户需求: ...

  3. 解决Kubernetes Pod故障的5个简单技巧

    在很多情况下,你可能会发现Kubernetes中的应用程序没有正确地部署,或者没有正常地工作.今天这篇文章就提供了如何去快速解决这类故障以及一些技巧. 在阅读了这篇文章之后,你还将深入了解Kubern ...

  4. Kubernetes基于haproxy实现ingress服务暴露

    HAproxy Ingress控制器 HAproxy Ingress简介 HAProxy Ingress watches in the k8s cluster and how it builds HA ...

  5. Prometheus-operator 介绍和配置解析

    随着云原生概念盛行,对于容器.服务.节点以及集群的监控变得越来越重要.Prometheus 作为 Kubernetes 监控的事实标准,有着强大的功能和良好的生态.但是它不支持分布式,不支持数据导入. ...

  6. kubernetes资源类别介绍

    类别 名称 资源对象 Pod.ReplicaSet.ReplicationController.Deployment.StatefulSet.DaemonSet.Job.CronJob.Horizon ...

  7. k8s技术--Kubernetes集群kubectl命令的常见使用方法

    简介:kubectl是一个命令行界面,用于运行针对Kubernetes群集的命令. 语法: kubectl [command] [TYPE] [NAME] [flags] command:指定您希望对 ...

  8. (转)实验文档4:kubernetes集群的监控和日志分析

    改造dubbo-demo-web项目为Tomcat启动项目 Tomcat官网 准备Tomcat的镜像底包 准备tomcat二进制包 运维主机HDSS7-200.host.com上:Tomcat8下载链 ...

  9. kubernetes生态--交付prometheus监控及grafana炫酷dashboard到k8s集群

    由于docker容器的特殊性,传统的zabbix无法对k8s集群内的docker状态进行监控,所以需要使用prometheus来进行监控: 什么是Prometheus? Prometheus是由Sou ...

随机推荐

  1. k8s集群部署(3)

    一.利用ansible部署kubernetes集群环境准备 基于二进制方式部署和利用ansible-playbook实现自动化:既提供一键安装脚本,也可以分步执行安装各个组件,同时讲解每一步主要参数配 ...

  2. shell脚本:统计分析 /home/ 目录用户磁盘使用情况

    一.统计单台机器 /home/ 目录下磁盘空间使用 top3 的用户 common.sh 脚本用于统计 /home/* 目录下存储空间 top3 的用户. du -sb /home/* |sort - ...

  3. A股委托类型

    上海交易所于2006年8月7日启用了两种类型的市价委托,分别为:“最优五档即时成交剩余撤销”.“最优五档即时成交剩余转限价”. 深圳证券交易所启用了“对手方最优价格委托”.“本方最优价格委托”.“最优 ...

  4. React Native解决安卓图片被挤压

    Bug如下图所示: iOS显示正常,而安卓出现图片被挤压上去. 最后的解决方法: 比如你的 图片 是 750 x 513 那么 你设置样式的时候 width 为 屏幕的宽 ,高度为 屏幕的 宽 / ( ...

  5. C# Redis 缓存应用 主要代码及版本选择

    /// <summary> /// RedisManager类主要是创建链接池管理对象的 /// </summary> public class RedisManager { ...

  6. sql server 备份语句

    1.BACKUP DATABASE your_database TO DISK = 'diff.bak'with DIFFERENTIAL #差异备份,仅备份数据2.BACKUP DATABASE y ...

  7. 【网易微专业】图表绘制工具Matplotlib

    01 与图片的交互方式设置 这一小节简要介绍一下Matplotlib的交互方式 import pandas as pd import numpy as np import matplotlib.pyp ...

  8. 安装tacker

    安全服务链编排系统安装部署文档 本系统基于OpenStack Pike版本安装,在安装tacker之前,请确保以下模块都已正确安装部署:keystone,mistral,barbican,horizo ...

  9. python列表的切片与复制

    切片,即处理一个完整列表中部分数据. 语法 变量[起始索引:终止索引:步长] 首先创建一个字符串列表 >>> cars = ['toyota', 'honda', 'mazda', ...

  10. 获取web项目的绝对路径的方法总结

    一.用Jsp获取 1.获取文件的绝对路径 String file="文件";(例如:data.mdb) String path=application.getRealPath(fi ...