序言
做一件事并不難,難的是在于堅(jiān)持。堅(jiān)持一下也不難,難的是堅(jiān)持到底。
文章標(biāo)記顏色說(shuō)明:
- 黃色:重要標(biāo)題
- 紅色:用來(lái)標(biāo)記結(jié)論
- 綠色:用來(lái)標(biāo)記一級(jí)論點(diǎn)
- 藍(lán)色:用來(lái)標(biāo)記二級(jí)論點(diǎn)
Kubernetes (k8s) 是一個(gè)容器編排平臺(tái),允許在容器中運(yùn)行應(yīng)用程序和服務(wù)。今天學(xué)習(xí)一下k8s存儲(chǔ)相關(guān)知識(shí)
希望這篇文章能讓你不僅有一定的收獲,而且可以愉快的學(xué)習(xí),如果有什么建議,都可以留言和我交流
?專(zhuān)欄介紹
這是這篇文章所在的專(zhuān)欄,歡迎訂閱:【深入解析k8s】專(zhuān)欄
簡(jiǎn)單介紹一下這個(gè)專(zhuān)欄要做的事:
- 主要是深入解析每個(gè)知識(shí)點(diǎn),幫助大家完全掌握k8s,以下是已更新的章節(jié)
- 這是專(zhuān)欄介紹文章地址:【深入解析K8S專(zhuān)欄介紹】
今天我們來(lái)看一下K8s 存儲(chǔ)相關(guān)問(wèn)題
- k8s存儲(chǔ)類(lèi)型
- 存儲(chǔ)使用場(chǎng)景
- 存儲(chǔ)使用案例
1 存儲(chǔ)類(lèi)型
Kubernetes 存儲(chǔ)可以分為兩類(lèi):
- 臨時(shí)存儲(chǔ)
- 持久存儲(chǔ)
1.1 臨時(shí)存儲(chǔ)
臨時(shí)存儲(chǔ):通常是短暫的、易失性的存儲(chǔ),例如 Pod 的本地存儲(chǔ)或內(nèi)存存儲(chǔ)。
常見(jiàn)的臨時(shí)存儲(chǔ)有:?
EmptyDir:EmptyDir 是一種在 Pod 中創(chuàng)建的空目錄,它用于在容器之間共享文件。EmptyDir 的數(shù)據(jù)存在于 Pod 所在節(jié)點(diǎn)的本地磁盤(pán)上,當(dāng) Pod 被刪除時(shí),數(shù)據(jù)也會(huì)被刪除。
HostPath:HostPath 卷將主機(jī)節(jié)點(diǎn)上的文件系統(tǒng)路徑掛載到容器中。這種存儲(chǔ)卷通常用于測(cè)試和開(kāi)發(fā)環(huán)境,不適合生產(chǎn)環(huán)境。
1.2 持久存儲(chǔ)
持久存儲(chǔ):是一種長(zhǎng)期存儲(chǔ),用于存儲(chǔ)應(yīng)用程序的數(shù)據(jù)和狀態(tài),例如數(shù)據(jù)庫(kù)或文件系統(tǒng)。
常見(jiàn)的持久存儲(chǔ)有:?
NFS:NFS 卷將網(wǎng)絡(luò)文件系統(tǒng) (NFS) 掛載到容器中。這種存儲(chǔ)卷可以跨多個(gè) Pod 和節(jié)點(diǎn)共享數(shù)據(jù)。
ConfigMap 和 Secret:ConfigMap 和 Secret 卷將配置文件和密鑰掛載到容器中。這種存儲(chǔ)卷可以用于配置 Pod 中的應(yīng)用程序或存儲(chǔ)敏感數(shù)據(jù)。
PersistentVolumeClaim (PVC):PVC 卷是一種抽象層,它將 Kubernetes 集群中的物理存儲(chǔ)資源抽象為邏輯存儲(chǔ)卷。PVC 卷可以動(dòng)態(tài)地分配和釋放存儲(chǔ)資源,并且可以在不同的 Pod 之間共享。
StatefulSet:StatefulSet 卷是一種特殊的 PVC 卷,它可以為有狀態(tài)應(yīng)用程序提供穩(wěn)定的、持久的存儲(chǔ)。StatefulSet 卷會(huì)為每個(gè) Pod 分配唯一的持久卷,并且可以按照順序啟動(dòng)和關(guān)閉 Pod。
除了上述持久存儲(chǔ)選項(xiàng)之外,Kubernetes 還支持動(dòng)態(tài)存儲(chǔ)卷和 CSI 存儲(chǔ)插件。
- 動(dòng)態(tài)存儲(chǔ)卷:是一種自動(dòng)化管理存儲(chǔ)資源的方法,它可以根據(jù)需求動(dòng)態(tài)地創(chuàng)建和刪除存儲(chǔ)卷。
- CSI 存儲(chǔ)插件:是一種標(biāo)準(zhǔn)化的存儲(chǔ)插件接口,它可以與多種不同類(lèi)型的存儲(chǔ)后端集成。
2 使用場(chǎng)景?
在 Kubernetes 中,存儲(chǔ)通常是通過(guò)掛載存儲(chǔ)卷的方式來(lái)實(shí)現(xiàn)的。存儲(chǔ)可以用于許多場(chǎng)景,包括但不限于以下幾個(gè)方面:
- 持久化數(shù)據(jù)
- 分布式存儲(chǔ)
- 數(shù)據(jù)庫(kù)
- 日志和監(jiān)控
- 靜態(tài)資源
- 分布式文件系統(tǒng)
- 鏡像倉(cāng)庫(kù)
- 大數(shù)據(jù)分析
- 云存儲(chǔ)
2.1 持久化數(shù)據(jù)?
在容器化的應(yīng)用程序中,數(shù)據(jù)通常是存儲(chǔ)在容器內(nèi)部的文件系統(tǒng)中。但是,當(dāng)容器被刪除或重新啟動(dòng)時(shí),數(shù)據(jù)也會(huì)被清除。
為了解決這個(gè)問(wèn)題,可以將數(shù)據(jù)存儲(chǔ)在持久存儲(chǔ)卷中,以保證數(shù)據(jù)的持久性。
2.2 分布式存儲(chǔ)?
在分布式系統(tǒng)中,數(shù)據(jù)通常會(huì)被分散存儲(chǔ)在多個(gè)節(jié)點(diǎn)上??梢允褂?Kubernetes 中的分布式存儲(chǔ)來(lái)存儲(chǔ)數(shù)據(jù),并且可以通過(guò)存儲(chǔ)卷的方式將存儲(chǔ)卷掛載到多個(gè)容器中,以便它們可以共享數(shù)據(jù)。
2.3 數(shù)據(jù)庫(kù)?
在容器化應(yīng)用程序中,數(shù)據(jù)庫(kù)通常是存儲(chǔ)在容器內(nèi)部的文件系統(tǒng)中。但是,當(dāng)容器被刪除或重新啟動(dòng)時(shí),數(shù)據(jù)庫(kù)也會(huì)被清除。
解決這個(gè)問(wèn)題,可以將數(shù)據(jù)庫(kù)存儲(chǔ)在持久存儲(chǔ)卷中,以保證數(shù)據(jù)的持久性。
2.4 日志和監(jiān)控?
在容器化應(yīng)用程序中,日志和監(jiān)控?cái)?shù)據(jù)可以被存儲(chǔ)在持久存儲(chǔ)卷中,以便它們可以在容器被刪除或重新啟動(dòng)后繼續(xù)存在。
這可以幫助開(kāi)發(fā)人員和管理員更好地了解應(yīng)用程序的運(yùn)行狀況,并對(duì)其進(jìn)行監(jiān)控和調(diào)試。
2.5 靜態(tài)資源?
在 Web 應(yīng)用程序中,靜態(tài)資源(如圖像、CSS 文件和 JavaScript 文件等)可以被存儲(chǔ)在持久存儲(chǔ)卷中,以便它們可以在容器被刪除或重新啟動(dòng)后繼續(xù)存在。
這可以提高應(yīng)用程序的性能和可靠性。
2.6 分布式文件系統(tǒng)?
在分布式系統(tǒng)中,可以使用分布式文件系統(tǒng)來(lái)存儲(chǔ)和管理數(shù)據(jù)。在 Kubernetes 中,可以使用分布式文件系統(tǒng)來(lái)存儲(chǔ)容器化應(yīng)用程序中的數(shù)據(jù),并將存儲(chǔ)卷掛載到多個(gè)容器中,以便它們可以共享數(shù)據(jù)。
2.7 鏡像倉(cāng)庫(kù)?
在 Kubernetes 中,可以使用鏡像倉(cāng)庫(kù)來(lái)存儲(chǔ)和管理容器鏡像。鏡像倉(cāng)庫(kù)可以幫助開(kāi)發(fā)人員和管理員更好地管理應(yīng)用程序的鏡像,并確保應(yīng)用程序在不同環(huán)境中的鏡像版本的一致性。
2.8 大數(shù)據(jù)分析?
在大數(shù)據(jù)分析中,需要處理大量的數(shù)據(jù)。可以使用 Kubernetes 中的大數(shù)據(jù)存儲(chǔ)來(lái)存儲(chǔ)和管理數(shù)據(jù),并將存儲(chǔ)卷掛載到多個(gè)容器中,以便它們可以共享數(shù)據(jù)。這可以幫助分析師更好地處理和分析數(shù)據(jù)。
2.9 云存儲(chǔ)?
在云環(huán)境中,可以使用云存儲(chǔ)來(lái)存儲(chǔ)和管理數(shù)據(jù)。在 Kubernetes 中,可以使用云存儲(chǔ)來(lái)存儲(chǔ)容器化應(yīng)用程序中的數(shù)據(jù),并將存儲(chǔ)卷掛載到多個(gè)容器中,以便它們可以共享數(shù)據(jù)。
2.10 總結(jié)?
總之,在 Kubernetes 中,存儲(chǔ)具有非常廣泛的應(yīng)用場(chǎng)景??梢愿鶕?jù)實(shí)際需求選擇適合自己的存儲(chǔ)方案,以便更好地管理容器化應(yīng)用程序中的數(shù)據(jù)和資源。
3?使用案例
?介紹一下持久存儲(chǔ)使用案例和臨時(shí)存儲(chǔ)使用案例。
3.1?持久存儲(chǔ)使用詳細(xì)案例介紹
以下是一個(gè)使用持久存儲(chǔ)的詳細(xì)案例介紹:
在這個(gè)案例中,將創(chuàng)建一個(gè)簡(jiǎn)單的 WordPress 應(yīng)用程序,并使用持久存儲(chǔ)來(lái)保存應(yīng)用程序的數(shù)據(jù)。
WordPress 是一個(gè)流行的開(kāi)源博客平臺(tái),它通常需要一個(gè) MySQL 數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)文章、評(píng)論和其他相關(guān)數(shù)據(jù)。
在 Kubernetes 中,可以使用持久存儲(chǔ)來(lái)存儲(chǔ) MySQL 數(shù)據(jù)庫(kù)的數(shù)據(jù),并將其掛載到多個(gè) MySQL 容器中,以便它們可以共享數(shù)據(jù)。這樣,即使 MySQL 容器被刪除或重新啟動(dòng),數(shù)據(jù)也不會(huì)丟失。
下面是在 Kubernetes 中使用持久存儲(chǔ)來(lái)部署 WordPress 應(yīng)用程序的步驟:
- 創(chuàng)建 PersistentVolume
- 創(chuàng)建 PersistentVolumeClaim
- 創(chuàng)建 MySQL Pod
- 創(chuàng)建?WordPress?Pod
- 創(chuàng)建 Service
- 部署應(yīng)用程序
3.1.1 創(chuàng)建 PersistentVolume?
首先,需要創(chuàng)建一個(gè) PersistentVolume(持久卷),用于存儲(chǔ) MySQL 數(shù)據(jù)庫(kù)的數(shù)據(jù)。
可以使用 Kubernetes 中的各種持久化存儲(chǔ)解決方案,例如本地存儲(chǔ)、云存儲(chǔ)或分布式存儲(chǔ)。
在這個(gè)案例中,會(huì)使用本地存儲(chǔ)來(lái)存儲(chǔ) MySQL 數(shù)據(jù)庫(kù)的數(shù)據(jù)??梢酝ㄟ^(guò)創(chuàng)建一個(gè) YAML 文件來(lái)定義 PersistentVolume。
下面是一個(gè)定義本地存儲(chǔ) PersistentVolume 的 YAML 文件示例:
apiVersion: v1 kind: PersistentVolume metadata: name: mysql-pv spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /mnt/data/mysql
這個(gè) YAML 文件定義了一個(gè)名為 mysql-pv 的 PersistentVolume,它使用本地存儲(chǔ)來(lái)存儲(chǔ)數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)在 /mnt/data/mysql 目錄中。
這個(gè) PersistentVolume 的大小為 10GB,訪問(wèn)模式為 ReadWriteOnce(即只能被一個(gè) Pod 掛載),持久化策略為 Retain(即在 PersistentVolume 被刪除時(shí)不會(huì)刪除數(shù)據(jù)),存儲(chǔ)類(lèi)名稱(chēng)為 local-storage。
3.1.2 創(chuàng)建 PersistentVolumeClaim?
完成 PersistentVolume 的創(chuàng)建之后,需要?jiǎng)?chuàng)建一個(gè) PersistentVolumeClaim(持久卷聲明),用于請(qǐng)求 PersistentVolume 中的存儲(chǔ)空間。
可以通過(guò)創(chuàng)建一個(gè) YAML 文件來(lái)定義 PersistentVolumeClaim。
下面是一個(gè)定義 PersistentVolumeClaim 的 YAML 文件示例:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: local-storage
這個(gè) YAML 文件定義了一個(gè)名為 mysql-pvc 的 PersistentVolumeClaim,它請(qǐng)求 10GB 的存儲(chǔ)空間,并使用 storageClassName 屬性來(lái)指定使用的存儲(chǔ)類(lèi)名稱(chēng)。
在這個(gè)示例中,使用的是之前創(chuàng)建的 local-storage 存儲(chǔ)類(lèi)。
3.1.3 創(chuàng)建 MySQL Pod?
完成 PersistentVolumeClaim 的創(chuàng)建之后,可以創(chuàng)建一個(gè) MySQL Pod,并將它與 PersistentVolumeClaim 和 PersistentVolume 關(guān)聯(lián)起來(lái)。
在這個(gè)案例中,會(huì)使用官方的 MySQL 鏡像,并將其掛載到 PersistentVolumeClaim 中。
可以通過(guò)創(chuàng)建一個(gè) YAML 文件來(lái)定義 MySQL Pod。
下面是一個(gè)定義 MySQL Pod 的 YAML 文件示例:
apiVersion: v1 kind: Pod metadata: name: mysql spec: containers: - name: mysql image: mysql:5.7 env: - name: MYSQL_ROOT_PASSWORD value: password ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-pv mountPath: /var/lib/mysql volumes: - name: mysql-pv persistentVolumeClaim: claimName: mysql-pvc
這個(gè) YAML 文件定義了一個(gè)名為 mysql 的 Pod,它使用官方的 MySQL 鏡像,并將其掛載到名為 mysql-pv 的存儲(chǔ)卷上,該存儲(chǔ)卷與名為 mysql-pvc 的 PersistentVolumeClaim 關(guān)聯(lián)。
在容器中,使用 volumeMounts 屬性將 PersistentVolumeClaim 掛載到 /var/lib/mysql 目錄。
3.1.4 創(chuàng)建?WordPress?Pod?
完成?MySQL?Pod 的創(chuàng)建之后,可以創(chuàng)建?WordPress Pod,并將其與?MySQL Pod?關(guān)聯(lián)起來(lái)。
在這個(gè)案例中,會(huì)使用官方的 WordPress 鏡像,并將其掛載到一個(gè)名為 wp-pv 的存儲(chǔ)卷上,該存儲(chǔ)卷與名為 wp-pvc 的?PersistentVolumeClaim?關(guān)聯(lián)。
可以通過(guò)創(chuàng)建一個(gè) YAML 文件來(lái)定義 WordPress Pod。
下面是一個(gè)定義 WordPress Pod 的 YAML 文件示例:
apiVersion: v1 kind: Pod metadata: name: wordpress spec: containers: - name: wordpress image: wordpress:latest env: - name: WORDPRESS_DB_HOST value: mysql - name: WORDPRESS_DB_USER value: root - name: WORDPRESS_DB_PASSWORD value: password - name: WORDPRESS_DB_NAME value: wordpress ports: - containerPort: 80 name: wordpress volumeMounts: - name: wp-pv mountPath: /var/www/html volumes: - name: wp-pv persistentVolumeClaim: claimName: wp-pvc
這個(gè)?YAML?文件定義了一個(gè)名為 wordpress 的 Pod,它使用官方的 WordPress 鏡像,并將其掛載到名為 wp-pv 的存儲(chǔ)卷上,該存儲(chǔ)卷與名為 wp-pvc 的 PersistentVolumeClaim 關(guān)聯(lián)。
在容器中,使用 volumeMounts 屬性將 PersistentVolumeClaim 掛載到 /var/www/html 目錄。
WordPress Pod 還通過(guò)環(huán)境變量設(shè)置了 MySQL 數(shù)據(jù)庫(kù)的主機(jī)、用戶名、密碼和數(shù)據(jù)庫(kù)名稱(chēng)。
3.1.5 創(chuàng)建 Service?
完成 WordPress Pod 的創(chuàng)建之后,需要?jiǎng)?chuàng)建一個(gè) Service,用于將 WordPress Pod 暴露給外部訪問(wèn)。
可以通過(guò)創(chuàng)建一個(gè) YAML 文件來(lái)定義 Service。
下面是一個(gè)定義 Service 的 YAML 文件示例:
apiVersion: v1 kind: Service metadata: name: wordpress-service spec: selector: app: wordpress ports: - protocol: TCP port: 80 targetPort: 80 type: NodePort
這個(gè) YAML 文件定義了一個(gè)名為 wordpress-service 的 Service,它選擇 app 標(biāo)簽為 wordpress 的 Pod,并將其暴露在端口 80 上。
在這個(gè)示例中,Service 的類(lèi)型為?NodePort,這意味著它將在每個(gè)節(jié)點(diǎn)上暴露一個(gè)隨機(jī)端口,用于外部訪問(wèn)。
3.1.6 部署應(yīng)用程序?
完成以上步驟之后,可以使用 kubectl 命令來(lái)部署 WordPress 應(yīng)用程序。
以下是部署 WordPress 應(yīng)用程序的 kubectl 命令:
kubectl apply -f mysql-pv.yaml kubectl apply -f mysql-pvc.yaml kubectl apply -f mysql-pod.yaml kubectl apply -f wp-pvc.yaml kubectl apply -f wp-pod.yaml kubectl apply -f wp-service.yaml
這些命令將按照順序:
1. 創(chuàng)建 PersistentVolume
kubectl apply -f mysql-pv.yaml
2. 創(chuàng)建PersistentVolumeClaim
kubectl apply -f mysql-pvc.yaml
3. 創(chuàng)建MySQL Pod
kubectl apply -f mysql-pod.yaml
4. 創(chuàng)建WordPress PersistentVolumeClaim
kubectl apply -f wp-pvc.yaml
5. 創(chuàng)建WordPress Pod
kubectl apply -f wp-pod.yaml
6. 創(chuàng)建Service
kubectl apply -f wp-service.yaml
完成部署之后,可以在瀏覽器中訪問(wèn) WordPress 應(yīng)用程序,以確保它可以正常工作。如果需要對(duì)應(yīng)用程序進(jìn)行修改或升級(jí),可以重復(fù)這些步驟,并使用新的 YAML 文件來(lái)定義新的 Pod、PersistentVolumeClaim 和 Service。
3.2?臨時(shí)存儲(chǔ)使用詳細(xì)案例介紹
以下是一個(gè)使用臨時(shí)存儲(chǔ)的詳細(xì)案例介紹:
在這個(gè)案例中,將創(chuàng)建一個(gè)簡(jiǎn)單的 Redis 應(yīng)用程序,并使用臨時(shí)存儲(chǔ)來(lái)保存應(yīng)用程序的數(shù)據(jù)。
Redis 是一個(gè)流行的開(kāi)源內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),它通常需要一個(gè)本地磁盤(pán)來(lái)保存持久化數(shù)據(jù)。
在 Kubernetes 中,可以使用臨時(shí)存儲(chǔ)來(lái)保存 Redis 數(shù)據(jù)庫(kù)的持久化數(shù)據(jù)??梢詫⑴R時(shí)存儲(chǔ)掛載到 Redis Pod 中,并在 Redis Pod 中啟用持久化功能。
這樣,即使 Redis Pod 被刪除或重新啟動(dòng),數(shù)據(jù)也不會(huì)丟失。
下面是在 Kubernetes 中使用臨時(shí)存儲(chǔ)來(lái)部署 Redis 應(yīng)用程序的步驟:
- 創(chuàng)建?Redis?Pod
- 創(chuàng)建 Service
- 部署應(yīng)用程序
3.2.1 創(chuàng)建?Redis?Pod?
首先,需要?jiǎng)?chuàng)建一個(gè)?Redis Pod,并將臨時(shí)存儲(chǔ)掛載到 Redis Pod 中。可以通過(guò)創(chuàng)建一個(gè) YAML 文件來(lái)定義 Redis Pod。
下面是一個(gè)定義 Redis Pod 的 YAML 文件示例:
apiVersion: v1 kind: Pod metadata: name: redis spec: containers: - name: redis image: redis:6.0 command: - redis-server args: - "--appendonly yes" ports: - containerPort: 6379 name: redis volumeMounts: - name: redis-data mountPath: /data volumes: - name: redis-data emptyDir: {}
這個(gè) YAML 文件定義了一個(gè)名為 redis 的 Pod,它使用官方的 Redis 鏡像,并將其掛載到一個(gè)名為 redis-data 的臨時(shí)存儲(chǔ)卷上。
在容器中,使用 volumeMounts 屬性將臨時(shí)存儲(chǔ)卷掛載到 /data 目錄。
這個(gè) Redis Pod 還啟用了 Redis 的持久化功能,通過(guò) args 屬性將 "--appendonly yes" 傳遞給 Redis 服務(wù)器。
3.2.2 創(chuàng)建 Service?
完成 Redis Pod 的創(chuàng)建之后,需要?jiǎng)?chuàng)建一個(gè) Service,用于將 Redis Pod 暴露給外部訪問(wèn)??梢酝ㄟ^(guò)創(chuàng)建一個(gè)?YAML?文件來(lái)定義 Service。
下面是一個(gè)定義 Service 的 YAML 文件示例:
apiVersion: v1 kind: Service metadata: name: redis-service spec: selector: app: redis ports: - protocol: TCP port: 6379 targetPort: 6379
這個(gè) YAML 文件定義了一個(gè)名為 redis-service 的 Service,它選擇 app 標(biāo)簽為 redis 的 Pod,并將其暴露在端口 6379 上。
3.2.3 部署應(yīng)用程序?
完成以上步驟之后,可以使用 kubectl 命令來(lái)部署 Redis 應(yīng)用程序。例如,以下是一個(gè)部署 Redis 應(yīng)用程序的 kubectl 命令:
kubectl apply -f redis-pod.yaml kubectl apply -f redis-service.yaml
這些命令將按照順序創(chuàng)建
1.創(chuàng)建Redis Pod
kubectl apply -f redis-pod.yaml
2.創(chuàng)建Service文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-500710.html
kubectl apply -f redis-service.yaml
完成部署之后,可以使用 Redis 客戶端連接到 Redis Pod,并將數(shù)據(jù)存儲(chǔ)在 Redis 中。如果需要對(duì)應(yīng)用程序進(jìn)行修改或升級(jí),可以重復(fù)這些步驟,并使用新的 YAML 文件來(lái)定義新的 Pod 和 Service。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-500710.html
4 投票
到了這里,關(guān)于【K8S系列】深入解析K8S存儲(chǔ)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!