58 lines
2.0 KiB
Markdown
58 lines
2.0 KiB
Markdown
# ReplicationController 和 ReplicaSet
|
||
|
||
ReplicationController 用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的 Pod 来替代;而如果异常多出来的容器也会自动回收。
|
||
|
||
在新版本的 Kubernetes 中建议使用 ReplicaSet 来取代 ReplicationController。ReplicaSet 跟 ReplicationController 没有本质的不同,只是名字不一样,并且 ReplicaSet 支持集合式的 selector。
|
||
|
||
虽然 ReplicaSet 可以独立使用,但一般还是建议使用 Deployment 来自动管理 ReplicaSet,这样就无需担心跟其他机制的不兼容问题(比如 ReplicaSet 不支持 rolling-update 但 Deployment 支持)。
|
||
|
||
ReplicaSet 示例:
|
||
|
||
```yaml
|
||
apiVersion: extensions/v1beta1
|
||
kind: ReplicaSet
|
||
metadata:
|
||
name: frontend
|
||
# these labels can be applied automatically
|
||
# from the labels in the pod template if not set
|
||
# labels:
|
||
# app: guestbook
|
||
# tier: frontend
|
||
spec:
|
||
# this replicas value is default
|
||
# modify it according to your case
|
||
replicas: 3
|
||
# selector can be applied automatically
|
||
# from the labels in the pod template if not set,
|
||
# but we are specifying the selector here to
|
||
# demonstrate its usage.
|
||
selector:
|
||
matchLabels:
|
||
tier: frontend
|
||
matchExpressions:
|
||
- {key: tier, operator: In, values: [frontend]}
|
||
template:
|
||
metadata:
|
||
labels:
|
||
app: guestbook
|
||
tier: frontend
|
||
spec:
|
||
containers:
|
||
- name: php-redis
|
||
image: gcr.io/google_samples/gb-frontend:v3
|
||
resources:
|
||
requests:
|
||
cpu: 100m
|
||
memory: 100Mi
|
||
env:
|
||
- name: GET_HOSTS_FROM
|
||
value: dns
|
||
# If your cluster config does not include a dns service, then to
|
||
# instead access environment variables to find service host
|
||
# info, comment out the 'value: dns' line above, and uncomment the
|
||
# line below.
|
||
# value: env
|
||
ports:
|
||
- containerPort: 80
|
||
```
|