k8s教程3:Kubernetes应用的部署和管理

学习目标
  • 理解Kubernetes中应用部署的基本概念和方法
  • 掌握Deployment、ReplicaSet、StatefulSet、DaemonSet、Job与CronJob等控制器的使用
  • 了解Helm作为Kubernetes的包管理工具的基本使用
  • 通过实际示例学习应用的部署、更新与管理

Kubernetes提供了一套强大而灵活的机制,用于部署、管理和扩展容器化应用。通过不同类型的控制器(Controllers),Kubernetes能够自动化处理应用的生命周期,确保应用的高可用性和可扩展性。本篇文章将深入探讨Kubernetes中应用部署与管理的核心概念和实践方法,包括各种控制器的使用、配置管理工具Helm的介绍,以及实际的部署示例,帮助读者全面掌握Kubernetes应用管理的关键技能。

1. 应用部署概述

在Kubernetes中,**部署(Deployment)**是管理应用生命周期的核心资源对象。通过Deployment,用户可以声明应用的期望状态,如Pod的数量、使用的镜像版本等,Kubernetes会自动确保实际状态与期望状态一致。Deployment提供了滚动更新、回滚、扩展和暂停等功能,极大地简化了应用的管理。

关键概念:

  • 声明式管理:用户声明期望状态,Kubernetes负责实现和维护。
  • 自动化控制:自动处理Pod的创建、更新和删除,确保应用的高可用性。
  • 版本管理:支持应用版本的快速切换和回滚。

2. Deployment

Deployment是用于管理无状态应用的控制器,负责确保指定数量的Pod副本在任何时候都在运行。它支持滚动更新和回滚功能,使应用的版本管理更加便捷和安全。

主要功能:

  • 滚动更新:逐步替换旧版本的Pod,确保服务不中断。
  • 回滚:在更新失败时,快速恢复到之前的稳定版本。
  • 扩展与缩减:根据需求动态调整Pod的副本数量。

示例:创建一个简单的Deployment

创建deployment.yaml文件:

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80

应用配置:

kubectl apply -f deployment.yaml

3. ReplicaSet

ReplicaSet用于确保在任何时间点都有指定数量的Pod副本在运行。虽然Deployment实际上使用ReplicaSet来管理Pod副本,但理解ReplicaSet的工作原理对于深入掌握Kubernetes应用管理至关重要。

主要功能:

  • Pod副本管理:确保Pod的数量与ReplicaSet的副本数一致。
  • 标签选择器:通过标签匹配Pod,进行管理和调度。

示例:查看ReplicaSet

kubectl get replicasets

4. StatefulSet

StatefulSet用于管理有状态应用,提供稳定的网络标识符、持久化存储和有序的部署与更新。适用于数据库、分布式存储系统等需要保持状态的应用。

主要功能:

  • 稳定的Pod名称:每个Pod都有一个唯一且稳定的名称。
  • 有序部署与更新:按照顺序创建、删除或更新Pod。
  • 持久化存储:每个Pod可以绑定到特定的PersistentVolume,确保数据持久性。

示例:创建一个StatefulSet

创建statefulset.yaml文件:

apiVersion: apps/v1
kind: StatefulSet
metadata:name: mysql
spec:serviceName: "mysql"replicas: 3selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:containers:- name: mysqlimage: mysql:5.7ports:- containerPort: 3306env:- name: MYSQL_ROOT_PASSWORDvalue: "my-secret-pw"volumeMounts:- name: mysql-persistent-storagemountPath: /var/lib/mysqlvolumeClaimTemplates:- metadata:name: mysql-persistent-storagespec:accessModes: [ "ReadWriteOnce" ]resources:requests:storage: 1Gi

应用配置:

kubectl apply -f statefulset.yaml

5. DaemonSet

DaemonSet确保在集群中的每个节点上运行一个Pod实例,常用于运行集群级别的服务,如日志收集、监控代理等。

主要功能:

  • 节点级服务部署:在每个节点上自动创建Pod。
  • 自动扩展:新添加的节点会自动部署DaemonSet的Pod。

示例:创建一个DaemonSet

创建daemonset.yaml文件:

apiVersion: apps/v1
kind: DaemonSet
metadata:name: fluentdlabels:app: fluentd
spec:selector:matchLabels:app: fluentdtemplate:metadata:labels:app: fluentdspec:containers:- name: fluentdimage: fluent/fluentd:v1.11ports:- containerPort: 24224

