k8s-----10、Controller-Deployment

news2025/2/23 2:25:36

Controller-Deployment

  • 1、什么是controller
  • 2、 pod和controller关系
  • 3、Deployment控制器应用场景
    • 3.1 部署时yaml文件书写
    • 3.2 实际部署应用
    • 3.3 升级回滚
      • 3.3.1 升级
      • 3.3.2 回滚
    • 3.4 弹性伸缩

1、什么是controller

  • 在集群上管理和运行容器的对象

2、 pod和controller关系

  • pod是通过Controller实现应用的运维,比如伸缩、滚动升级等
  • pod和Controller之间通过label建立关系。通过下图进行深刻理解

在这里插入图片描述

3、Deployment控制器应用场景

  • 一般部署无状态应用
  • 管理Pod和ReplicaSet
  • 部署,滚动升级等功能
  • 应用场景:web服务、微服务

3.1 部署时yaml文件书写

[root@master example]# kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml  ##生成一个示例yaml文件
[root@master example]# cat web.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:         ##控制器标签
    app: web
  name: web
spec:
  replicas: 1
  selector:   # 与pod匹配的labels
    matchLabels:
      app: web
  strategy: {}
  template:   # 模板部分是涉及到的pod
    metadata:
      creationTimestamp: null
      labels:
        app: web
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
status: {}

在这里插入图片描述

3.2 实际部署应用

[root@master example]# kubectl apply -f web.yaml    ##现在别的机器还访问不到
[root@master example]# kubectl expose --help    ## 对外发布,即暴漏端口
[root@master example]# kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=webexpose -o yaml > webexpose.yaml   # 前面是自身端口,后面是向外暴露的端口
[root@master example]# ll webexpose.yaml 
[root@master example]# cat webexpose.yaml 
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2022-05-05T12:57:40Z"
  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-expose
    operation: Update
    time: "2022-05-05T12:57:40Z"
  name: webexpose
  namespace: default
  resourceVersion: "184540"
  uid: b79e14cb-2b1b-44c1-b626-f4903786fb8a
spec:
  clusterIP: 10.103.24.195
  clusterIPs:
  - 10.103.24.195
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 30605
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: web
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}
[root@master example]# kubectl get pods,svc   #svc是services的缩写
NAME                      READY   STATUS    RESTARTS   AGE
pod/mypod                 1/1     Running   0          10h
pod/nginx                 1/1     Running   1          27h
pod/web-96d5df5c8-kkmsz   1/1     Running   0          10m

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        57d
service/webexpose    NodePort    10.103.24.195   <none>        80:30605/TCP   21s

在这里插入图片描述

3.3 升级回滚

3.3.1 升级

# 1、最初的nginx:1.14版本
[root@master example]# vim web.yaml 
[root@master example]# 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@master example]# kubectl apply -f web.yaml 
deployment.apps/web created
[root@master example]# kubectl get pod
NAME                   READY   STATUS              RESTARTS   AGE
web-5bb6fd4c98-bskvw   1/1     Running             0          3s
web-5bb6fd4c98-qtv8q   0/1     ContainerCreating   0          3s
[root@master example]# kubectl get pod
NAME                   READY   STATUS    RESTARTS   AGE
web-5bb6fd4c98-bskvw   1/1     Running   0          30s
web-5bb6fd4c98-qtv8q   1/1     Running   0          30s


# 2、升级
# 升级过程中会下载新的镜像,下载成功后删除掉原来的pod,建立新的pod
[root@master example]#  kubectl set image deployment web nginx=nginx:1.15  # 升级
[root@master example]# kubectl rollout  status deployment web   #查看升级状态
deployment "web" successfully rolled out


3.3.2 回滚

[root@master example]#  kubectl rollout history deployment web   # 查看历史版本
deployment.apps/web 
REVISION  CHANGE-CAUSE
1         <none>
2         <none>

[root@master example]#  kubectl rollout undo deployment web  # 回滚到上一个版本
deployment.apps/web rolled back
[root@master example]# kubectl rollout  status deployment web   #  查看回滚状态
deployment "web" successfully rolled out
[root@master example]# kubectl get pod
NAME                   READY   STATUS    RESTARTS   AGE
web-5bb6fd4c98-hm2jt   1/1     Running   0          17s
web-5bb6fd4c98-nmjcg   1/1     Running   0          16s
[root@master example]# kubectl rollout undo --help ^C   # 查看回滚帮助
[root@master example]# kubectl rollout undo deployment web --to-revision=2  # 回滚到指定版本
deployment.apps/web rolled back
[root@master example]# kubectl rollout  status deployment web 
deployment "web" successfully rolled out

