摘要:创建的配置如下在这个中,我们设置了两个,创建后,查看实验会通过来筛选,并且设定的符合该的副本应该为个。文件的内容如下此时,我们创建另一个可以看到,的为,我们尝试给添加一个,看下会出现什么效果。可以发现的状态已经为。
创建ReplicaSet
ReplicaSet的配置如下
apiVersion: apps/v1 kind: ReplicaSet metadata: name: myapp namespace: default spec: replicas: 2 selector: matchLabels: app: myapp release: canary template: metadata: name: myapp-pod labels: app: myapp release: canary environment: qa spec: containers: - name: myapp-container image: ikubernetes/myapp:v1 ports: - name: http containerPort: 80
在这个ReplicaSet中,我们设置了两个label,app=myapp, release=canary , 创建rs后,查看
[root@master manifests]# kubectl create -f rs-demo.yaml --dry-run replicaset.apps/myapp created (dry run) [root@master manifests]# kubectl create -f rs-demo.yaml replicaset.apps/myapp created [root@master manifests]# kubectl get pods NAME READY STATUS RESTARTS AGE myapp-bj795 1/1 Running 0 18s myapp-blmx8 1/1 Running 0 18s [root@master manifests]# vim rs-demo.yaml [root@master manifests]# kubectl get pods --show-labels NAME READY STATUS RESTARTS AGE LABELS myapp-b8sb5 1/1 Running 0 5m app=myapp,environment=qa,release=canary myapp-blmx8 1/1 Running 0 8m app=myapp,environment=qa,release=canary [root@master manifests]# kubectl get rs NAME DESIRED CURRENT READY AGE myapp 2 2 2 39s实验
ReplicaSet会通过label app=myapp, release=canary 来筛选Pod,并且设定的符合该label的Pod副本应该为2个。
pod-demo.yaml文件的内容如下:
apiVersion: v1 kind: Pod metadata: name: pod-demo namespace: default labels: app: myapp tier: frontend spec: containers: - name: myapp image: ikubernetes/myapp:v1 ports: - name: http containerPort: 80 - name: https containerPort: 443 - name: busybox image: busybox:latest #ImagePullPolicy: IfNotPresent command: - "/bin/sh" - "-c" - "sleep 3600"
此时,我们创建另一个pod
[root@master manifests]# kubectl create -f pod-demo.yaml pod/pod-demo created [root@master manifests]# kubectl get pods --show-labels NAME READY STATUS RESTARTS AGE LABELS myapp-b8sb5 1/1 Running 0 5m app=myapp,environment=qa,release=canary myapp-blmx8 1/1 Running 0 7m app=myapp,environment=qa,release=canary pod-demo 2/2 Running 0 11s app=myapp,tier=frontend
可以看到,pod-demo的label为 app=myapp,tier=frontend ,我们尝试给pod-demo添加一个label release=canary ,看下会出现什么效果。
[root@master manifests]# kubectl label pods pod-demo release=canary pod/pod-demo labeled [root@master manifests]# kubectl get pods --show-labels NAME READY STATUS RESTARTS AGE LABELS myapp-b8sb5 1/1 Running 0 5m app=myapp,environment=qa,release=canary myapp-blmx8 1/1 Running 0 8m app=myapp,environment=qa,release=canary pod-demo 2/2 Terminating 0 34s app=myapp,release=canary,tier=frontend
可以发现: pod-demo的状态已经为 Terminating。 说明ReplicaSet通过标签选择器获取到了三个副本,然后预期的副本数被设定为2,它随机杀掉了一个。
应该是随机的, 不过,我测试了几次,都是把新建的pod-demo杀掉了。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/32698.html
摘要:祈使式的脚本很难长期地对系统状态进行自动维护。这些事件包括的创建消亡的更新例如标签副本数量等。每当上述事件发生,这个事件所牵扯到的具体的对象就会被放入这个工作队列中。 本期文章来自才云科技(Caicloud)CEO 张鑫的技术原创。导言:Kubernetes 是一个庞大的软件系统,欲从源码层精通 Kubernetes 的进阶学习者往往会经历 Kubernetes:从入门到放弃 的挫败...
摘要:的核心是以容器为中心的管理环境。命名空间提供了名称范围。换句话说,确保或同类组始终可用。用于管理有状态应用程序,它管理一组的部署和扩展,并提供有关这些的排序和唯一性的保证。 条分缕析带你充分理解Kubernetes的各个细节与部分:它是什么,它如何解决容器编排问题,它包含哪些你必须掌握的关键对象,以及如何快速上手部署使用Kubernetes。 showImg(https://segme...
摘要:标识是与操作对象间的纽带。集群为每个对象维护三类信息对象元数据期望状态与实际状态元数据指对象的基本信息,比如命名标签注释等等,用于识别对象期望状态一般由用户配置来描述的实际状态是由集群各个组件上报的集群实际的运行情况。 综述 学习Kubernetes时,发现它的概念和术语还是比较多的,光靠啃官方文档比较晦涩。所以边学习边整理,对主要的概念和术语做一下分类及简要说明。感觉把重要概念都理解...
摘要:在这篇文章中,我们来看是如何部署应用程序到,以及如何将它作为一个公共服务的。在中的是跟应用程序通信的入口。每个除了运行在部署的主要应用程序上的也为终端运行。部署是高级别的抽象。 Travix总部位于荷兰,是一家在线旅游商务网站,业务辐射全球28个国家,成立于2011年,旗下有五个网站:CheapTickets,BudgetAir,Vliegwinkel和Flugladen。公司通过这五...
摘要:本文分享了扩展以及管理混合云环境时可能遇到的挑战,以及如何简单高效地完成扩展。跨云扩展的挑战你已经决定使用云了,所以让我们回过头来思考一下最初的问题。节点组件是中的。在向上或向下扩展或调整集群大小时,为部署命中公有,响应状态代码始终为。 流量突增时,我们需要扩展应用程序以满足用户需求。本文分享了扩展Kubernetes以及管理混合云环境时可能遇到的挑战,以及如何简单高效地完成Kuber...
阅读 3702·2021-11-11 11:00
阅读 2180·2021-10-08 10:05
阅读 2671·2021-10-08 10:04
阅读 3204·2021-09-30 09:48
阅读 3763·2021-09-27 14:10
阅读 1704·2021-09-09 09:33
阅读 2100·2019-08-30 15:55
阅读 1602·2019-08-30 13:53