java replica set_kubernetes ReplicaSet的简单使用
創(chuàng)建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
在這個(gè)ReplicaSet中,我們?cè)O(shè)置了兩個(gè)label,app=myapp, release=canary , 創(chuàng)建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
實(shí)驗(yàn)
ReplicaSet會(huì)通過label app=myapp, release=canary 來篩選Pod,并且設(shè)定的符合該label的Pod副本應(yīng)該為2個(gè)。
pod-demo.yaml文件的內(nèi)容如下:
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"
此時(shí),我們創(chuàng)建另一個(gè)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添加一個(gè)label release=canary ,看下會(huì)出現(xiàn)什么效果。
[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
可以發(fā)現(xiàn): pod-demo的狀態(tài)已經(jīng)為 Terminating。 說明ReplicaSet通過標(biāo)簽選擇器獲取到了三個(gè)副本,然后預(yù)期的副本數(shù)被設(shè)定為2,它隨機(jī)殺掉了一個(gè)。
應(yīng)該是隨機(jī)的, 不過,我測(cè)試了幾次,都是把新建的pod-demo殺掉了。
總結(jié)
以上是生活随笔為你收集整理的java replica set_kubernetes ReplicaSet的简单使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TC397 LIN Master 用例
- 下一篇: 所见即所得html5编辑器,一个漂亮的所