3.4 弹性伸缩

  • 为了提供更多的服务
[root@master example]# kubectl scale deployment web --replicas=5
deployment.apps/web scaled
[root@master example]# kubectl get pod
NAME                  READY   STATUS    RESTARTS   AGE
web-f686c9cdf-72fhz   1/1     Running   0          4s
web-f686c9cdf-7kxgm   1/1     Running   0          4s
web-f686c9cdf-89zwq   1/1     Running   0          3m6s
web-f686c9cdf-gm6r6   1/1     Running   0          3m5s
web-f686c9cdf-q45v2   1/1     Running   0          4s

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1124100.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么用一个二维码展示多个内容?二维码汇总一个的方法

怎么将多个二维码内容组合到一个二维码中呢&#xff1f;最近有些小伙伴在问&#xff0c;在让别人扫码展示内容时&#xff0c;如何将其他二维码内容做成列表的形式&#xff0c;被浏览信息的人选择点击跳转到其他二维码展示对应的内容。比如制作旅游景点攻略&#xff0c;点击对应…

Python基础教程:列表(List)的常用操作

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 列表是Python中最基本的数据结构&#xff0c;列表是最常用的Python数据类型&#xff0c;列表的数据项不需要具有相同的类型。 列表中的每个元素都分配一个数字 -…

java--赋值运算符

1.基本赋值运算符 1.1.就是“”&#xff0c;从右边往左看。 2.扩展赋值运算符 注意&#xff1a;扩展的赋值运算符隐含了强制类型转换。 byte x 10; byte y 20; x x y ;//这样写会报错 x y;/*这样不会报错&#xff0c;原因是java默认的都是int形式的 &#xff0c;然后上面…

HIMA F3236 Z7138 Z7116全面的边缘人工智能解决方案

HIMA F3236 Z7138 Z7116全面的边缘人工智能解决方案 这一联合、完整的edge AI解决方案将结合Variscite的i.MX 8平台和Hailo的迷你PCIe AI模块&#xff0c;使企业能够更高效、更可持续地运行基于全面深度学习(DL)的应用&#xff0c;同时大幅降低成本。 Variscite的DART-MX8M-…

MAC地址修改工具 WiFiSpoof 简体中文

WiFiSpoof的功能优势主要在于其能够伪装和修改设备的MAC地址&#xff0c;以及支持随机生成MAC地址。这使得用户可以在连接Wi-Fi网络时隐藏自己的真实设备身份&#xff0c;增加网络安全性和隐私保护。同时&#xff0c;该功能还具有简单易用、兼容性强等特点&#xff0c;适用于多…

2023新版软件测试八股文及答案解析

前言 前面看到了一些面试题&#xff0c;总感觉会用得到&#xff0c;但是看一遍又记不住&#xff0c;所以我把面试题都整合在一起&#xff0c;都是来自各路大佬的分享&#xff0c;为了方便以后自己需要的时候刷一刷&#xff0c;不用再到处找题&#xff0c;今天把自己整理的这些…

3D模型格式转换工具HOOPS Exchange助力SIMCON搭建注塑项目

行业&#xff1a;设计与制造 / 注塑成型 / 模拟 挑战&#xff1a;注塑成型商面临着以高效的方式为客户生产零件的挑战。需要大量的试验才能生产出适合的零件&#xff0c;同时模具需要进行多次物理修改&#xff0c;每次修改周期最长需要四个星期&#xff0c;成本高达四到五位数…

接口自动化测试小结

一、接口测试的概念 1、接口&#xff1a;指系统或组件之间的交互点&#xff0c;通过这些交互点可以实现数据之间的交互。(数据交互的通道) 2、接口测试&#xff1a;对系统或组件之间的接口进行测试&#xff0c;主要用于检测外部系统与系统之间以及系统内部之间的数据交换、传…

PKU 概率论+数理统计+建模 期中考复习总结

目录 计算条件概率计算概率&#xff08;放回与不放回&#xff09;生成随机数算法Linear Congruential Method判断是否是full period Uniformity (test of frequency)1.Chi-Square testmethodreminderexample 2.Kolmogorov-Sminov testmethodexample Independence (test of auto…

