controller(控制器)

2023-10-27

controller(控制器)

1、什么是controller

(1)在集群上管理和运行容器的对象

2、Pod和controller关系

(1)Pod是通过Controller实现应用的运维,比如伸缩、滚动升级等

(2)Pod和Controller之间通过Pod上打label标签和controller上的selector建立关系

3、Deployment控制器的应用场景

(1)部署无状态的应用(web服务,微服务)

(2)管理Pod和ReplicaSet(副本创建)

(3)部署,滚动升级

4、yaml文件字段说明

[root@k8smaster ~]# kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml
W1214 15:55:56.144418   28060 helpers.go:535] --dry-run is deprecated and can be replaced with --dry-run=client.
[root@k8smaster ~]# cat web.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: web
  name: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: web
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
status: {}
#通过yaml文件进行部署
[root@k8smaster ~]# kubectl apply -f web.yaml 
deployment.apps/web created
#查看部署的pod
[root@k8smaster ~]# kubectl get pod
NAME                   READY   STATUS    RESTARTS   AGE
web-5dcb957ccc-2xfmz   1/1     Running   0          14s
#对外发布(暴露端口)
[root@k8smaster ~]# kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml > web1.yaml
[root@k8smaster ~]# cat web1.yaml 
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2021-12-14T08:11:03Z"
  labels:
    app: web
  managedFields:
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:labels:
          .: {}
          f:app: {}
      f:spec:
        f:externalTrafficPolicy: {}
        f:ports:
          .: {}
          k:{"port":80,"protocol":"TCP"}:
            .: {}
            f:port: {}
            f:protocol: {}
            f:targetPort: {}
        f:selector:
          .: {}
          f:app: {}
        f:sessionAffinity: {}
        f:type: {}
    manager: kubectl
    operation: Update
    time: "2021-12-14T08:11:03Z"
  name: web1
  namespace: default
  resourceVersion: "462761"
  selfLink: /api/v1/namespaces/default/services/web1
  uid: 69d9eeb0-2ec3-4599-ad2b-3088acd3646b
spec:
  clusterIP: 10.101.16.206
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 30385
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: web
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}
  
