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,请点击这里
kubernetes资源配置之ReplicaSets的更多相关文章
- [译]Kubernetes 分布式应用部署和人脸识别 app 实例
原文地址:KUBERNETES DISTRIBUTED APPLICATION DEPLOYMENT WITH SAMPLE FACE RECOGNITION APP 原文作者:skarlso 译文出 ...
- kubernetes 安装学习
什么是Kubernetes Kubernetes是一个开源平台,用于跨主机群集自动部署,扩展和操作应用程序容器,提供以容器为中心的基础架构. 使用Kubernetes,您可以快速高效地响应客户需求: ...
- 解决Kubernetes Pod故障的5个简单技巧
在很多情况下,你可能会发现Kubernetes中的应用程序没有正确地部署,或者没有正常地工作.今天这篇文章就提供了如何去快速解决这类故障以及一些技巧. 在阅读了这篇文章之后,你还将深入了解Kubern ...
- Kubernetes基于haproxy实现ingress服务暴露
HAproxy Ingress控制器 HAproxy Ingress简介 HAProxy Ingress watches in the k8s cluster and how it builds HA ...
- Prometheus-operator 介绍和配置解析
随着云原生概念盛行,对于容器.服务.节点以及集群的监控变得越来越重要.Prometheus 作为 Kubernetes 监控的事实标准,有着强大的功能和良好的生态.但是它不支持分布式,不支持数据导入. ...
- kubernetes资源类别介绍
类别 名称 资源对象 Pod.ReplicaSet.ReplicationController.Deployment.StatefulSet.DaemonSet.Job.CronJob.Horizon ...
- k8s技术--Kubernetes集群kubectl命令的常见使用方法
简介:kubectl是一个命令行界面,用于运行针对Kubernetes群集的命令. 语法: kubectl [command] [TYPE] [NAME] [flags] command:指定您希望对 ...
- (转)实验文档4:kubernetes集群的监控和日志分析
改造dubbo-demo-web项目为Tomcat启动项目 Tomcat官网 准备Tomcat的镜像底包 准备tomcat二进制包 运维主机HDSS7-200.host.com上:Tomcat8下载链 ...
- kubernetes生态--交付prometheus监控及grafana炫酷dashboard到k8s集群
由于docker容器的特殊性,传统的zabbix无法对k8s集群内的docker状态进行监控,所以需要使用prometheus来进行监控: 什么是Prometheus? Prometheus是由Sou ...
随机推荐
- dede 友情链接显示不全解决方法
只需在html页面中调用友情链接的地方修改链接长度即可 titlelen: 链接文字长度(修改此数值即可) row: 友情链接的数量 {dede:flink titlelen="50&quo ...
- window 10 安装vs2013启动web项目报错Id端口不能启动iis
https://www.cnblogs.com/leolion/p/3789732.html 如果我们想在Visual Studio2013上调试64位ASP.NET MVC的网站(本机环境X64), ...
- 工具 --- Git
Git介绍 Git是目前世界上最先进的分布式版本控制系统. git 诞生: git诞生之前当时的CVS和SVN这些集中式的版本控制系统不但速度慢,而且必须联网才可以使用.由于代码量越来越多,linus ...
- sql中级语句
创建联结 select n_title,n_content,t_name,t_memo from nrc_news,nrc_type where nrc_news.t_id=nrc_type.t_id ...
- POJ3450最长公共子串【kmp】
题目链接:http://poj.org/problem?id=3450 题目大意:给定n个长度不超过200的字符串,n < 4000.求这些字符串的最长公共子串,若没有,则输出 “IDENTIT ...
- Python之数据库
Python之数据库: 1. Mysql 2. pymysql 3. SQLAlchemy Mysql 一.概述 什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其 ...
- 微信小程序开放数据解密 AES-128-CBC 解密(C#版本)
最近在开发小程序,需要跟微信服务端交互,微信敏感数据都有加密返回,需要在服务端接收进行解密后再返回给客户端小程序,今天就通过C# 进行数据的解密,官方下载下来是Node.C++.php等,就是没有C# ...
- 安装oracle数据库11g及问题解决
安装步骤可借鉴https://www.cnblogs.com/qfb620/p/4577255.html 1.安装后发现用Navicat无法连接数据库显示报错ORA-28547:connection ...
- linux常用终端命令(三)用户和权限
三.用户权限相关命令 用户 和 权限的基本概念 用户管理 终端命令 组管理 终端命令 修改权限 终端命令 1.用户和权限的基本概念 1.1.基本概念 用户管理包括 用户 与 组 管理 linux系统中 ...
- iproute2使用及网络名称空间
创建一个网络名称空间: 相当于创建一个完全隔离的新网络环境,这个环境包括一个独立的网卡空间,路由表,ARP表,ip地址表,iptables,ebtables,等等.总之,与网络有关的组件都是独立的. ...