资讯专栏INFORMATION COLUMN

kubernetes ReplicaSet的简单使用

phpmatt / 299人阅读

摘要:创建的配置如下在这个中,我们设置了两个,创建后,查看实验会通过来筛选,并且设定的符合该的副本应该为个。文件的内容如下此时,我们创建另一个可以看到,的为,我们尝试给添加一个,看下会出现什么效果。可以发现的状态已经为。

创建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

相关文章

  • 从 Pods 和 Nodes 出生入死详解 Kubernetes 控制逻辑

    摘要:祈使式的脚本很难长期地对系统状态进行自动维护。这些事件包括的创建消亡的更新例如标签副本数量等。每当上述事件发生,这个事件所牵扯到的具体的对象就会被放入这个工作队列中。 本期文章来自才云科技(Caicloud)CEO 张鑫的技术原创。导言:Kubernetes 是一个庞大的软件系统,欲从源码层精通 Kubernetes 的进阶学习者往往会经历 Kubernetes:从入门到放弃 的挫败...

    yhaolpz 评论0 收藏0
  • 零基础入门│带你理解Kubernetes

    摘要:的核心是以容器为中心的管理环境。命名空间提供了名称范围。换句话说,确保或同类组始终可用。用于管理有状态应用程序,它管理一组的部署和扩展,并提供有关这些的排序和唯一性的保证。 条分缕析带你充分理解Kubernetes的各个细节与部分:它是什么,它如何解决容器编排问题,它包含哪些你必须掌握的关键对象,以及如何快速上手部署使用Kubernetes。 showImg(https://segme...

    DevWiki 评论0 收藏0
  • Kubernetes概念与术语

    摘要:标识是与操作对象间的纽带。集群为每个对象维护三类信息对象元数据期望状态与实际状态元数据指对象的基本信息,比如命名标签注释等等,用于识别对象期望状态一般由用户配置来描述的实际状态是由集群各个组件上报的集群实际的运行情况。 综述 学习Kubernetes时,发现它的概念和术语还是比较多的,光靠啃官方文档比较晦涩。所以边学习边整理,对主要的概念和术语做一下分类及简要说明。感觉把重要概念都理解...

    _Suqin 评论0 收藏0
  • Travix是如何部署应用程序到Kubernetes

    摘要:在这篇文章中,我们来看是如何部署应用程序到,以及如何将它作为一个公共服务的。在中的是跟应用程序通信的入口。每个除了运行在部署的主要应用程序上的也为终端运行。部署是高级别的抽象。 Travix总部位于荷兰,是一家在线旅游商务网站,业务辐射全球28个国家,成立于2011年,旗下有五个网站:CheapTickets,BudgetAir,Vliegwinkel和Flugladen。公司通过这五...

    miqt 评论0 收藏0
  • 混合云环境中扩展Kubernetes挑战及方案

    摘要:本文分享了扩展以及管理混合云环境时可能遇到的挑战,以及如何简单高效地完成扩展。跨云扩展的挑战你已经决定使用云了,所以让我们回过头来思考一下最初的问题。节点组件是中的。在向上或向下扩展或调整集群大小时,为部署命中公有,响应状态代码始终为。 流量突增时,我们需要扩展应用程序以满足用户需求。本文分享了扩展Kubernetes以及管理混合云环境时可能遇到的挑战,以及如何简单高效地完成Kuber...

    wwq0327 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<