应用配置:

kubectl apply -f daemonset.yaml

6. Job与CronJob

JobCronJob用于管理批处理任务。Job负责一次性任务的执行,确保任务完成;CronJob则基于时间计划定期执行任务。

主要功能:

  • Job

    • 一次性任务:执行特定的批处理任务,如数据库迁移、数据备份等。
    • 重试机制:在任务失败时自动重试。
  • CronJob

    • 定时任务:按照预定的时间表定期执行任务。
    • 灵活的时间表达式:支持类似Linux cron的时间调度格式。

示例:创建一个Job

创建job.yaml文件:

apiVersion: batch/v1
kind: Job
metadata:name: pi
spec:template:spec:containers:- name: piimage: perlcommand: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]restartPolicy: NeverbackoffLimit: 4

应用配置:

kubectl apply -f job.yaml

示例:创建一个CronJob

创建cronjob.yaml文件:

apiVersion: batch/v1
kind: CronJob
metadata:name: hello
spec:schedule: "*/1 * * * *"jobTemplate:spec:template:spec:containers:- name: helloimage: busyboxargs:- /bin/sh- -c- echo Hello Kubernetes! && sleep 30restartPolicy: OnFailure

应用配置:

kubectl apply -f cronjob.yaml

7. Helm介绍与使用

Helm是Kubernetes的包管理工具,类似于Linux的apt或yum。通过Helm,用户可以更轻松地打包、配置和部署Kubernetes应用。

主要功能:

  • Chart:Helm的包格式,包含应用的所有Kubernetes资源定义。
  • 版本管理:支持应用的版本控制和回滚。
  • 模板化配置:使用模板和变量,实现配置的灵活性和可重用性。

安装Helm

  1. 下载Helm
    • 访问Helm官网下载适用于操作系统的Helm二进制文件。
  2. 安装Helm
    • 解压下载的文件并将helm可执行文件移动到系统路径中,例如:
      tar -zxvf helm-v3.10.0-linux-amd64.tar.gz
      sudo mv linux-amd64/helm /usr/local/bin/helm
      
  3. 验证安装
    helm version
    

使用Helm部署应用

  1. 添加Helm仓库
    helm repo add stable https://charts.helm.sh/stable
    helm repo update
    
  2. 安装一个Chart
    helm install my-nginx stable/nginx-ingress
    
  3. 查看已安装的Chart
    helm list
    
  4. 升级Chart
    helm upgrade my-nginx stable/nginx-ingress --set controller.replicaCount=3
    
  5. 回滚Chart
    helm rollback my-nginx 1
    
  6. 卸载Chart
    helm uninstall my-nginx
    

8. 配置和管理应用

除了基本的部署,Kubernetes还提供了丰富的配置和管理工具,确保应用能够灵活适应不同的环境和需求。

配置管理工具:

  • ConfigMap:用于存储非敏感的配置信息,如配置文件和环境变量。
  • Secret:用于存储敏感数据,如密码、令牌和证书,支持加密存储。

示例:使用ConfigMap

创建configmap.yaml文件:

apiVersion: v1
kind: ConfigMap
metadata:name: app-config
data:APP_ENV: productionLOG_LEVEL: info

应用配置:

kubectl apply -f configmap.yaml

在Pod中使用ConfigMap:

apiVersion: v1
kind: Pod
metadata:name: config-pod
spec:containers:- name: appimage: my-app-imageenvFrom:- configMapRef:name: app-config

示例:使用Secret

创建secret.yaml文件:

apiVersion: v1
kind: Secret
metadata:name: db-secret
type: Opaque
data:username: YWRtaW4=  # base64编码后的"admin"password: MWYyZDFlMmU2N2Rm  # base64编码后的"1f2d1e2e67df"

应用配置:

kubectl apply -f secret.yaml

在Pod中使用Secret作为环境变量:

apiVersion: v1
kind: Pod
metadata:name: secret-pod
spec:containers:- name: appimage: my-app-imageenv:- name: DB_USERNAMEvalueFrom:secretKeyRef:name: db-secretkey: username- name: DB_PASSWORDvalueFrom:secretKeyRef:name: db-secretkey: password

9. 实际示例与操作步骤

通过一个完整的示例,展示如何在Kubernetes中部署和管理一个实际应用,包括使用Deployment、Service、ConfigMap和Secret等资源。

示例背景

