小于博客 小于博客
首页
  • Java学习笔记
  • Docker专区
  • 实战教程
  • Shell
  • 内存数据库
  • Vue学习笔记
  • Nginx
  • Php
  • CentOS
  • Docker
  • Gitlab
  • GitHub
  • MySql
  • MongoDB
  • OpenVPN
  • 配置文件详解
  • Other
  • ELK
  • K8S
  • Nexus
  • Jenkins
  • 随写编年
  • 电影音乐
  • 效率工具
  • 博客相关
  • 最佳实践
  • 迎刃而解
  • 学习周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • 网站状态 (opens new window)
    • json2go (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

小于博客

行者常至,为者常成
首页
  • Java学习笔记
  • Docker专区
  • 实战教程
  • Shell
  • 内存数据库
  • Vue学习笔记
  • Nginx
  • Php
  • CentOS
  • Docker
  • Gitlab
  • GitHub
  • MySql
  • MongoDB
  • OpenVPN
  • 配置文件详解
  • Other
  • ELK
  • K8S
  • Nexus
  • Jenkins
  • 随写编年
  • 电影音乐
  • 效率工具
  • 博客相关
  • 最佳实践
  • 迎刃而解
  • 学习周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • 网站状态 (opens new window)
    • json2go (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • Nexus系列文章

  • Jenkins系列文章

  • ELK笔记

  • Kubernetes笔记

    • 手动部署kubernetes-1-8-6集群

    • 其他姿势快速部署

    • 基础学习

      • k8s整体架构的知识整理
      • 配置kubectl命令补全功能
      • k8s基本使用入门-使用Pod
      • k8s基本使用入门-了解ReplicationController
        • 1,ReplicationController。
      • k8s基本使用入门-了解ReplicaSet
      • k8s基本使用入门-了解deployments
      • k8s基本使用入门-了解Service
    • 从新出发

  • 系列专题
  • Kubernetes笔记
  • 基础学习
小于博客
2018-12-07
目录

k8s基本使用入门-了解ReplicationController

刚刚默认创建的 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
2
3
4

# 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

这是一个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
1
2
3
4
5
6
7

这里可以看到,已经有三个了,其中有两个的状态还是启动中的,那么等待一会儿,就也 running 起来了。

这个时候还可以使用另外一个命令来查看状态:

[root@master replicas-set]$kubectl get rc
NAME      DESIRED   CURRENT   READY     AGE
nginx     3         3         3         1m
1
2
3

此时,我们尝试一下删除其中的一个 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
1
2
3
4
5
6
7
8
9
10
11
12

删除了一个,然后再次查看的时候,发现又有一个新的 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”获取全局命令行选项列表(适用于所有命令)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

现在,我想把刚刚启动的 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
1
2
3
4
5
6
7
8
9

这时看到已经剩下两个了。那么扩容也是一样的,直接扩容就行了。

[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
1
2
3
4
5
6
7
8
9
10
11

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

上次更新: 2024/01/11, 14:21:50

← k8s基本使用入门-使用Pod k8s基本使用入门-了解ReplicaSet→

最近更新
01
SpringBoot 快速实现 api 加密!
03-21
02
SpringBoot整合SQLite
03-07
03
SpringBoot配置使用H2数据库的简单教程
02-21
更多文章>
Theme by Vdoing | Copyright © 2017-2024 | 点击查看十年之约 | 豫ICP备2022014539号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式