vscode远程连接服务器+Xming:图形化界面

背景 用本地电脑连接服务器跑代码&#xff0c;服务器运行出现图形化的界面&#xff08;例如plt.show()是一张图片&#xff09;&#xff0c;本地电脑端显示不出来。因此&#xff0c;我们利用Xming解决这个问题。 主要步骤参考&#xff1a;link 注意点&#xff1a; 虽然&#x…

星途星纪元 ES,用艺术思维表达工程技术

10月8日&#xff0c;星途星纪元ES携手世界级成都爱乐首席乐团、旅德青年钢琴家王超&#xff0c;在成都打造了一场“万物星声”超舒适音乐会视听盛宴。这是星途星纪元首次跨界音乐圈、牵手音乐挚友&#xff0c;共同演绎音乐和汽车的美学协奏曲&#xff0c;开启高端超舒适美学新纪…

Ansys Zemax | 用于眼睛像差评估的Shack‑Hartmann传感器建模

介绍 无论是在研究中还是通过工业设备开发后用于临床目的&#xff0c;Shack‑Hartmann 传感器被广泛应用于测量人眼所产生的像差。 原理 这种装置的基本原理可以描述如下&#xff1a;光束聚焦在用作光扩散器的视网膜上&#xff0c;尽管出于安全考虑优选使用近红外进行测量&am…

Android手机连接电脑弹出资源管理器

如图所示&#xff0c;很讨厌 关闭方法&#xff1a;

如何编译运行C程序

1. 打开终端&#xff0c;进入C程序所在的目录。 2. 编译C程序文件&#xff0c;生成可执行文件。 命令&#xff1a;gcc -o [可执行文件名称] [C程序文件名称] 列如&#xff1a;gcc -o hello hello.c 3. 运行生成的可执行文件。 命令&#xff1a;./[可执行文件名称] 例如&a…

kepler笔记:Trip

Trip图层可以显示动画路径 1 数据格式 目前Trip图层支持一种特殊的GeoJSON格式&#xff0c;其中坐标线串有一个表示时间戳的第4个元素 为了使路径动画化&#xff0c;GeoJSON数据需要在其特征的几何形状中包含LineString&#xff0c;并且LineString中的坐标需要有4个元素&…

【广州华锐互动】三维全景3D消防科普展馆

在我们的日常生活中&#xff0c;火灾安全是一个不容忽视的重要问题。然而&#xff0c;由于缺乏对火灾的了解和应对技巧&#xff0c;许多人在面对火灾时往往感到无助和恐慌。为了解决这个问题&#xff0c;广州华锐互动开发了三维全景3D消防科普展馆&#xff0c;它是一个以虚拟现…

MySQL实践——分页查询优化

问题现象 一个客户业务系统带有分页查询功能&#xff0c;但是随着查询页数的增加&#xff0c;越往后查询性能越差&#xff0c;有时一个查询可能需要1分钟左右的时间。分页查询的写法类似于&#xff1a; select * from employees limit 250000,5000;这是最传统的一种分页查询写…

高效模拟,灵活扩展!GNSS模拟器的多实例应用浅析(一)

背景 GNSS是一种成熟的定位导航技术&#xff0c;广泛应用于多个行业和场景。随着技术和需求的不断发展&#xff0c;出现了一种被称为“多实例”的应用与测试方式。 如无人机、航空航天和机器人等领域&#xff0c;开始采用双天线来实现姿态测量。这种方法利用两个独立的GNSS天…

1.HTML表格跨行、跨列操作

在做商品sku时候看到合并行 rowspan 使用td元素的colspan属性来实现单元格跨列操作 使用td元素的rowspan属性来实现单元格的跨行操作 rowspan rowspan&#xff1a;属性规定单元格可横跨的列数&#xff0c;所有浏览器都支持rowspan属性。其取值为number&#xff0c;如下图所示…

一键激活Parallels Desktop 19 for Mac虚拟机

Parallels Desktop是一款功能强大的虚拟机软件&#xff0c;它允许用户在Mac电脑上同时运行Windows、Linux和其他操作系统。Parallels Desktop提供了直观易用的界面&#xff0c;使用户可以轻松创建、配置和管理虚拟机。 该软件具有快速启动和关闭虚拟机的能力&#xff0c;让用户…