假设我们需要部署一个简单的Web应用,该应用连接到一个MySQL数据库。应用需要读取配置信息,并通过环境变量传递数据库凭证。我们将使用Deployment管理Web应用,StatefulSet管理MySQL数据库,并使用Service进行网络暴露。

步骤 1:部署MySQL数据库
  1. 创建StorageClass(如果需要动态存储)

    创建storageclass.yaml

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:name: standard
    provisioner: kubernetes.io/aws-ebs  # 根据实际环境选择
    parameters:type: gp2fsType: ext4
    reclaimPolicy: Delete
    

    应用配置:

    kubectl apply -f storageclass.yaml
    
  2. 创建Secret用于数据库凭证

    创建mysql-secret.yaml

    apiVersion: v1
    kind: Secret
    metadata:name: mysql-secret
    type: Opaque
    data:username: YWRtaW4=  # base64编码后的"admin"password: cGFzc3dvcmQ=  # base64编码后的"password"
    

    应用配置:

    kubectl apply -f mysql-secret.yaml
    
  3. 创建StatefulSet部署MySQL

    创建mysql-statefulset.yaml

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:name: mysql
    spec:serviceName: "mysql"replicas: 1selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:containers:- name: mysqlimage: mysql:5.7env:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:name: mysql-secretkey: passwordports:- containerPort: 3306volumeMounts:- name: mysql-persistent-storagemountPath: /var/lib/mysqlvolumeClaimTemplates:- metadata:name: mysql-persistent-storagespec:accessModes: [ "ReadWriteOnce" ]resources:requests:storage: 1Gi
    

    应用配置:

    kubectl apply -f mysql-statefulset.yaml
    
  4. 创建Service暴露MySQL

    创建mysql-service.yaml

    apiVersion: v1
    kind: Service
    metadata:name: mysql
    spec:ports:- port: 3306clusterIP: Noneselector:app: mysql
    

    应用配置:

    kubectl apply -f mysql-service.yaml
    
步骤 2:部署Web应用
  1. 创建ConfigMap用于应用配置

    创建web-configmap.yaml

    apiVersion: v1
    kind: ConfigMap
    metadata:name: web-config
    data:APP_ENV: productionLOG_LEVEL: info
    

    应用配置:

    kubectl apply -f web-configmap.yaml
    
  2. 创建Deployment部署Web应用

    创建web-deployment.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:name: web-app
    spec:replicas: 2selector:matchLabels:app: webtemplate:metadata:labels:app: webspec:containers:- name: webimage: my-web-app-image:latest  # 替换为实际镜像ports:- containerPort: 80envFrom:- configMapRef:name: web-configenv:- name: DB_USERNAMEvalueFrom:secretKeyRef:name: mysql-secretkey: username- name: DB_PASSWORDvalueFrom:secretKeyRef:name: mysql-secretkey: password
    

    应用配置:

    kubectl apply -f web-deployment.yaml
    
  3. 创建Service暴露Web应用

    创建web-service.yaml

    apiVersion: v1
    kind: Service
    metadata:name: web-service
    spec:type: NodePortports:- port: 80targetPort: 80nodePort: 30080selector:app: web
    

    应用配置:

    kubectl apply -f web-service.yaml
    
  4. 访问Web应用

    在浏览器中输入http://<Cluster_IP>:30080,即可访问部署的Web应用。

步骤 3:更新应用
  1. 修改Deployment配置

    更新web-deployment.yaml中的镜像版本,例如将my-web-app-image:latest更新为my-web-app-image:v2.0

  2. 应用更新配置

    kubectl apply -f web-deployment.yaml
    
  3. 观察滚动更新过程

    kubectl rollout status deployment/web-app
    
  4. 验证应用版本

    访问Web应用,确保应用已更新到新版本。

10. 高级配置与最佳实践

为了确保Kubernetes应用的高效运行和管理,以下是一些高级配置和最佳实践:

10.1 使用健康检查

配置Readiness ProbeLiveness Probe,确保应用的健康状态。

示例:配置Readiness和Liveness Probe

apiVersion: apps/v1
kind: Deployment
metadata:name: web-app
spec:replicas: 2selector:matchLabels:app: webtemplate:metadata:labels:app: webspec:containers:- name: webimage: my-web-app-image:latestports:- containerPort: 80readinessProbe:httpGet:path: /healthzport: 80initialDelaySeconds: 5periodSeconds: 10livenessProbe:httpGet:path: /healthzport: 80initialDelaySeconds: 15periodSeconds: 20
10.2 使用滚动更新策略

