当前位置: 首页 > news >正文

我为本公司想建个网站长沙城乡建设部网站首页

我为本公司想建个网站,长沙城乡建设部网站首页,前端静态网站模板,wordpress学校模板下载第四章 应用程序生命周期管理#xff08;上#xff09; 1、在Kubernetes中部署应用流程 1.1 使用Deployment部署Java应用 在 Kubernetes 中#xff0c;Deployment 是一种控制器#xff0c;用于管理 Pod 的部署和更新。以下是使用 Deployment 部署 Java 应用的步骤#x…第四章 应用程序生命周期管理上 1、在Kubernetes中部署应用流程 1.1 使用Deployment部署Java应用 在 Kubernetes 中Deployment 是一种控制器用于管理 Pod 的部署和更新。以下是使用 Deployment 部署 Java 应用的步骤 1创建 Deployment 使用 kubectl create deployment 命令创建一个名为 web 的 Deployment并指定要使用的镜像 kubectl create deployment web --imagelizhenliang/java-demo 使用 kubectl get 命令显示 Deployment 和 Pod 的详细信息包括名称、状态、副本数等 kubectl get deployment,pods 2使用 Service 发布Pod 在 Kubernetes 中Service 用于将一组 Pod 暴露给外部网络。以下是使用 Service 发布 Pod 的步骤 使用 kubectl expose 命令创建一个 Service并指定要暴露的端口和类型 kubectl expose deployment web --port80 --typeNodePort --target-port8080 --nameweb --port80Service 的端口为 80 --typeNodePortService 类型为 NodePort这意味着 Service 会在每个节点的 IP 地址上暴露一个端口 --target-port8080Pod 的端口为 8080 --namewebService 的名称为 web 使用 kubectl get 命令查看 Service 的状态 kubectl get service2、服务编排YAML 2.1 YAML文件格式说明 YAMLYAML Aint Markup Language是一种人类可读的数据序列化格式广泛用于配置文件和数据交换。在 Kubernetes 中YAML 文件用于定义和配置各种资源如 Pod、Deployment、Service 等。以下是 YAML 语法格式的详细说明 ① 缩进表示层级关系 YAML 使用缩进来表示层级关系类似于 Python。缩进必须是空格不能使用制表符Tab。通常建议使用 2 个空格进行缩进。 level1:level2:level3: value② 不支持制表符“tab”缩进使用空格缩进 YAML 解析器对制表符非常敏感因此必须使用空格进行缩进。 # 错误的缩进使用制表符 level1:level2: value# 正确的缩进使用空格 level1:level2: value③ 通常开头缩进 2 个空格 为了保持一致性和可读性通常建议在每个层级开始时缩进 2 个空格。 level1:level2:level3: value④ 字符后缩进 1 个空格如冒号、逗号等 在键值对中冒号:后面通常需要跟一个空格。 key: value⑤ “---” 表示 YAML 格式一个文件的开始 在 YAML 文件中“- - -” 用于表示一个新的文档的开始。一个文件中可以包含多个文档每个文档以“- - -” 开头。 --- document1:key1: value1--- document2:key2: value2⑥  “#” 注释 YAML 支持使用 # 进行注释。注释行以 # 开头不会被解析器处理。 # 这是一个注释 key: value # 这也是一个注释 2.2 YAML文件创建资源对象 2.2.1 Deployment apiVersion API版本 kind 资源类型即功能 metadata 资源元数据name资源名字、namespace命名空间 spec 资源规格 replicas 副本(实例)数量 selector 标签选择器与下面metadata.labels保持一致 template Pod模板 metadata Pod元数据 spec Pod规格 containers 容器配置 将你需要创建的资源描述到YAML文件中 部署kubectl apply -f xxx.yaml执行多部署kubectl apply -f xxx1.yaml -f xxx2.yaml卸载kubectl delete -f xxx.yaml 示例Kubernetes Deployment YAML 文件 使用 kubectl create deployment 命令创建一个 Deployment并指定镜像、副本数和命名空间。命令示例添加 -o 选项 可导出YAML kubectl create deployment web --imagelizhenliang/java-demo --replicas3 -n default 使用 YAML 文件来定义和创建 Deployment内容如下 apiVersion: apps/v1 kind: Deployment metadata:name: webnamespace: defaultlabels:app: web spec:replicas: 3selector:matchLabels:app: webtemplate:metadata:labels:app: webspec:containers:- name: webimage: lizhenliang/java-demoports:- containerPort: 8080解释说明 apiVersion: apps/v1指定 API 版本。 kind: Deployment指定资源类型为 Deployment。 metadata定义资源的元数据包括名称、命名空间和标签。 name: webDeployment 的名称为 web。 namespace: defaultDeployment 所在的命名空间为 default。 labels为 Deployment 添加标签 app: web。 spec定义 Deployment 的详细规格。 replicas: 3指定副本数为 3。 selector定义选择器用于匹配 Pod 标签。 matchLabels匹配标签 app: web。 template定义 Pod 模板。 metadata定义 Pod 的元数据包括标签 app: web。 spec定义 Pod 的详细规格。 containers定义容器列表。 name: web容器的名称为 web。 image: lizhenliang/java-demo使用的镜像为 lizhenliang/java-demo。 ports定义容器端口。 containerPort: 8080容器端口为 8080。 2.2.2 Service port Service端口通过ClusterIP访问用 targetPort 镜像内服务端口例如nginx镜像是80 selector 标签选择器与Deployment中标签保 持一致 type Service类型 示例Kubernetes Service YAML 文件 使用 kubectl expose 命令为现有的 Deployment 创建一个 Service并指定端口、目标端口和服务类型。以下是命令示例 kubectl expose deployment web --port80 --target-port8080 --typeNodePort -n default 创建一个名为 web-service.yaml 的文件内容如下 apiVersion: v1 kind: Service metadata:name: web-servicenamespace: defaultlabels:app: web spec:type: NodePortports:- port: 80targetPort: 8080selector:app: web 解释说明 apiVersion: v1指定 API 版本。 kind: Service指定资源类型为 Service。 metadata定义资源的元数据包括名称、命名空间和标签。 name: web-serviceService 的名称为 web-service。 namespace: defaultService 所在的命名空间为 default。 labels为 Service 添加标签 app: web。 spec定义 Service 的详细规格。 type: NodePort指定服务类型为 NodePort允许外部访问。 ports定义服务端口和目标端口。 port: 80Service 的端口为 80。 targetPort: 8080目标端口为 8080即 Pod 中容器的端口。 selector定义选择器用于匹配 Pod 标签。 app: web匹配标签 app: web 的 Pod。 — 定义标签 注意Service中的selector字段指定Lables即左图红框内的Lables保持一致 ① 一般推荐定义两个由项目和应用组成例如 project: ec //键值可任意定义 app: portal② matchLabels 必须与下面labels保持一致否则apply会报错 apiVersion: apps/v1 ... spec:selector:matchLabels:project: ec //指定项目app: portal //指定应用 template:metadata:labels:project: ecapp: portal ... Service是通过标签进行转发负载均衡获取Service关联后面Pod的IP kubectl get endpoints 2.2.3 资源字段太多记不住怎么办 Kubernetes 的资源字段非常多完全记住所有字段是不现实的。以下是一些实用的方法来帮助你管理和生成 YAML 文件 1. 使用 create 命令生成 YAML 文件 使用 kubectl create 命令结合 -o yaml 和 --dry-runclient 选项生成 YAML 而不实际创建资源。 kubectl create deployment nginx --imagenginx:1.16 -o yaml --dry-runclient my-deploy.yaml-o yaml以 YAML 格式输出 --dry-runclient在客户端模拟运行不实际创建资源 --dry-runserver提交到api层面尝试运行 2. 使用 get 命令导出现有资源的 YAML 文件 如果已创建了一个资源可使用 kubectl get 命令将其导出为 YAML 文件 kubectl get deployment nginx -o yaml my-deploy.yaml3. 使用 kubectl explain 命令查看字段说明 kubectl explain 命令可帮助查看资源的字段说明了解每个字段的含义和用法 kubectl explain pods.spec.containers kubectl explain deployment4. 参考官方文档的示例 Kubernetes 官方文档提供了丰富的示例和详细的字段说明是学习和参考的好资源。 Kubernetes 官方文档Kubernetes API 参考 3、Deployment 工作负载 3.1 介绍 Deployment是最常用的K8s工作负载控制器Workload Controllers 是K8s的一个抽象概念用于更高级层次对象部署和管理Pod。其他控制器还有DaemonSet、StatefulSet等。 1. 管理 Pod 和 ReplicaSet PodKubernetes 中最小的部署单元包含一个或多个容器。ReplicaSet确保指定数量的 Pod 副本始终运行。Deployment管理 ReplicaSet从而间接管理 Pod。 2. 主要功能 上线部署通过定义新的 ReplicaSet 来部署新版本的 Pod。副本设定指定 Pod 的副本数量确保应用的高可用性。滚动升级逐步替换旧版本的 Pod实现平滑升级。回滚在升级过程中出现问题时可以回滚到之前的版本。 3. 应用场景 网站部署和管理网站的前端和后端服务。API部署和管理 API 服务确保 API 的高可用性和可扩展性。微服务管理微服务架构中的各个服务实现服务的独立部署和升级。 3.2 应用生命周期管理流程 1. 部署Deployment 部署是将应用程序首次部署到 Kubernetes 集群中的过程。这个过程通常包括以下步骤 编写 YAML 文件定义 Deployment、Service 等资源应用 YAML 文件使用 kubectl apply -f filename.yaml 命令将资源应用到集群中验证部署使用 kubectl get pods 和 kubectl get deployments 验证 Pod 和 Deployment 状态 2. 升级Upgrade 升级是指将应用程序更新到新版本的过程。Kubernetes 提供滚动升级Rolling Update策略确保在升级过程中服务不中断。 更新 YAML 文件修改 Deployment 中的镜像版本或其他配置应用更新使用 kubectl apply -f filename.yaml 命令应用更新监控升级过程使用 kubectl rollout status deployment/deployment-name 监控升级状态 3. 回滚Rollback 回滚是指在升级过程中出现问题时将应用程序恢复到之前的版本。Kubernetes 提供了回滚功能可以轻松地将 Deployment 回滚到之前的版本。 回滚到上一个版本使用 kubectl rollout undo deployment/deployment-name 命令。回滚到指定版本使用 kubectl rollout undo deployment/deployment-name --to-revisionrevision-number 命令。 4. 下线Deletion 下线是指将应用程序从 Kubernetes 集群中移除的过程。这个过程通常包括以下步骤 删除 Deployment使用 kubectl delete deployment/deployment-name 命令删除 Deployment删除 Service如果存在相关的 Service使用 kubectl delete service/service-name 命令删除 Service 3.3 应用部署 通过 Deployment 部署镜像两种方式 ① kubectl create deployment web --imagenginx:1.16 --replicas3② kubectl apply -f xxx.yaml apiVersion: apps/v1 kind: Deployment metadata:name: webnamespace: default spec:replicas: 3 # Pod副本预期数量selector:matchLabels:app: webtemplate:metadata:labels:app: web # Pod副本的标签spec:containers:- name: webimage: nginx:1.16 //指定镜像版本 3.4 应用升级 应用升级主要对象为镜像镜像里面是包含了项目和运行环境例如nginx在修改YAML的镜像并执行时Deployment控制器会根据检测到的镜像版本进行升级即 修改镜像默认是产生的一次滚动升级更新镜像三种方式自动触发滚动升级 方式1kubectl apply -f xxx.yaml ...spec:containers:- name: webimage: nginx:1.16 //修改指定镜像版本 方式2kubectl set image deployment 容器名镜像名称:版本 //非交互 kubectl set image deployment web webnginx:1.17注意容器名为 -name定义的名字 备注升级新的镜像是通过创建新的副本且升级完成的情况下通过删除旧镜像进行去替换 方式3kubectl edit deployment # 使用系统编辑器在线打开 kubectl edit deployment web 补充edit在线编辑只有个别的资源可以使用 3.4.1 滚动升级详细介绍 滚动发布是指每次只升级一个或多个服务升级完成后加入生产环境不断执行这个过程直到集群中 的全部旧版本升级新版本。 了解有关K8S的主流发布方案每种方案都有其独特的优势和适用场景。 ① 滚动升级Rolling Update Kubernetes 默认的升级策略适用于大多数场景。它通过逐步替换旧版本的 Pod实现平滑升级确保在升级过程中服务不中断。 逐步替换逐步创建新版本的 Pod并删除旧版本的 Pod平滑过渡在升级过程中新旧版本的 Pod 可以同时存在确保服务的连续性自动回滚如果升级过程中出现问题Kubernetes 可以自动回滚到之前的版本 ② 蓝绿升级Blue-Green Deployment 是一种更复杂的发布策略适用于需要零停机时间和快速回滚的场景。它将目标服务器分为两组蓝组和绿组。先升级一组例如蓝组上线后没问题再升级另一组绿组。 零停机时间在升级过程中始终有一组服务在运行确保服务的连续性快速回滚如果新版本出现问题可以快速切换回旧版本资源消耗需要两倍的服务器资源因为两组服务同时运行 ③ 灰度升级Canary Deployment 是一种逐步发布新版本的策略适用于需要逐步验证新版本稳定性的场景。它按照一定百分比升级例如先升级 10%继续 50%最后 40%。 逐步验证逐步将流量切换到新版本验证其稳定性风险控制如果新版本出现问题可以快速回滚减少影响范围灵活性可以根据实际情况调整升级比例 滚动升级在K8s中的实现 1个Deployment2个ReplicaSet 滚动更新一次只升级一小部分Pod成功后再升级一部分Pod最终完成 所有Pod升级整个过程始终有Pod在运行从而保证了业务的连续性。 查看滚动升级过程 使用 kubectl describe deployment web 命令查看详情 新建RS web-nginx-f5f6b7648并设置副本为1 缩容RS web-nginx-6b999f8f 副本数由3到2 扩容RS web-nginx-f5f6b7648 副本数由1到2 缩容RS web-nginx-6b999f8f 副本数由2到1 扩容RS web-nginx-f5f6b7648 副本数由2到3 缩容RS web-nginx-6b999f8f 副本数由1到0 备注Scaled up RS 新建/扩容 Scaled down RS 缩容备注deployment pod 名称格式组成 deployment名称-RS 名称-随机字符串 3.4.2 ReplicaSet控制器 ReplicaSet副本集主要维护Pod副本数量不断对比当前Pod数量 与期望Pod数量在Deployment控制器创建的Pod中进行删除Pod的操作ReplicaSet会自动帮忙拉起新的Pod 用途Deployment每次发布都会创建一个RS作为记录 用于实现滚动升级和回滚一个RS相当于一次历史的版本 ① 查看RS记录 命令kubectl get replicaset [rootk8s-master-1-71 ~]# kubectl get replicaset NAME DESIRED CURRENT READY AGE web-5cc97bc7d5 1 1 1 3h35m # 或者 kubectl get rs ② 查看详细RS记录 命令kubectl describe rs [rootk8s-master-1-71 ~]# kubectl describe rs web-5cc97bc7d5 Name: web-test-yaml-5cc97bc7d5 Namespace: default Selector: appweb,pod-template-hash5cc97bc7d5 Labels: appwebpod-template-hash5cc97bc7d5 Annotations: deployment.kubernetes.io/desired-replicas: 1deployment.kubernetes.io/max-replicas: 2deployment.kubernetes.io/revision: 1 Controlled By: Deployment/web-test-yaml Replicas: 1 current / 1 desired Pods Status: 1 Running / 0 Waiting / 0 Succeeded / 0 Failed Pod Template:Labels: appwebpod-template-hash5cc97bc7d5Containers:nginx:Image: nginxPort: noneHost Port: noneEnvironment: noneMounts: noneVolumes: none Events: none③ 查看版本对应RS记录 命令kubectl rollout history deployment [rootk8s-master-1-71 ~]# kubectl rollout history deployment web-nginx deployment.apps/web-nginx REVISION CHANGE-CAUSE 1 none 2 none3.5 回滚 用途项目升级失败恢复到正常版本 ① 回滚上一个版本 命令kubectl rollout undo deployment [rootk8s-master-1-71 ~]# kubectl rollout undo deployment web-nginx② 回滚历史指定版本 命令kubectl rollout undo deployment web --to-revision版本记录 [rootk8s-master-1-71 ~]# kubectl rollout undo deployment web-nginx --to-revision4注回滚是重新部署某一次部署时的状态即当时版本所有配置 通过脚本方式获取历史发布版本与镜像对应关系 脚本如下 kubectl describe $(kubectl get rs -o name) | egrep revision:|Image: 解释发布镜像的RS记录名称版本 kubectl get rs -o name // -o name 只获取rs名称解释每个RS对应一个镜像的RS版本与发布历史版本号 kubectl describe rs 测试 for i in {1..1000} do sleep 1 curl -I http://192.168.1.71:32233 done 3.6 项目下线 命令kubectl delete deployment/web命令kubectl delete svc/web 3.7 应用实力扩容和缩容 水平扩/缩容实现方式场景当并发过大可以启动多个Pod实例应对提高并发 修改yaml里的 replicas 值再apply -f xxx.yaml文件kubectl scale deployment --replicas副本数 注replicas参数控制Pod副本数量 [rootk8s-master-1-71 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE web-nginx-7bbcc98c54-6rd6f 1/1 Running 0 6m40s web-nginx-7bbcc98c54-prtgm 1/1 Running 0 6m43s web-nginx-7bbcc98c54-x69wf 1/1 Running 0 6m38s# 从3副本缩容至2副本[rootk8s-master-1-71 ~]# kubectl scale deployment web-nginx --replicas2 deployment.apps/web-nginx scaled [rootk8s-master-1-71 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE web-nginx-7bbcc98c54-6rd6f 1/1 Running 0 8m5s web-nginx-7bbcc98c54-prtgm 1/1 Running 0 8m8s# 从2副本扩容至5副本 [rootk8s-master-1-71 ~]# kubectl scale deployment web-nginx --replicas5 deployment.apps/web-nginx scaled [rootk8s-master-1-71 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE web-nginx-7bbcc98c54-6rd6f 1/1 Running 0 8m47s web-nginx-7bbcc98c54-9jcv4 1/1 Running 0 12s web-nginx-7bbcc98c54-g48n8 1/1 Running 0 12s web-nginx-7bbcc98c54-hkdrk 1/1 Running 0 12s web-nginx-7bbcc98c54-lccp9 1/1 Running 0 12s 课后作业 1、创建一个deployment 副本数 3然后滚动更新镜像版本并记录这个更新记录最后再回滚到上一个版本 名称nginx镜像版本1.16更新镜像版本1.17 2、给web deployment扩容副本数为3 3、把deployment输出json文件再删除创建的deployment 4、生成一个deployment yaml文件保存到/opt/deploy.yaml 名称web标签app_env_stagedev 小结 本篇为 【Kubernetes CKA认证 Day3】的学习笔记希望这篇笔记可以让您初步了解到 YAML文件如何编排Deployment的工作负载模式K8S一般生命周期管理流程等课后还有扩展实践不妨跟着我的笔记步伐亲自实践一下吧 Tip毕竟两个人的智慧大于一个人的智慧如果你不理解本章节的内容或需要相关笔记、视频可私信小安请不要害羞和回避可以向他人请教花点时间直到你真正的理解。
http://www.hkea.cn/news/14291357/

