转载请注明出处:www.huamo.online
字节杭州 求贤若渴:
英文原文: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/
ReplicationController
是什么?
一个ReplicationController
可以保证在任一个时刻都有指定数量的pod副本在运行。换句话说,一个ReplicationController
保证了一个或多个相同pod总是运行可用的。如果存在了过多的pod,它会杀掉多余的一些。如果pod数量过少,ReplicationController
会启动更多的pod。不同于手动创建pod,被ReplicationController
维护的pod,如果遇到了宕机,被删除,被终止的情况,都会被自动替换为新的pod。举个例子,你的pod会在破坏性的维护之后被重建,比如内核升级。基于此,我们推荐即使你的应用只需要一个pod,也使用ReplicationController
。你可以把ReplicationController
想象成类似一个进程监控的东西,而不是单独节点上的个别进程,ReplicationController
监督跨越多个节点的多个pod。在讨论中,ReplicationController
常简写为rc
或者rcs
,并且这也是kubectl
命令行中的缩写形式。
一个简单的场景是创建一个ReplicationController
对象用来无限期地可靠运行一个pod实例。更复杂一些的例子是运行一个可复制服务的多个相同副本,例如web服务器。
运行一个ReplicationController
例子
这里有一个ReplicationController
示例配置。它运行了nginx
web服务器的3个副本。
1 | # replication.yaml |
用如下命令运行这个例子:
1 | $ kubectl create -f ./replication.yaml |
查看ReplicationController
的状态:
1 | $ kubectl describe replicationcontrollers/nginx |
这里,3个pod被创建,但都还没有在运行,可能是因为还在拉取镜像。等一会再运行相同的命令,应该会得到如下的结果:
1 | Pods Status: 3 Running / 0 Waiting / 0 Succeeded / 0 Failed |
如果想要以一种机器可读的格式,罗列出属于这个rc的所有pod,可以使用如下命令:
1 | $ pods=$(kubectl get pods --selector=app=nginx --output=jsonpath={.items..metadata.name}) |
这里,selector
等同于ReplicationController
的selector
,--output=jsonpath
选项指定了一个表达式,用来只获取返回列表中每个pod的名字。
书写一个ReplicationController
转载请注明出处:www.huamo.online