java replica set_kubernetes ReplicaSet的简单使用
創建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殺掉了。
總結
以上是生活随笔為你收集整理的java replica set_kubernetes ReplicaSet的简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TC397 LIN Master 用例
- 下一篇: 所见即所得html5编辑器,一个漂亮的所