相关文章:

  • 网站落地页和普通网页网页设计作业5000字
  • 可以做动画的网站都有哪些厦门网站建设网络推广
  • 揭阳自助建站wordpress wechat
  • 服务器搭建网站域名配置广州专业做网站
  • 网站建设与维护设计报告沈阳网站制作公司和服务器
  • 宁波做网站网站建设和微信小程序
  • 合肥做个网站什么价格便宜wordpress简约新闻自媒体主题
  • 建设企业网站目的石家庄网站服务
  • 福州公司网站建设一定要用主流程序php语言义乌外贸论坛
  • 福建住建设厅官方网站关于建设学校网站的报告书
  • 网站开发代码用什么软件杭州 app开发公司
  • 怎么网站建设公司好看简洁的logo
  • 个人网站wordpress网络运维工程师需要掌握的技能
  • 大余网站wordpress模板调用自定义插件
  • 网站开发用什么图片格式最好国内十大搜索引擎排名
  • 网站建设软著网站改版建设公司
  • 网站seo教程初中学历怎么提升大专学历
  • 国家建设管理信息网站张家界市建设工程造价管理站网站
  • 建设项目环保验收平台网站优化网站最好的刷排名软件
  • 自适应网站建设特点石家庄网络开发公司
  • 南昌品牌网站建设天津网站的优化
  • 百胜网站建设财务记账网站建设需要摊销吗
  • 温州文成网站建设gvm网站是什么类的网站
  • 微信用什么小程序可以提取文字现在网站优化
  • 安徽省建设厅官方网站黄世山如何制作微信公众号文章
  • 建设银行校招网站入口深圳建网站
  • 贵州省交通建设集团网站视频 播放网站怎么做
  • 建设厅网站生成案卷生成不了广告设计培训内容
  • 酒店网站建设方案书网站个人备案 企业备案
  • 泉州网站seo上海网站建设联系