2020-07-12 12:44:39 +08:00
|
|
|
|
# ReplicationController 和 ReplicaSet
|
2017-05-14 19:08:56 +08:00
|
|
|
|
|
2020-07-12 12:44:39 +08:00
|
|
|
|
ReplicationController 用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的 Pod 来替代;而如果异常多出来的容器也会自动回收。
|
2017-05-14 19:08:56 +08:00
|
|
|
|
|
2020-07-12 12:44:39 +08:00
|
|
|
|
在新版本的 Kubernetes 中建议使用 ReplicaSet 来取代 ReplicationController。ReplicaSet 跟 ReplicationController 没有本质的不同,只是名字不一样,并且 ReplicaSet 支持集合式的 selector。
|
2017-05-14 19:08:56 +08:00
|
|
|
|
|
2020-07-12 12:44:39 +08:00
|
|
|
|
虽然 ReplicaSet 可以独立使用,但一般还是建议使用 Deployment 来自动管理 ReplicaSet,这样就无需担心跟其他机制的不兼容问题(比如 ReplicaSet 不支持 rolling-update 但 Deployment 支持)。
|
2017-05-14 19:08:56 +08:00
|
|
|
|
|
2020-07-12 12:44:39 +08:00
|
|
|
|
ReplicaSet 示例:
|
2017-05-14 19:08:56 +08:00
|
|
|
|
|
|
|
|
|
```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
|
|
|
|
|
```
|