Kubernetes-RC、RS
Replication Controller
简称RC,可确保Pod副本数量达到期望值,也就是RC定义的数量,换句话说,Replication Controller可确保一个Pod或一组同类Pod总是可用。如果存在的Pod大于设定的值,则Replication Controller将终止额外的Pod。如果太小,RC将启动更多的Pod用于保证达到期望值。与手动创建Pod不同的是,用RC维护的Pod在失败、删除或终止时会替换。因此即使应用程序只需要一个Pod,也应该使用RC或其他方式管理。RC类似于进程管理程序,但是RC不是监视单个节点上的各个进程,而是监视多个节点上的多个Pod。
定义RC
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx
spec:
replicas: 3
selector:
app: nginx
template:
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- nanme: nginx
image: nginx
ports:
- containerPort: 80
ReplicaSet
ReplicaSet是支持基于集合的标签选择器的下一代Replication Controller,它主要用作Deployment协调创建、删出和更新Pod,和Replication Controller唯一的区别是,ReplicaSet支持标签选择器。在实际应用中,虽然ReplicaSet可以单独使用,但是一般建议使用Deployment来自动管理ReplicaSet,除非自定义的Pod不需要更新或有其他编排等。
定义RS
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: frontend
labels: guestbook
tier: frontend
spec:
# modify replicas according to your case
replicas: 3
selector:
matchLabels:
tier: frontend
matchExpressions:
- {key: tier, operator: In, values: [frontend]}
template:
medata:
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.
# valuie: env
ports:
- containerPort: 80
RC和RS的创建删除和Pod并无太大区别,RC目前几乎已经不在生产环境中使用,RS也很少单独被使用,都是使用更高级的资源Deployment、DaemonSet、StatefulSet进行管理Pod。