java replica set_kubernetes ReplicaSet的简单使用

本文介绍了如何使用Kubernetes的ReplicaSet来管理Pod副本,通过设置selector匹配Pod的label。当Pod的label发生变化时,ReplicaSet会根据预设的副本数调整Pod的数量。在实验中,当给Pod添加新的label后,ReplicaSet识别到三个匹配的Pod,由于期望副本数为2,因此随机终止了一个,展示了ReplicaSet的动态调整机制。
摘要由CSDN通过智能技术生成

创建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杀掉了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值