通过配置滚动更新策略,控制应用更新的方式和速度。

示例:配置滚动更新策略

apiVersion: apps/v1
kind: Deployment
metadata:name: web-app
spec:replicas: 3strategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1maxSurge: 1selector:matchLabels:app: webtemplate:metadata:labels:app: webspec:containers:- name: webimage: my-web-app-image:latestports:- containerPort: 80
10.3 资源限制与配额

为容器配置资源限制,防止资源滥用。

示例:配置资源限制

apiVersion: apps/v1
kind: Deployment
metadata:name: web-app
spec:replicas: 2selector:matchLabels:app: webtemplate:metadata:labels:app: webspec:containers:- name: webimage: my-web-app-image:latestports:- containerPort: 80resources:requests:memory: "64Mi"cpu: "250m"limits:memory: "128Mi"cpu: "500m"

配置资源配额

创建resource-quota.yaml

apiVersion: v1
kind: ResourceQuota
metadata:name: web-quota
spec:hard:pods: "10"requests.cpu: "2"requests.memory: "1Gi"limits.cpu: "4"limits.memory: "2Gi"

应用配置:

kubectl apply -f resource-quota.yaml
10.4 使用标签和选择器

通过合理使用标签和选择器,实现资源的高效管理和组织。

示例:使用标签选择器

apiVersion: apps/v1
kind: Deployment
metadata:name: web-applabels:tier: frontend
spec:replicas: 2selector:matchLabels:tier: frontendtemplate:metadata:labels:tier: frontendspec:containers:- name: webimage: my-web-app-image:latestports:- containerPort: 80

11. 故障排除与常见问题

在Kubernetes应用的部署和管理过程中,可能会遇到各种问题。以下是一些常见问题及其解决方法:

11.1 Pod无法启动

原因

  • 镜像拉取失败
  • 配置错误
  • 资源不足

解决方法

  1. 查看Pod状态:
    kubectl get pods
    
  2. 查看详细信息:
    kubectl describe pod <pod-name>
    
  3. 查看容器日志:
    kubectl logs <pod-name>
    
11.2 Service无法访问

原因

  • Service配置错误
  • 后端Pod未就绪
  • 网络策略限制

解决方法

  1. 检查Service配置:
    kubectl get svc
    kubectl describe svc <service-name>
    
  2. 检查后端Pod状态:
    kubectl get pods -l app=<app-label>
    
  3. 检查网络策略:
    kubectl get networkpolicy
    
11.3 应用更新失败

原因

  • 新版本镜像有问题
  • 配置错误
  • 资源限制

解决方法

  1. 查看Deployment状态:
    kubectl rollout status deployment/<deployment-name>
    
  2. 回滚到之前的版本:
    kubectl rollout undo deployment/<deployment-name>
    
  3. 检查新版本Pod的详细信息和日志。

12. 总结

Kubernetes提供了一套完善的机制,用于部署、管理和扩展容器化应用。通过掌握Deployment、ReplicaSet、StatefulSet、DaemonSet、Job与CronJob等控制器的使用,结合配置管理工具Helm,运维人员能够高效地管理应用的生命周期,确保应用的高可用性和可扩展性。此外,理解和应用最佳实践,如健康检查、资源限制和标签选择器,有助于构建稳定和可靠的Kubernetes应用环境。

通过本篇文章的学习,你已经掌握了Kubernetes中应用部署与管理的核心概念和实际操作步骤。接下来,你可以继续学习第四篇:Kubernetes服务发现与负载均衡,深入了解Kubernetes中的网络管理和流量控制。如果你有任何问题或需要进一步的指导,请随时与我联系!

13. 资源链接

  • Kubernetes官方文档 - Deployments
  • Kubernetes官方文档 - ReplicaSets
  • Kubernetes官方文档 - StatefulSets
  • Kubernetes官方文档 - DaemonSets
  • Kubernetes官方文档 - Jobs
  • Kubernetes官方文档 - CronJobs
  • Helm官方文档
  • Kubernetes官方文档 - ConfigMaps
  • Kubernetes官方文档 - Secrets
  • Kubernetes最佳实践指南

