博客 > 术业专攻> 云计算> kubernetes> k8s基本使用入门-了解ReplicationController 2019年08月29日 11:24:44
刚刚默认创建的pod就只有一个,那么如何创建多个pod,以及动态扩容呢。
我们进行如下操作之前,先将之前启动的nginx的pod删掉,使用如下指令:
[root@master pod-basic]$kubectl delete -f pod_nginx.yml pod "nginx" deleted [root@master pod-basic]$kubectl get pods No resources found.
现在来看一个新的yaml文件:
[root@master replicas-set]$cat rc_nginx.yml apiVersion: v1 kind: ReplicationController metadata: name: nginx spec: replicas: 3 selector: app: nginx template: metadata: name: nginx labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80
这是一个ReplicaSet
类型的,下边又可以看到定义的数字是3,也就是启动3个pod。
现在开始创建:
[root@master replicas-set]$kubectl create -f rc_nginx.yml replicationcontroller "nginx" created [root@master replicas-set]$kubectl get pods NAME READY STATUS RESTARTS AGE nginx-2qzvm 1/1 Running 0 7s nginx-c5nk4 0/1 ContainerCreating 0 7s nginx-r2zcm 0/1 ContainerCreating 0 7s
这里可以看到,已经有三个了,其中有两个的状态还是启动中的,那么等待一会儿,就也running起来了。
这个时候还可以使用另外一个命令来查看状态:
[root@master replicas-set]$kubectl get rc NAME DESIRED CURRENT READY AGE nginx 3 3 3 1m
此时,我们尝试一下删除其中的一个pod,看看会有什么效果。
[root@master replicas-set]$kubectl get pods NAME READY STATUS RESTARTS AGE nginx-2qzvm 1/1 Running 0 4m nginx-c5nk4 1/1 Running 0 4m nginx-r2zcm 1/1 Running 0 4m [root@master replicas-set]$kubectl delete pods nginx-2qzvm pod "nginx-2qzvm" deleted [root@master replicas-set]$kubectl get pods NAME READY STATUS RESTARTS AGE nginx-c5nk4 1/1 Running 0 5m nginx-qlwl2 0/1 ContainerCreating 0 2s nginx-r2zcm 1/1 Running 0 5m
删除了一个,然后再次查看的时候,发现又有一个新的pod在生成中了,也就是说,当pod以这种kind: ReplicationController
方式启动的时候,会维持住3个这个数目。这就是他的特性,因此在启动一个pod的时候,是推荐使用这种方式的,即便数目是1个,那么即便这个pod会在某个时刻某个原因退出了,仍旧会被自动创建恢复出来。
在动态扩容管理方面,我们需要引入到另外一个参数scale。
依旧是先看下用法:
[root @ master replicas-set] $ kubectl scale --help 为Deployment,ReplicaSet,Replication Controller或StatefulSet设置新大小。 Scale还允许用户为缩放操作指定一个或多个前提条件。 如果指定了--current-replicas或--resource-version,则在尝试扩展之前验证它,并且它是 保证在将比例发送到服务器时前提条件成立。 例子: #将名为'foo'的复制集缩放为3。 kubectl scale --replicas = 3 rs / foo #将由“foo.yaml”中指定的类型和名称标识的资源缩放为3。 kubectl scale --replicas = 3 -f foo.yaml #如果名为mysql当前大小的部署为2,则将mysql扩展为3。 kubectl scale --current-replicas = 2 --replicas = 3 deployment / mysql #缩放多个复制控制器。 kubectl scale --replicas = 5 rc / foo rc / bar rc / baz #将名为'web'的statefulset缩放为3。 kubectl scale --replicas = 3 statefulset / web 选项: --all = false:选择指定资源类型的命名空间中的所有资源 --current-replicas = -1:当前大小的前提条件。要求资源的当前大小与此匹配 价值以便扩大规模。 -f, - filename = []:标识要设置新大小的资源的文件的文件名,目录或URL --include-extended-apis = true:如果为true,则通过调用API服务器包含新API的定义。 [默认为true] -o, - output ='':输出模式。使用“-o name”表示较短的输出(资源/名称)。 --record = false:在资源注释中记录当前kubectl命令。如果设置为false,请不要记录 命令。如果设置为true,则记录该命令。如果未设置,则默认仅更新现有注释值 已经存在。 -R, - recursive = false:递归处理-f, - filename中使用的目录。在您想要管理时很有用 在同一目录中组织的相关清单。 --replicas = -1:新的所需副本数。需要。 --resource-version ='':资源版本的前提条件。要求当前资源版本与此匹配 价值以便扩大规模。 -l, - selector ='':要过滤的选择器(标签查询),支持'=','=='和'!='。(例如-l key1 = value1,key2 = value2) --timeout = 0s:放弃缩放操作之前等待的时间长度,零表示不等待。任何其他 值应包含相应的时间单位(例如1s,2m,3h)。 用法: kubectl scale [--resource-version = version] [ - current-replicas = count] --replicas = COUNT(-f FILENAME | TYPE NAME) [选项] 使用“kubectl options”获取全局命令行选项列表(适用于所有命令)
现在,我想把刚刚启动的nginx的3个pod变成两个,可如下操作:
[root@master replicas-set]$kubectl scale rc nginx --replicas=2 replicationcontroller "nginx" scaled [root@master replicas-set]$kubectl get pods NAME READY STATUS RESTARTS AGE nginx-c5nk4 1/1 Running 0 13m nginx-r2zcm 1/1 Running 0 13m [root@master replicas-set]$kubectl get rc NAME DESIRED CURRENT READY AGE nginx 2 2 2 14m
这时看到已经剩下两个了。那么扩容也是一样的,直接扩容就行了。
[root@master replicas-set]$kubectl scale rc nginx --replicas=4 replicationcontroller "nginx" scaled [root@master replicas-set]$kubectl get pods NAME READY STATUS RESTARTS AGE nginx-99nns 0/1 ContainerCreating 0 2s nginx-c5nk4 1/1 Running 0 42m nginx-fjnrn 0/1 ContainerCreating 0 2s nginx-r2zcm 1/1 Running 0 42m [root@master replicas-set]$kubectl get rc NAME DESIRED CURRENT READY AGE nginx 4 4 3 42m
就这样,非常方便的就实现了扩容等操作了。
© 2018 www.qingketang.net 鄂ICP备18027844号-1
武汉快勤科技有限公司 13554402156 武汉市东湖新技术开发区关山二路特一号国际企业中心6幢4层7号
扫码关注,全站教程免费播放
订单金额:
支付金额:
支付方式: