Kubernetes Cluster的Replication Controller中的Pod的自动重启显示了如果一个或多个现有Pod由于某种原因消失了,Kubernetes如何重新安排集群中的Pod。 这是一种常见的使用模式,也是Kubernetes的关键功能之一。
Replication Controller的另一种常见用法是扩展:
复制控制器通过简单地更新副本字段,可以轻松地手动或通过自动缩放控制代理来缩放副本的数量。
该博客将展示如何轻松扩展Kubernetes集群。
该博客中使用的所有代码都可以在kubernetes-java-sample中找到 。
启动Replication Controller并验证
- 以以下方式启动复制控制器:
./cluster/kubectl.sh create -f ~/workspaces/kubernetes-java-sample/wildfly-rc.yaml replicationcontrollers/wildfly-rc
- 获取Pod的状态:
./cluster/kubectl.sh get -w po NAME READY STATUS RESTARTS AGE NAME READY STATUS RESTARTS AGE wildfly-rc-bgtkg 0/1 Pending 0 1s wildfly-rc-l8fqv 0/1 Pending 0 1s wildfly-rc-bgtkg 0/1 Pending 0 1s wildfly-rc-l8fqv 0/1 Pending 0 1s wildfly-rc-bgtkg 0/1 Pending 0 1s wildfly-rc-l8fqv 0/1 Pending 0 1s wildfly-rc-bgtkg 0/1 Running 0 1m wildfly-rc-l8fqv 0/1 Running 0 1m wildfly-rc-bgtkg 1/1 Running 0 1m wildfly-rc-l8fqv 1/1 Running 0 1m
确保等待状态更改为“正在运行”。
记下Pod的名称为
wildfly-rc-bgtkg”和
wildfly-rc-bgtkg”。
- 获取复制控制器的状态:
./cluster/kubectl.sh get rc CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS wildfly-rc wildfly-rc-pod jboss/wildfly name=wildfly 2
如果有多个Replication Controller正在运行,则可以使用以下标签查询这一特定的控制器:
./cluster/kubectl.sh get rc -l name=wildfly CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS wildfly-rc wildfly-rc-pod jboss/wildfly name=wildfly 2
扩展Kubernetes集群
Replication Controller允许动态扩展和缩小Pod。
- 扩大Pod的数量:
./cluster/kubectl.sh scale --replicas=3 rc wildfly-rc scaled
- 可以在另一个外壳中看到Pod的状态:
./cluster/kubectl.sh get -w po NAME READY STATUS RESTARTS AGE wildfly-rc-k6pk2 1/1 Running 0 47s wildfly-rc-wez29 1/1 Running 0 47s NAME READY STATUS RESTARTS AGE wildfly-rc-aqaqn 0/1 Pending 0 0s wildfly-rc-aqaqn 0/1 Pending 0 0s wildfly-rc-aqaqn 0/1 Pending 0 0s wildfly-rc-aqaqn 0/1 Running 0 2s wildfly-rc-aqaqn 1/1 Running 0 11s
注意,将创建一个名为
wildfly-rc-aqaqn
的新Pod。
向下扩展Kubernetes集群
- 缩小Pod的数量:
./cluster/kubectl.sh scale --replicas=1 rc wildfly-rc scaled
- 使用
-w
Pod的状态未正确更新( #11338 )。 但是Pod的状态可以正确地视为:./cluster/kubectl.sh get po NAME READY STATUS RESTARTS AGE wildfly-rc-k6pk2 1/1 Running 0 9m
请注意,现在只有一个Pod正在运行。
Kubernetes使用scale --replicas
命令动态地上下scale --replicas
。
- 该博客中使用的所有代码都可以从kubernetes-java-sample获得 。
请享用!
翻译自: https://www.javacodegeeks.com/2015/07/scaling-kubernetes-cluster.html