ReplicaSet
ReplicationController(也简称为 rc)用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的 Pod 来替代;而异常多出来的容器也会自动回收。ReplicationController 的典型应用场景包括确保健康 Pod 的数量、弹性伸缩、滚动升级以及应用多版本发布跟踪等。
在新版本的 Kubernetes 中建议使用 ReplicaSet(也简称为 rs)来取代 ReplicationController。ReplicaSet 跟 ReplicationController 没有本质的不同,只是名字不一样,并且 ReplicaSet 支持集合式的 selector(ReplicationController 仅支持等式)。
虽然也 ReplicaSet 可以独立使用,但建议使用 Deployment 来自动管理 ReplicaSet,这样就无需担心跟其他机制的不兼容问题(比如 ReplicaSet 不支持 rolling-update 但 Deployment 支持),并且还支持版本记录、回滚、暂停升级等高级特性。Deployment 的详细介绍和使用方法见 这里

API 版本对照表

Kubernetes 版本
Deployment 版本
v1.5-v1.6
extensions/v1beta1
v1.7-v1.15
apps/v1beta1
v1.8-v1.15
apps/v1beta2
v1.9+
apps/v1

ReplicationController 示例

1
apiVersion: v1
2
kind: ReplicationController
3
metadata:
4
name: nginx
5
spec:
6
replicas: 3
7
selector:
8
app: nginx
9
template:
10
metadata:
11
name: nginx
12
labels:
13
app: nginx
14
spec:
15
containers:
16
- name: nginx
17
image: nginx
18
ports:
19
- containerPort: 80
Copied!

ReplicaSet 示例

1
apiVersion: extensions/v1beta1
2
kind: ReplicaSet
3
metadata:
4
name: frontend
5
# these labels can be applied automatically
6
# from the labels in the pod template if not set
7
# labels:
8
# app: guestbook
9
# tier: frontend
10
spec:
11
# this replicas value is default
12
# modify it according to your case
13
replicas: 3
14
# selector can be applied automatically
15
# from the labels in the pod template if not set,
16
# but we are specifying the selector here to
17
# demonstrate its usage.
18
selector:
19
matchLabels:
20
tier: frontend
21
matchExpressions:
22
- {key: tier, operator: In, values: [frontend]}
23
template:
24
metadata:
25
labels:
26
app: guestbook
27
tier: frontend
28
spec:
29
containers:
30
- name: php-redis
31
image: gcr.io/google_samples/gb-frontend:v3
32
resources:
33
requests:
34
cpu: 100m
35
memory: 100Mi
36
env:
37
- name: GET_HOSTS_FROM
38
value: dns
39
# If your cluster config does not include a dns service, then to
40
# instead access environment variables to find service host
41
# info, comment out the 'value: dns' line above, and uncomment the
42
# line below.
43
# value: env
44
ports:
45
- containerPort: 80
Copied!
最近更新 2yr ago