k8s-----10、Controller-Deployment

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: nulllabels:         ##控制器标签app: webname: web
spec:replicas: 1selector:   # 与pod匹配的labelsmatchLabels:app: webstrategy: {}template:   # 模板部分是涉及到的podmetadata:creationTimestamp: nulllabels:app: webspec:containers:- image: nginxname: nginxresources: {}
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: webmanagedFields:- apiVersion: v1fieldsType: FieldsV1fieldsV1: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-exposeoperation: Updatetime: "2022-05-05T12:57:40Z"name: webexposenamespace: defaultresourceVersion: "184540"uid: b79e14cb-2b1b-44c1-b626-f4903786fb8a
spec:clusterIP: 10.103.24.195clusterIPs:- 10.103.24.195externalTrafficPolicy: Clusterports:- nodePort: 30605port: 80protocol: TCPtargetPort: 80selector:app: websessionAffinity: Nonetype: 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          10mNAME                 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: nulllabels:app: webname: web
spec:replicas: 2selector:matchLabels:app: webstrategy: {}template:metadata:creationTimestamp: nulllabels:app: webspec:containers:- image: nginx:1.14name: nginxresources: {}
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.hqwc.cn/news/145473.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑豹程序员-架构师学习路线图-百科:SpringBoot

文章目录 1、什么是SpringBoot&#xff1f;2、SpringBoot发展史3、为什么我们要使用SpringBoot 1、什么是SpringBoot&#xff1f; Spring Boot是一个用于创建独立的、基于Spring框架的Java应用程序的开源框架。 Spring Boot简化了Spring应用程序的开发和部署&#xff0c;使开发…

gulp打包vue3+jsx+less插件

最终转换结果如下 在根目录下添加gulpfile.js文件&#xff0c;package.json添加命令npm run gulp var gulp require(gulp) var babel require(gulp-babel) var less require(gulp-less) var del require(del); var spawn require(child_process).spawn;const outDir &…

VS Code C# 开发工具包正式发布

前言 微软于本月正式发布Visual Studio Code C#开发工具包&#xff0c;此前该开发套件已经以预览版的形式在6月份问世。经过4个月的测试和调整&#xff0c;微软修复了350多个问题&#xff0c;其中大部分是用户反馈导致的问题。此外&#xff0c;微软还对产品进行了300多项有针对…

unity脚本_力 c#

创建一个脚本 将代码挂载到物体上 取消物体的重力 运行即向z轴运动 加力之后 是否停止是由阻力影响 如果阻力为零 则会一直运动 如果希望就算有阻力也让物体一直动就将加力代码放在Update函数里 using UnityEngine; public class Power : MonoBehaviour{ Rigidbody rigidBo…

头脑风暴之约瑟夫环问题

一 问题的引入 约瑟夫问题的源头完全可以命名为“自杀游戏”。本着和谐友爱和追求本质的目的&#xff0c;可以把问题描述如下&#xff1a; 现有n个人围成一桌坐下&#xff0c;编号从1到n&#xff0c;从编号为1的人开始报数。报数也从1开始&#xff0c;报到m人离席&#xff0c…

Java面试——RPC协议

涉及到分布式方面知识的话&#xff0c;RPC协议是逃不开的&#xff0c;所以在此记录一下RPC协议。 什么是RPC协议 RPC协议&#xff08;Remote Procedure Call&#xff09;远程过程调用&#xff0c;简单的来说&#xff1a;RPC协议是一种通过网络从远程计算机程序获取服务的协议…

cocos creator 小游戏允许他人访问本地项目

需求背景&#xff1a; 发版成微信小游戏前&#xff0c;需要策划介入体验。不上传微信体验版本 实现&#xff1a; 1.发布平台选择web桌面端 2.构建完成后点击运行从浏览器上获取本地的运行地址 3.winR ——》 cmd 控制台 输入 ipconfig 找到IPv4地址&#xff0c;替换本地部分 …

3BHE003855R0001 UNS2882A 用于嵌入式/工业用途的人工智能盒

3BHE003855R0001 UNS2882A 用于嵌入式/工业用途的人工智能盒. 无风扇iBOX 1200系列包括型号iBOX-1265 UE/iBOX-1245 UE/iBOX-1215 UE&#xff0c;由第12代英特尔酷睿i7/i5/i3处理器(Alder Lake-P)提供动力&#xff0c;通过英特尔Iris Xe显卡和两个DDR4 3200MHz SO-DIMM提供高达…

Windows环境如何使用Zblog+cpoalr搭建个人网站并远程访问?

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员&#xff0c;自己搭建网站制作网页是绕…

设计模式:模板模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

简介&#xff1a; 模板模式&#xff0c;它是一种行为型设计模式&#xff0c;它定义了一个操作中的算法的框架&#xff0c;将一些步骤延迟到子类中实现&#xff0c;使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 通俗地说&#xff0c;模板模式就是将某一行…

【ARM裸机】ARM入门

1.ARM成长史 2.ARM的商业模式和生态系统 ARM只设计CPU&#xff0c;但是不生产CPU 3.为什么使用三星&#xff1a;S5PV210 4.各种版本号 0. ARM和Cortex Cortex就是ARM公司一个系列处理器的名称。比如英特尔旗下处理器有酷睿&#xff0c;奔腾&#xff0c;赛扬。ARM在最初的处理器…

程序包org.apache.ibatis.mapping不存在 符号找不到

找不到符号 符号: 类 Cursor和程序包org.apache.ibatis.mapping不存在 在idea中没有错误&#xff0c;但是在linux编辑时报了这两个错误&#xff0c;之前有遇见过符号找不到的问题&#xff0c; 当时的问题是编译的import xxx.xxx.xxx.* 识别不成功过&#xff0c;将*改为…