通过本篇文章,你已经深入了解了Kubernetes中应用的部署和管理方法,掌握了各种控制器的使用技巧,学会了如何使用Helm进行应用的打包和部署,并通过实际示例加深了理解。应用这些知识,你可以更加高效地管理Kubernetes集群中的应用,确保其稳定运行和灵活扩展。接下来,你可以继续学习第四篇:Kubernetes服务发现与负载均衡,进一步提升你的Kubernetes运维和管理技能。

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

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

相关文章

通过特定协议拉起 electron 应用

在 Android 通过 sheme 协议可以拉起其他应用。 electron 应用也可以通过类似特定协议被拉起。 在同时有 web、客户端的应用里&#xff0c;可以通过这种方式在 web 拉起客户端。 支持拉起客户端 const PROTOCOL xxxif (process.defaultApp) {// 这里是开发环境&#xff0c;有…

算法备案的审核标准是什么?

随着《互联网信息服务算法推荐管理规定》等法规的出台&#xff0c;算法备案成为了强制性备案&#xff0c;是产品合规上线的必要条件之一。本篇内容将从企业视角出发&#xff0c;分析算法备案的常见问题&#xff0c;意在对有备案需求的小伙伴们有所帮助。 一、谁需要做算法备案…

回顾与动机 - 为什么我们需要 Transformer

在接下来的旅程中,我们将一起探索深度学习领域最重要、最具影响力的模型架构之一——Transformer。从它的基本原理出发,逐步深入,最终能够亲手实现一个文本生成模型。 本系列教程假设你已经具备一定的深度学习基础,了解神经网络、损失函数、优化器等基本概念,并且熟悉 Py…

探索 Higress:下一代云原生 API 网关

引言 在云原生时代&#xff0c;API 网关作为连接客户端与后端服务的桥梁&#xff0c;扮演着至关重要的角色。Higress 是一款由阿里巴巴开发的先进云原生 API 网关&#xff0c;基于开源的 Istio 和 Envoy 构建。它通过将流量网关、微服务网关和安全网关三者高度集成&#xff0c…

Spring Boot 整合 DeepSeek 实现AI对话 (保姆及教程)

文章目录 文章目录 前言 一、创建 spring boot 工程 二、申请key 三、修改配置文件 application.properties 四、编写控制器&#xff08;controller&#xff09; 五、运行调试 前言 提示&#xff1a;随着人工智能的不断发展&#xff0c;ai这门技术也越来越重要&#xff0c;很多…

前端资源加载失败后重试加载(CSS,JS等引用资源)

前端资源加载失败后的重试 .前端引用资源时出现了资源加载失败(这里针对的是路径引用异常或者url解析错误时) 解决这个问题首先要明确一下几个步骤 1.什么情况或者什么时候重试 2.如何重试 3.重试过程中的边界处理 这里引入里三个测试脚本&#xff0c;分别加载里三个不同的脚…

无刷电机槽数相同、转子极数不同的核心区别

一、基础原理差异 无刷电机的核心参数: 槽数(定子槽数,记为 ( Z )):定子铁芯上的绕组槽数量,决定绕组布局。极数(转子磁极数,记为 ( 2p )):转子上的永磁体磁极对数(总极数为 ( 2p ),如 ( p=4 ) 表示 8 极)。核心关系:槽极配合(( Z/2p ))决定电机电磁结构,相同…

6.Rust+Axum:打造高效 WebSocket 实时通信聊天室

摘要 本文详细介绍 RustAxum 在 WebSocket 实时通信开发中的应用&#xff0c;包括双向通信、状态管理等&#xff0c;实践构建聊天室应用。 一、引言 在当今的 Web 应用开发中&#xff0c;实时通信变得越来越重要。WebSocket 作为一种在单个 TCP 连接上进行全双工通信的协议&…

clickhouse数据导出导入

clickhouse数据导出导入 CSV格式导出为csv格式导入为csv格式 JSON格式导出为json格式导入为json格式 SQL格式导出为SQL CSV格式 导出为csv格式 # 不带表头 clickhouse-client -h 127.0.0.1 --database"db" --query"select * from db.test_table FORMAT CSV&qu…

人脸扫描黑科技:多相机人脸扫描设备,打造你的专属数字分身

随着科技的迅猛发展&#xff0c;人脸扫描这个词已经并不陌生&#xff0c;通过人脸扫描设备制作超写实人脸可以为影视制作打造逼真角色、提升游戏沉浸感&#xff0c;还能助力教育机构等领域生产数字人以丰富教学资源&#xff0c;还在安防、身份识别等领域发挥关键作用&#xff0…

