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.pswp.cn/web/76272.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76272.shtml
英文地址,請注明出處:http://en.pswp.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…