播放记录

k8s基本使用入门-了解ReplicationController

博客术业专攻云计算kubernetesk8s基本使用入门-了解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.

1,ReplicationController。

现在来看一个新的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

就这样,非常方便的就实现了扩容等操作了。


转载:http://www.eryajf.net/2120.html

© 2018 www.qingketang.net 鄂ICP备18027844号-1

武汉快勤科技有限公司 13554402156 武汉市东湖新技术开发区关山二路特一号国际企业中心6幢4层7号

微信登录

扫码关注,全站教程免费播放

发表评论 X

登录成功
开通VIP

订单金额:

支付金额:

支付方式: