K8S-Configmap資源

目錄

一、核心概念?

?定義?

?核心價值?

?與Secret的區別?

?二、核心特性?

?數據存儲?

?生命周期?

?作用域?

什么是 Configmap?

Configmap 能解決哪些問題?

ConfigMap 的主要作用

三、命令行直接創建

四、通過文件創建(常用)

把 configmap 做成 volume,掛載到 pod(常用)

五、指定目錄創建 configmap(常用)

六、使用 Configmap

通過環境變量引入

通過環境變量引入


一、核心概念?

  1. ?定義?
    • Kubernetes 資源對象,用于存儲非敏感配置數據?(鍵值對形式)。
    • 核心目標:將配置與容器鏡像解耦,實現“一次構建,多處部署”。
  2. ?核心價值?
    • ?集中管理?:所有配置統一存儲在集群中,避免散落在各Pod/容器。
    • ?動態更新?:修改ConfigMap后,部分場景可無需重啟Pod生效。
    • ?環境隔離?:不同環境(開發/測試/生產)使用不同ConfigMap。
  3. ?與Secret的區別?
    特性ConfigMapSecret
    ?數據類型?明文(鍵值對)加密(Base64編碼,非絕對安全)
    ?典型用途?配置文件、環境變量、參數密碼、TLS證書、Token
    ?訪問控制?無額外加密(依賴RBAC)建議配合加密存儲(如kube-apiserver加密插件)

?二、核心特性?

  1. ?數據存儲?
    • 存儲格式:鍵值對(key: value),支持多行文本(如配置文件)。
    • 大小限制:單個ConfigMap最大 ?1MB?(K8S默認限制,可調整)。
  2. ?生命周期?
    • 隨命名空間存在,?Pod重建時重新掛載?(若Pod使用ConfigMap卷掛載)。
    • 修改ConfigMap后,已運行的Pod需手動重啟或通過工具(如Reloader)觸發更新。
  3. ?作用域?
    • 命名空間級別(與Pod同命名空間才能訪問)。

什么是 Configmap?

它就是配置文件掛載,就是資源主要是做配置文件掛載的

Configmap 是 k8s 中的資源對象,用于保存非機密性的配置的,數據可以用 key/value 鍵值對的形式保存,也可通過文件的形式保存

Configmap 能解決哪些問題?

就是將容器內部的應用和外部的配置進行解耦

緊密聯系的叫偶合

可以進行拆解的叫解耦

ConfigMap 的主要作用

就是為了讓鏡像和配置文件解耦,以便實現鏡像的可移植性和可復用性。

三、命令行直接創建

直接在命令行中指定 configmap 參數創建,通過--from-literal 指定參數

[root@k8s-master ~]# kubectl  create  configmap  file.txt --from-literal k1=v1 --from-literal k2=v2
configmap/file.txt created
[root@k8s-master ~]# kubectl  get cm
NAME               DATA   AGE
file.txt           2      13s
kube-root-ca.crt   1      6d22h
[root@k8s-master ~]# kubectl describe cm file.txt
Name:         file.txt
Namespace:    default
Labels:       <none>
Annotations:  <none>Data
====
k1:
----
v1
k2:
----
v2BinaryData
====Events:  <none>

四、通過文件創建(常用)

把 configmap 做成 volume,掛載到 pod(常用)

通過指定文件創建一個 configmap,--from-file=<文件>,若沒有定義key,則使用文件名作為key,文件內容作為value。

當通過指定文件創建configmap,要先將服務的配置文件修改,先創建configmap再創建pod

[root@k8s-master ~]# vim nginx-pod.yaml 
apiVersion: v1
kind: Pod
metadata:name: pod-test1labels:app: nginx129
spec:containers:- name: nginx129ports:- containerPort: 80image: nginx:latestimagePullPolicy: IfNotPresent

[root@k8s-master ~]# kubectl apply -f nginx-pod.yaml 
pod/pod-test1 created
[root@k8s-master ~]# kubectl get po
NAME                    READY   STATUS    RESTARTS       AGE
nginx-89f8c6894-jdx6b   1/1     Running   1 (4h5m ago)   5d2h
pod-controller-7nlxv    1/1     Running   1 (4h5m ago)   4d14h
pod-controller-zn82f    1/1     Running   1 (14h ago)    4d14h
pod-test1               1/1     Running   0              6s

