kubernetes-handbook/concepts/replicaset.md

59 lines
2.0 KiB
Markdown
Raw Normal View History

2017-05-14 19:39:33 +08:00
# ReplicationController和ReplicaSet
2017-05-14 19:08:56 +08:00
2018-06-26 12:10:32 +08:00
ReplicationController用来确保容器应用的副本数始终保持在用户定义的副本数即如果有容器异常退出会自动创建新的Pod来替代而如果异常多出来的容器也会自动回收。
2017-05-14 19:08:56 +08:00
2018-06-26 12:10:32 +08:00
在新版本的Kubernetes中建议使用ReplicaSet来取代ReplicationController。ReplicaSet跟ReplicationController没有本质的不同只是名字不一样并且ReplicaSet支持集合式的selector。
2017-05-14 19:08:56 +08:00
虽然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
```