[root@k8smaster ~]# kubectl apply -f web1.yaml 
#查看svc
[root@k8smaster ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        2d5h
web1         NodePort    10.101.16.206   <none>        80:30385/TCP   49s

5、Deployment控制器部署应用

6、升级回滚和弹性伸缩

#修改yaml文件,把replicas副本数修改为2,把nginx的版本设置为1.14
[root@k8smaster ~]# cat web.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: web
  name: web
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: web
    spec:
      containers:
      - image: nginx:1.14
        name: nginx
        resources: {}
status: {}
[root@k8smaster ~]# kubectl apply -f web.yaml 
deployment.apps/web created
[root@k8smaster ~]# kubectl get pod
NAME                  READY   STATUS              RESTARTS   AGE
web-65b7447c7-779jw   0/1     ContainerCreating   0          10s
web-65b7447c7-j9wv9   0/1     ContainerCreating   0          10s
#升级命令,升级过程中服务不中断
[root@k8smaster ~]# kubectl set image deployment web nginx=nginx:1.15
deployment.apps/web image updated
#查看是否升级成功
[root@k8smaster ~]# kubectl rollout status deployment web
deployment "web" successfully rolled out
#查看历史版本
[root@k8smaster ~]# kubectl rollout history deployment web
deployment.apps/web 
REVISION  CHANGE-CAUSE
1         <none>
2         <none>
#回滚到上一个版本
[root@k8smaster ~]# kubectl rollout undo deployment web
deployment.apps/web rolled back
#回滚到指定版本
[root@k8smaster ~]# kubectl rollout undo deployment web --to-revision=2
deployment.apps/web rolled back
#弹性伸缩
[root@k8smaster ~]# kubectl scale deployment web --replicas=10
deployment.apps/web scaled
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

controller(控制器) 的相关文章

随机推荐

  • 【计算机毕业设计】045新闻推荐系统

    一 系统截图 需要演示视频可以私聊 摘要 随着信息互联网购物的飞速发展 国内放开了自媒体的政策 一般企业都开始开发属于自己内容分发平台的网站 本文介绍了新闻推荐系统的开发全过程 通过分析企业对于新闻推荐系统的需求 创建了一个计算机管理新闻推
  • Python3 requests_htm 设置代理

    简介 Python上有一个非常著名的HTTP库 requests 相比大家都听说过 用过的人都说好 现在requests库的作者又发布了一个新库 叫做requests html 看名字也能猜出来 这是一个解析HTML的库 而且用起来和req
  • QT入门Containers之QGroupBox、QDockWidget

    目录 一 QGroupBox界面相关 1 布局介绍 二 QDockWidget的介绍 1 去除标题栏 2 设置垂直属性 3 代码测试下 三 Demo展示 此文为作者原创 创作不易 转载请标明出处 一 QGroupBox界面相关 1 布局介绍
  • 在Tomcat中部署war包,404

    用IDEA中的mevan插件打包后 放在服务器中 访问404 放war包的位置没有问题 端口也开放了 就是访问不到 解决方法为 在启动类上继承 SpringBootServletInitializer 然后重写config方法 再次打包后
  • Android 9 (P)非SDK API限制调用开发指南

    Android 9 P 非SDK API限制调用开发指南 Android 9 P 开发适配指南系列博客目录 Adnroid 9 P recovery升级Map of cache recovery block map failed问题分析指南
  • anaconda中安装mysql

    官网下载安装包mysql官网下载地址 下载后进行解压 解压到本地文档之中 入目录之中新建 ini文件 新建文本文件 编辑完成之后 另存为选择全部文件 my ini文件之中内容如下 mysql 设置mysql客户端默认字符集 default
  • WPS如何使用VBA

    WPS专业版可以使用VBA的 非专业版没有测试过 不清楚 WPS专业版如何安装VBA呢 下载这个包 WPS目前已支持VBA 7 1版本 VBA For WPS 2019 zip 按顺序1 2 3 4即可 WPS 11 8 2 12011测试
  • Mac移动硬盘分区无法装载

    https blog csdn net tyforfreedom article details 48092901
  • win10安装linux子系统详细教程(非虚拟机方式)

    文章目录 1 前言 2 安装Windows Terminal 3 开启Windows子系统功能 4 安装Centos子系统 5 使用Centos子系统 1 前言 对于程序员来说 Linux技能基本是必备技能了 通常操作Linux有两种情况
  • vue/iview的table单元格可编辑,可上下键切换,小键盘enter可选中下一个

    在开发过程中 前后至今遇到好几次的编辑输入框编辑情况 4 24之前的版本 虽然改进好几次操作 但是都是用render函数实现 发现有时并不是很好操作 而且隐藏好几个bug 今天 2019 7 19 发布一个新版 目前无发现bug 而且监听键
  • 编译 Keras 模型

    本篇文章译自英文文档 Compile Keras Models 作者是 Yuwei Hu 更多 TVM 中文文档可访问 TVM 中文站 本文介绍如何用 Relay 部署 Keras 模型 首先安装 Keras 和 TensorFlow 可通
  • 树莓派超声波模块详解

    1 超声波模块介绍 超声波模块测距原理 1 超声波模块和单片机进行连接 2 触发信号 给Trig引脚发送一个大于10us的高电平 3 发送高电平后 模块会循环发送8个40KHZ的脉冲 与此同时Echo引脚会由低电平变成高电平 这时候就需要开
  • codemirror6 版本不包含 mode,addon 等目录

    使用 v md editor 时发现 codemirror 内的东西无法导入 http ckang1229 gitee io vue markdown editor zh examples codemirror editor html 原因
  • 神经网络模型用于数学建模

    1 神经网络简介 目录 1 神经网络简介 1 1 人工神经元结构 激活函数 Matlab 中的激活 传递 函数 1 2 网络结构及工作方式 2 蠓虫分类问题与多层前馈网络 2 1 蠓虫分类问题 2 2 多层前馈网络 2 3 后向传播算法 2
  • 网易云音乐等级快速升级:每天自动打卡听歌300首

    苏生不惑第148 篇原创文章 将本公众号设为星标 第一时间看最新文章 关于网易云音乐之前写过 那些你可能不知道的网易云音乐奇技淫巧 不想下载那么多音乐软件 全网音乐在线听和下载 如何轻松下载腾讯 微博 优酷 爱奇艺 b站等全网视频 今天分享
  • HCSC: Hierarchical Contrastive Selective Coding 解读

    HCSC Hierarchical Contrastive Selective Coding 在图像数据集中 往往存在分层级的语义结构 例如狗这一层级的图像中又可以划分为贵宾 金毛等细粒度的类别 例如这张图 展示了一个数据集中的多种语音层级
  • 在Android Studio中将Android工程变为Library使用

    有时候网上会有些工程格式不是我们想要的Library格式可以直接给AS使用 这时我们就需要将它移植到AS上并将其变为库 1 将ADT工程export成gradle可编译的工程 2 导入AS 保留src res manifest和gradle
  • 想成为月薪40K的测试工程师?你可能只是差在了这里....

    2022年的金三银四跳槽季来临 不知道各位有没有做好准备呢 最近跟朋友在一起聚会的时候 提了一个问题 说Java程序员要实现月薪40K 技术水平需要达到什么程度 首先 40K对应的层级分别是什么 40K的月薪在BAT等一线大厂实在太普遍了
  • Java虚拟机内存区域

    一 Java虚拟机内存区域 Java虚拟机所管理的内存将分为以下几个区域 1 程序计数器 线程私有 可以看作是当前线程所执行字节码的行号指示器 字节码解释器工作时就是改变这个计数器的值来选取下一条需要执行的指令 一些基础的功能 在一个确定的
  • controller(控制器)

    controller 控制器 1 什么是controller 1 在集群上管理和运行容器的对象 2 Pod和controller关系 1 Pod是通过Controller实现应用的运维 比如伸缩 滚动升级等 2 Pod和Controller