学习型组织与系统思考

真正的学习型组织不是只关注个人的学习&#xff0c;而是关注整个系统的学习。—彼得圣吉 在这两年里&#xff0c;越来越多的企业开始询问是否可以将系统思考的内容内化给自己的内训师&#xff0c;进而在公司内部进行教学。我非常理解企业这样做的动机&#xff0c;毕竟内部讲师…

gl-matrix 库简介

gl-matrix 库简介 gl-matrix 是一个高性能的 JavaScript 矩阵和向量库&#xff0c;专门为 WebGL 和其他 3D 图形应用设计。它提供了处理 2D、3D 和 4D 向量以及矩阵运算的高效方法。 主要特性 高性能&#xff1a;经过高度优化&#xff0c;执行速度快轻量级&#xff1a;体积小…

大语言模型的训练、微调及压缩技术

The rock can talk — not interesting. The rock can read — that’s interesting. &#xff08;石头能说话&#xff0c;不稀奇。稀奇的是石头能读懂。&#xff09; ----硅谷知名创业孵化器 YC 的总裁 Gar Tan 目录 1. 什么是大语言模型&#xff1f; 2. 语言建模&#xff…

那些能够直接编译到 WebAssembly 的 Rust Crates

一、为什么有的 Crate “跑不起来”&#xff1f; 在最常见的 浏览器环境 中&#xff0c;Wasm 沙盒本身缺少操作系统功能和标准 C 运行时支持。以下几类依赖若出现在 crate 中&#xff0c;就很可能导致编译或运行时出错&#xff1a; C / 系统库绑定 浏览器环境没有 libc、dlope…

Ext系列⽂件系统

Ext系列⽂件系统 1. 理解硬件1.1 磁盘的物理结构1.2 磁盘的存储结构1.3 磁盘的逻辑结构理解过程实际过程 1.4 CHS&&LBA地址 2. 引入文件系统块分区innode 3. Ext2文件系统3.1 宏观认识3.2 block group3.3 块组内部3.3.1 GDT&#xff08;Group Descriptor Table&#xf…

元宇宙概念兴起,B 端数字孪生迎来哪些新机遇?

在科技飞速发展的当下&#xff0c;元宇宙概念如同一颗璀璨新星&#xff0c;迅速吸引了全球的目光。随着元宇宙的兴起&#xff0c;与之紧密相关的 B 端数字孪生技术也迎来了前所未有的发展机遇。元宇宙与 B 端数字孪生的融合&#xff0c;正悄然改变着多个行业的运作模式&#xf…

从数字化到智能化,百度 SRE 数智免疫系统的演进和实践

1. 为什么 SRE 需要数智免疫系统&#xff1f; 2022 年 10 月&#xff0c;在 Gartner 公布的 2023 年十大战略技术趋势中提到了「数字免疫系统」的概念&#xff0c;旨在通过结合数据驱动的一系列手段来提高系统的弹性和稳定性。 在过去 2 年的时间里&#xff0c;百度基于该…

4月18日复盘

4月18日复盘 一、深度学习概述 ​ 传统机器学习算法依赖人工设计特征、提取特征&#xff0c;而深度学习依赖算法自动提取特征。深度学习模仿人类大脑的运行方式&#xff0c;从大量数据中学习特征&#xff0c;这也是深度学习被看做黑盒子、可解释性差的原因。 ​ 随着算力的提…

C++每日训练 Day 17:构建响应式加载动画与异步数据处理

&#x1f4d8; 本篇目标是&#xff1a;在 GUI 信号机制基础上&#xff0c;构建一个完整的“点击按钮 → 显示加载动画 → 异步加载数据 → 显示结果”的响应式界面流程。通过协程挂起/恢复机制&#xff0c;实现清晰的异步逻辑&#xff0c;避免回调地狱。 &#x1f501; 回顾 Da…

PyTorch深度学习框架60天进阶学习计划 - 第45天:神经架构搜索(二)

PyTorch深度学习框架60天进阶学习计划 - 第45天&#xff1a;神经架构搜索&#xff08;二&#xff09; 第二部分&#xff1a;权重共享策略的计算效率优化 8. 权重共享的理论基础 权重共享策略的理论基础来自于多任务学习(Multi-Task Learning, MTL)和迁移学习(Transfer Learn…