#將pod容器里的配置文件拷貝出來
[root@k8s-master ~]# kubectl cp pod-test1:/etc/nginx/conf.d/default.conf ./default.conf
tar: Removing leading `/' from member names
[root@k8s-master ~]# ls
default.conf   	
#把監聽端口號改為81
[root@k8s-master ~]# vim default.conf 
server {listen       81;listen  [::]:80;server_name  localhost;[root@k8s-master ~]# vim svc.yaml 
apiVersion: v1
kind: Service
metadata:name: svc-test
spec:type: NodePortports:- targetPort: 81  #要與配置文件里的監聽端口號一致port: 808selector:app: nginx129   #這個名要和pod文件里標簽名一樣

[root@k8s-master ~]# vim nginx-pod.yaml 
#把容器內端口號改為81
apiVersion: v1
kind: Pod
metadata:name: pod-test1labels:app: nginx129
spec:containers:- name: nginx129ports:- containerPort: 81   #修改default.conf 文件里server 監聽端口號一致image: nginx:latestimagePullPolicy: IfNotPresent
#添加下面的volumeMounts:    #這個是容器內部的掛載- name: nginx-config     #這個名要和下面名相同mountPath: /etc/nginx/conf.d/volumes:    #這個是外部掛載- name: nginx-config   #這個名要和上面名相同configMap:name: nginx-cm   #這個是自定義configmap的名稱

#從文件中加載配置進行掛載
[root@k8s-master ~]# kubectl create cm nginx-cm --from-file default.conf=./default.conf
configmap/nginx-cm created
#查看詳細信息
#確認configmap是創建號了的
[root@k8s-master ~]# kubectl describe cm nginx-cm 
Name:         nginx-cm
Namespace:    default
Labels:       <none>
Annotations:  <none>Data   #數據
====
default.conf:
----
server {listen       81;listen  [::]:80;server_name  localhost;........#刪除之前的創的pod容器
[root@k8s-master ~]# kubectl get po
NAME                    READY   STATUS    RESTARTS        AGE
nginx-89f8c6894-jdx6b   1/1     Running   1 (4h28m ago)   5d3h
pod-controller-7nlxv    1/1     Running   1 (4h28m ago)   4d14h
pod-controller-zn82f    1/1     Running   1 (14h ago)     4d14h
pod-test1               1/1     Running   0               22m
[root@k8s-master ~]# kubectl delete pod pod-test1 
pod "pod-test1" deleted#在configmap創建好之后,創建pod
[root@k8s-master ~]# kubectl apply -f nginx-pod.yaml 
pod/pod-test1 created
#查看pod詳細信息,文件掛載成功
[root@k8s-master ~]# kubectl describe pod pod-test1 
Name:             pod-test1
Namespace:        default
Priority:         0
Service Account:  default
Node:             k8s-node1/192.168.158.34
Start Time:       Mon, 18 Aug 2025 20:24:29 +0800
Labels:           app=nginx129
Annotations:      cni.projectcalico.org/containerID: 70a867289da8c969ed5b8611a8169f7bb6693512fec19993739cec187270ed54cni.projectcalico.org/podIP: 10.244.36.101/32cni.projectcalico.org/podIPs: 10.244.36.101/32
Status:           Running
IP:               10.244.36.101
IPs:IP:  10.244.36.101
Containers:nginx129:   #容器名Container ID:   docker://8a056c4707d85671e6953ec09d4a0639de6f336cc4d9c3dc0df9eee4a3f32e9fImage:          nginx:latestImage ID:       docker-pullable://nginx@sha256:33e0bbc7ca9ecf108140af6288c7c9d1ecc77548cbfd3952fd8466a75edefe57Port:           81/TCP    #端口號Host Port:      0/TCPState:          RunningStarted:      Mon, 18 Aug 2025 20:24:29 +0800Ready:          TrueRestart Count:  0Environment:    <none>Mounts:   #掛載路徑/etc/nginx/conf.d/ from nginx-config (rw)   #成功掛載/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-88695 (ro)
Conditions:Type              StatusInitialized       True Ready             True ContainersReady   True PodScheduled      True 
Volumes:nginx-config:Type:      ConfigMap (a volume populated by a ConfigMap)Name:      nginx-cm    #configmap名稱Optional:  falsekube-api-access-88695:Type:                    Projected (a volume that contains injected data from multiple sources)TokenExpirationSeconds:  3607ConfigMapName:           kube-root-ca.crtConfigMapOptional:       <nil>DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300snode.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:Type    Reason     Age   From               Message----    ------     ----  ----               -------Normal  Scheduled  14s   default-scheduler  Successfully assigned default/pod-test1 to k8s-node1Normal  Pulled     14s   kubelet            Container image "nginx:latest" already present on machineNormal  Created    14s   kubelet            Created container nginx129Normal  Started    14s   kubelet            Started container nginx129
[root@k8s-master ~]# #查看服務端口,外部訪問端口號為31807
[root@k8s-master ~]# kubectl get service
svc-test              NodePort       10.110.238.126   <none>            808:31807/TCP   31m
#現在我們可以進行頁面訪問,可以正常訪問到內部容器nginx服務

五、指定目錄創建 configmap(常用)

這個是基于文件創建cm

[root@k8s-master ~]# mkdir nginx-test
[root@k8s-master ~]# lsnginx-test[root@k8s-master ~]# cd nginx-test/
[root@k8s-master nginx-test]# ls
[root@k8s-master nginx-test]# echo server_id=1 > nginx1.cnf
[root@k8s-master nginx-test]# echo server_id=2 > nginx2.cnf
[root@k8s-master nginx-test]# ls
nginx1.cnf  nginx2.cnf
[root@k8s-master nginx-test]# cd #創建configmap
[root@k8s-master ~]# kubectl create configmap nginx-cnf --from-file /root/nginx-test/
configmap/nginx-cnf created#查看 configmap 詳細信息
[root@k8s-master ~]# kubectl describe cm nginx-cnf
Name:         nginx-cnf
Namespace:    default
Labels:       <none>
Annotations:  <none>Data
====
nginx1.cnf:
----
server_id=1nginx2.cnf:
----
server_id=2BinaryData
====Events:  <none>
[root@k8s-master ~]# kubectl get cm nginx-cnf -o yaml
apiVersion: v1
data:nginx1.cnf: |server_id=1nginx2.cnf: |server_id=2
kind: ConfigMap
metadata:creationTimestamp: "2025-08-18T13:49:36Z"name: nginx-cnfnamespace: defaultresourceVersion: "818058"uid: 40fce74a-1e53-445e-9126-d01c66166e34

六、使用 Configmap

通過環境變量引入

使用 configMapKeyRef變量

環境變量引入,比如mysql不需要指定密碼進去之后才行,現在我可以直接在文件中使用環境變量引入就行

好處就是,刪除很方便。解耦

#創建一個存儲 mysql 配置的 configmap
[root@k8s-master ~]# vim env-cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: mysqllabels:app: mysql
data:log: "1"lower: "1"#更新資源清單文件  
[root@k8s-master ~]# kubectl apply -f env-cm.yaml 
configmap/mysql created
#創建configmap成功
[root@k8s-master ~]# kubectl get cm
NAME               DATA   AGE
kube-root-ca.crt   1      7d1h
mysql              2      82s#創建 pod,引用 Configmap 中的內容
[root@k8s-master ~]# vim env-pod.yaml 
apiVersion: v1
kind: Pod
metadata:name: mysql-pod
spec:containers:- name: mysqlimage: busyboximagePullPolicy: IfNotPresentcommand: [ "/bin/sh", "-c", "sleep 3600" ]env:- name: log_bin #定義環境變量 log_binvalueFrom:configMapKeyRef:name: mysql #指定 configmap 的名字key: log #指定 configmap 中的 key- name: lower #定義環境變量 lowervalueFrom:configMapKeyRef:name: mysqlkey: lowerrestartPolicy: Never#更新資源清單文件
[root@k8s-master ~]# kubectl apply -f env-pod.yaml 
pod/mysql-pod created#創建pod成功
[root@k8s-master ~]# kubectl get pod
NAME                    READY   STATUS    RESTARTS       AGE
mysql-pod               1/1     Running   0              8s[root@k8s-master ~]# kubectl exec -it mysql-pod -- /bin/sh
/ # env
log_bin=1
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_SERVICE_PORT=443
HOSTNAME=mysql-pod
SVC_TEST_PORT_808_TCP_ADDR=10.110.238.126
SHLVL=1
HOME=/root
SVC_TEST_PORT_808_TCP_PORT=808
SVC_TEST_PORT_808_TCP_PROTO=tcp
NGINX_SVC_NODEPORT_SERVICE_HOST=10.105.189.102
SVC_TEST_SERVICE_HOST=10.110.238.126
SVC_TEST_PORT_808_TCP=tcp://10.110.238.126:808
TERM=xterm
lower=1
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
SVC_TEST_SERVICE_PORT=808
NGINX_SVC_NODEPORT_PORT=tcp://10.105.189.102:80
SVC_TEST_PORT=tcp://10.110.238.126:808
NGINX_SVC_NODEPORT_SERVICE_PORT=80
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
NGINX_SVC_NODEPORT_PORT_80_TCP_ADDR=10.105.189.102
NGINX_SVC_NODEPORT_PORT_80_TCP_PORT=80
NGINX_SVC_NODEPORT_PORT_80_TCP_PROTO=tcp
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_SERVICE_HOST=10.96.0.1
PWD=/
NGINX_SVC_NODEPORT_PORT_80_TCP=tcp://10.105.189.102:80
/ # exit

通過環境變量引入

#使用 envfrom變量

通過

#使用 envfrom變量 #直接引入之前創建configmap里的變量 data: log: "1" lower: "1"

 #下面使用 envfrom變量#先創建
[root@k8s-master ~]# vim envfrom-pod.yaml
apiVersion: v1
kind: Pod
metadata:name: mysql-pod-envfrom
spec:containers:- name: mysqlimage: busybox:1.28imagePullPolicy: IfNotPresentcommand: [ "/bin/sh", "-c", "sleep 3600" ]envFrom:- configMapRef:name: mysql  #指定configmap的名字restartPolicy: Never#更新資源清單文件[root@k8s-master ~]# kubectl apply -f envfrom-pod.yaml 
pod/mysql-pod-envfrom created#查看pod資源,mysql-pod-envfrom 創建好了
[root@k8s-master ~]# kubectl get pod
NAME                    READY   STATUS    RESTARTS        AGE
mysql-pod               1/1     Running   0               13m
mysql-pod-envfrom       1/1     Running   0               9s[root@k8s-master ~]# kubectl exec -it mysql-pod-envfrom -c mysql -- /bin/sh
/ # env
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_SERVICE_PORT=443
HOSTNAME=mysql-pod-envfrom
SVC_TEST_PORT_808_TCP_ADDR=10.110.238.126
SHLVL=1
HOME=/root
SVC_TEST_PORT_808_TCP_PORT=808
SVC_TEST_PORT_808_TCP_PROTO=tcp
NGINX_SVC_NODEPORT_SERVICE_HOST=10.105.189.102
SVC_TEST_SERVICE_HOST=10.110.238.126
SVC_TEST_PORT_808_TCP=tcp://10.110.238.126:808
TERM=xterm
lower=1      ####
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
SVC_TEST_SERVICE_PORT=808
SVC_TEST_PORT=tcp://10.110.238.126:808
NGINX_SVC_NODEPORT_PORT=tcp://10.105.189.102:80
NGINX_SVC_NODEPORT_SERVICE_PORT=80
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
log=1        ####
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
NGINX_SVC_NODEPORT_PORT_80_TCP_ADDR=10.105.189.102
NGINX_SVC_NODEPORT_PORT_80_TCP_PORT=80
NGINX_SVC_NODEPORT_PORT_80_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_HOST=10.96.0.1
PWD=/
NGINX_SVC_NODEPORT_PORT_80_TCP=tcp://10.105.189.102:80
/ # exit

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93701.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93701.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93701.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL InnoDB事務acid特性的原理和隔離級別的實現原理

InnoDB存儲引擎 InnoDB存儲結構表空間 則每張表都會有一個表空間&#xff08;xxx.ibd&#xff09;&#xff0c;一個mysql實例可以對應多個表空間 系統表空間 存儲數據字典&#xff08;表結構定義、索引信息等&#xff09;、Change Buffer、Doublewrite Bufferundo log&#xff…

Linux系統之部署nullboard任務管理工具

Linux系統之部署nullboard任務管理工具一、nullboard介紹1.1 nullboard簡介1.2 任務看板工具介紹1.3 nullboard使用場景二、本次實踐介紹2.1 本地環境規劃2.2 本次實踐介紹三、安裝httpd軟件3.1 檢查yum倉庫3.2 安裝httpd軟件3.3 啟動httpd服務3.4 查看httpd服務狀態3.5 防火墻…

Qt設置軟件使用期限【新版防修改系統時間】

在工業軟件或其他領域中&#xff0c;經常會對軟件進行授權&#xff0c;軟件需要付費進行有期限的使用。以下是我用Qt設計的設置軟件使用期限的兩種方案。 主體思想&#xff1a; 1.軟件需要綁定機器&#xff0c;讓用戶無法通過復制在另一臺機器上運行。 2.由廠家提供激活碼供用戶…

【JavaEE】多線程(線程安全問題)

有些代碼在單個線程環境下執行正確&#xff0c;如果同樣的代碼在多個線程下同時執行可能就會出現問題&#xff0c;這個就是線程安全問題&#xff08;或者稱線程不安全問題&#xff09;&#xff0c;簡而言之就是&#xff1a;線程安全問題是由于多線程出現的問題&#xff0c;原因…

NodeJs 桌面開發學習 electron.js (一)

今天開始學習NodeJs 關于 桌面應用的內容&#xff0c;長期目標是 React electron 實現一個桌面應用。今天先實現一個簡單的目標&#xff0c;搭建一個Electron ts 項目架構&#xff0c;并實現主業務線程 和前端渲染線程的交互一、代碼結構和配置例子項目結構大致如下&#xff…

diffusion model(1.4) 相關論文閱讀清單

以下是閱讀清單&#xff1a; 《Deep Unsupervised Learning using Nonequilibrium Thermodynamics》擴散模型&#xff0c;arxiv鏈接《Denoising Diffusion Probabilistic Models》DDPM論文 arxiv鏈接

ESP32-C3_SMARTCAR

前言: 前面用stm32f103c8t6 rt-thread 寫了個智能小車程序 這章用esp32-c3 重新來遍 1&#xff1a;環境 vscodeidf5.4 esp32-3c 找到一塊MIN的底板 湊合用&#xff08;138 cm左右&#xff09; 一個L298N 一個船型開關&#xff0c; 一個665mm 2腳按鈕 鋰電池 186502 及電池盒&a…

消費者API

目錄獨立消費者案例&#xff08;訂閱主題&#xff09;獨立消費者案例&#xff08;訂閱分區&#xff09;消費者組案例獨立消費者案例&#xff08;訂閱主題&#xff09; package com.tsg.kafka.consumer;import org.apache.kafka.clients.consumer.ConsumerConfig; import org.ap…

C# NX二次開發:操作按鈕控件Button和標簽控件Label詳解

大家好&#xff0c;今天介紹ug二次開發過程中的一個叫操作按鈕的控件&#xff0c;這個控件在塊UI編輯器中可以使用。 ? Button這個控件的屬性和方法如下所示&#xff1a; namespace NXOpen.BlockStyler { public class Label : UIBlock { protected intern…

Vue.prototype 的作用

在 Vue.js 中&#xff0c;Vue.prototype 是用來向所有 Vue 實例添加屬性或方法的機制。通過它添加的屬性或方法可以在所有 Vue 組件實例中通過 this 訪問。主要作用添加全局方法或屬性&#xff1a;可以在所有組件中使用的工具方法或常量擴展 Vue 功能&#xff1a;添加 Vue 本身…

Javaee 多線程 --進程和線程之間的區別和聯系

文章目錄進程和線程進程線程進程和線程的區別創建線程的五種寫法繼承Thread,重寫run實現Runnable(接口)&#xff0c;重寫run繼承Thread,重寫run,但是使用匿名內部類實現Runnable(接口)&#xff0c;重寫run&#xff0c;但是使用匿名內部類使用lambda表達式請說明Thread類中run和…

企業如何讓內部視頻僅限指定域名播放,確保視頻不被泄露?

在數字化辦公時代&#xff0c;企業內部的培訓視頻、產品演示或機密會議錄像等敏感內容&#xff0c;一旦被非法傳播或泄露&#xff0c;可能帶來嚴重的商業風險。如何確保這些視頻只能在公司官網或指定域名播放&#xff0c;防止被惡意下載、盜鏈或二次傳播&#xff1f;今天介紹一…

端口映射原理操作詳解教程:實現外網訪問內網服務,本地路由器端口映射公網ip和軟件端口映射域名2種方法

端口映射作為一種不同網絡間通信的關鍵網絡技術&#xff0c;在遠程訪問和內外網連接服務需求日益增長的如今&#xff0c;理解端口映射的原理和設置方法是確保網絡服務可用性的必要技能。本文將深入探討端口映射的基本概念、路由器端口映射設置步驟以及無公網IP用端口映射軟件映…

【PyTorch】多對象分割項目

對象分割任務的目標是找到圖像中目標對象的邊界。實際應用例如自動駕駛汽車和醫學成像分析。這里將使用PyTorch開發一個深度學習模型來完成多對象分割任務。多對象分割的主要目標是自動勾勒出圖像中多個目標對象的邊界。 對象的邊界通常由與圖像大小相同的分割掩碼定義&#xf…

SSH 使用密鑰登錄服務器

用這種方法遠程登陸服務器的時候無需手動輸入密碼 具體步驟 客戶端通過 ssh-keygen 生成公鑰和私鑰 ssh-keygen -t rsa 生成的時候會有一系列問題&#xff0c;根據自己的需要選擇就行。生成的結果為兩個文件&#xff1a; 上傳公鑰至服務器&#xff0c;上述兩個文件一般在客戶…

MySQL 8.4 企業版啟用TDE功能和表加密

一、系統環境操作系統&#xff1a;Ubuntu 24.04 數據庫:8.4.4-commercial for Linux on x86_64 (MySQL Enterprise Server - Commercial)二、安裝TDE組件前提&#xff1a;檢查組件文件是否存在ls /usr/lib/mysql/plugin/component_keyring_encrypted_file.so1.配置全局清單文件…

【Altium designer】導出的原理圖PDF亂碼異常的解決方法

一、有些電源名字無法顯示或器件丟失 解決辦法 (1)首先AD18以及以上的新版本AD不存在該問題。 (2)其次AD17以及更舊版本的AD很可能遇到該問題,參考如下博客筆記進行操作即可: 大致的操作如下:DXP → Preferences → Schematic → Options里面“Render Text with GDI+”…

4.Ansible自動化之-部署文件到主機

4 - 部署文件到受管主機 實驗環境 先通過以下命令搭建基礎環境&#xff08;創建工作目錄、配置 Ansible 環境和主機清單&#xff09;&#xff1a; # 在控制節點&#xff08;controller&#xff09;上創建web目錄并進入&#xff0c;作為工作目錄 [bqcontroller ~]$ mkdir web &a…

Vuex的使用

Vuex 超詳細使用教程&#xff08;從入門到精通&#xff09;一、Vuex 是什么&#xff1f;Vuex 是專門為 Vue.js 設計的狀態管理庫&#xff0c;它采用集中式存儲管理應用的所有組件的狀態。簡單來說&#xff0c;Vuex 就是一個"全局變量倉庫"&#xff0c;所有組件都可以…

pytorch 數據預處理,加載,訓練,可視化流程

流程定義自定義數據集類定義訓練和驗證的數據增強定義模型、損失函數和優化器訓練循環&#xff0c;包括驗證訓練可視化整個流程模型評估高級功能擴展混合精度訓練?分布式訓練?{:width“50%” height“50%”} 定義自定義數據集類 # #1. 自定義數據集類 # class CustomImageD…