国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

K8s卷存儲詳解(一)

這篇具有很好參考價值的文章主要介紹了K8s卷存儲詳解(一)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

K8s 存儲

什么是卷?為什么要用卷?

我們知道K8s是基于容器,對各個Pod進行管理的。Pod是由容器構(gòu)成的,我也知道,容器(如Docker)有個特點就是,容器刪除后,在容器中產(chǎn)生的數(shù)據(jù)也會隨之銷毀。K8s會監(jiān)控容器的運行狀態(tài),當有容器崩潰或停止時,K8s的Controller會刪除這些容器,并重新創(chuàng)建新的容器。如果容器被銷毀,此時容器狀態(tài)未保存, 因此在容器生命周期內(nèi)創(chuàng)建或修改的所有文件都將丟失。在崩潰期間,kubelet 會以干凈的狀態(tài)重新啟動容器。

另外一個需求就是:當多個容器在一個 Pod 中運行并且需要共享文件時, 就需要跨所有容器設(shè)置和訪問共享文件系統(tǒng)。

K8s卷分類

根據(jù)應(yīng)用場景不同,和需求不同,將卷分為不同的種類

  • 臨時卷

  • 持久卷

  • 投射卷

卷的相關(guān)參數(shù)

  • 卷類型

  • 卷掛載位置

卷掛載位置

卷掛載在鏡像中的指定路徑下。 Pod 配置中的每個容器必須獨立指定各個卷的掛載位置。

注意:卷不能掛載到其他卷之上(不過存在一種使用 subPath 的相關(guān)機制),也不能與其他卷有硬鏈接。

K8s目前支持的卷類型

已啟用的卷類型

  1. awsElasticBlockStore (已棄用)
  2. azureDisk (已棄用)
  3. cinder (已棄用)
  4. gcePersistentDisk(已棄用)
  5. gcePersistentDisk(已棄用)
  6. gitRepo (已棄用)
  7. glusterfs(已移除)
  8. portworxVolume(已棄用)
  9. vsphereVolume(已棄用)
  10. flexVolume(已棄用)

可以使用的卷類型

  1. cephfs
  2. configMap
  3. downwardAPI
  4. emptyDir
  5. fc (光纖通道)
  6. hostPath
  7. iscsi
  8. local
  9. nfs
  10. persistentVolumeClaim
  11. subPath
  12. 樹外(Out-of-Tree)卷插件

常用的數(shù)據(jù)卷(Volume)有:

  • 本地:如,HostPath、EmptyDir;
  • 網(wǎng)絡(luò):如,NFS、Ceph、GlusterFS;
  • 公有云:如,AWS EBS;
  • K8s資源:如,Configmap、Secret。

臨時卷

什么是臨時卷?

臨時卷的生命周期與 Pod 的生命周期相同,與 Pod 一起創(chuàng)建和刪除,當 Pod 不再存在時,Kubernetes 也會銷毀臨時卷。 所以停止和重新啟動 Pod 時,不會受持久卷在何處可用的限制。

應(yīng)用場景1:有些應(yīng)用程序需要額外的存儲,但并不關(guān)心數(shù)據(jù)在重啟后是否仍然可用。

示例:緩存服務(wù)經(jīng)常受限于內(nèi)存大小,而且可以將不常用的數(shù)據(jù)轉(zhuǎn)移到比內(nèi)存慢的存儲中,對總體性能的影響并不大。

應(yīng)用場景2:些應(yīng)用程序需要以文件形式注入的只讀數(shù)據(jù)

示例:比如配置數(shù)據(jù)或密鑰。

臨時卷類型

根據(jù)不同的用途,支持幾種不同類型的臨時卷

  • EmptyDir: Pod 啟動時為空,存儲空間來自本地的 kubelet 根目錄(通常是根磁盤)或內(nèi)存
  • 見投射卷:ConfigMap、 DownwardAPI、 Secret: 將不同類型的 Kubernetes 數(shù)據(jù)注入到 Pod 中
  • CSI 臨時卷: 類似于前面的卷類型,但由專門支持此特性 的指定 CSI 驅(qū)動程序提供
  • 通用臨時卷: 它可以由所有支持持久卷的存儲驅(qū)動程序提供

emptyDir、configMap、downwardAPIsecret 是作為 本地臨時存儲 提供的。它們由各個節(jié)點上的 kubelet 管理。

"本地"意味著存儲介質(zhì)不能是網(wǎng)絡(luò)上的。

K8s卷存儲詳解(一),kubernetes,容器,云原生

EmptyDir

EmptyDir是在當 Pod 分派到某個Node節(jié)點上時創(chuàng)建的,它的初始內(nèi)容為空,k8s自動分配一個目錄,而無需指定宿主機上對應(yīng)的目錄文件。當Pod銷毀時, EmptyDir中的數(shù)據(jù)也會被永久刪除。

無論Pod 中的容器掛載 emptyDir 卷的路徑是否相同,這些容器都可以讀寫 emptyDir 卷中相同的文件。

說明:容器崩潰并會導(dǎo)致 Pod 被從節(jié)點上移除,因此容器崩潰期間 emptyDir 卷中的數(shù)據(jù)是安全的

emptyDir 的一些用途:

  • 緩存空間,例如基于磁盤的歸并排序。
  • 為耗時較長的計算任務(wù)提供檢查點,以便任務(wù)能方便地從崩潰前狀態(tài)恢復(fù)執(zhí)行。
  • 在 Web 服務(wù)器容器服務(wù)數(shù)據(jù)時,保存內(nèi)容管理器容器獲取的文件。

設(shè)置卷掛載位置:

使用emptyDir.medium 字段用來控制 emptyDir 卷的存儲位置。

掛載位置可以是基于存儲介質(zhì)的,也可以是基于內(nèi)存的:

emptyDir 卷存儲在該節(jié)點所使用的介質(zhì)上; 此處的介質(zhì)可以是磁盤、SSD 或網(wǎng)絡(luò)存儲,這取決于你的環(huán)境

如果是掛載 tmpfs,將 emptyDir.medium 字段設(shè)置為 "Memory", 它與磁盤不同:tmpfs 在節(jié)點重啟時會被清除, 并且你所寫入的所有文件都會計入容?的內(nèi)存消耗,受容?內(nèi)存限制約束。

示例:

emptyDir 官方配置示例

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: registry.k8s.io/test-webserver
    name: test-container
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir:
      sizeLimit: 500Mi

容器共享示例:

apiVersion: v1
kind: Pod
metadata:
  name: volume-emptydir
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
    ports:
    - containerPort: 80
    volumeMounts:  									# 將logs-volume掛在到nginx容器中,對應(yīng)的目錄為 /var/log/nginx
    - name: logs-volume
      mountPath: /var/log/nginx
  - name: busybox
    image: busybox:1.30
    command: ["/bin/sh","-c","tail -f /logs/access.log"] 	# 初始命令,動態(tài)讀取指定文件中內(nèi)容
    volumeMounts:  									# 將logs-volume 掛在到busybox容器中,對應(yīng)的目錄為 /logs
    - name: logs-volume
      mountPath: /logs
  volumes: 											# 聲明volume, name為logs-volume,類型為emptyDir
  - name: logs-volume
    emptyDir: {}

創(chuàng)建Pod

[root@k8s-master01 ~]# kubectl create -f volume-emptydir.yaml

# 查看pod
[root@k8s-master01 ~]# kubectl get pods volume-emptydir -n dev -o wide
NAME                  READY   STATUS    RESTARTS   AGE      IP       NODE   ...... 
volume-emptydir       2/2     Running   0          97s   x.x.x.x   node1  ......

# 通過podIp訪問nginx
[root@k8s-master01 ~]# curl <IP>


# 通過kubectl logs命令查看指定容器的標準輸出
[root@k8s-master01 ~]# kubectl logs -f volume-emptydir -n dev -c busybox

卷限制:

基于介質(zhì):通過為默認介質(zhì)指定大小限制,來限制 emptyDir 卷的存儲容量。

基于內(nèi)存:當啟用 SizeMemoryBackedVolumes 特性門控時, 你可以為基于內(nèi)存提供的卷指定大小。 如果未指定大小,則基于內(nèi)存的卷的大小為 Linux 主機上內(nèi)存的 50%。

為本地臨時性存儲設(shè)置請求和限制

以指定 ephemeral-storage 來管理本地臨時性存儲。 Pod 中的每個容器可以設(shè)置以下屬性:

  • spec.containers[].resources.limits.ephemeral-storage
  • spec.containers[].resources.requests.ephemeral-storage

表示存儲容量的 方式有2種

  • 加后綴表達式(可加的后綴:E、P、T、G、M、k)
  • 2 的冪級數(shù)表達式(Ei、Pi、Ti、Gi、Mi、Ki)

官方示例:

假如,Pod 包含兩個容器。每個容器請求 2 GiB 大小的本地臨時性存儲。 每個容器都設(shè)置了 4 GiB 作為其本地臨時性存儲的限制。 因此,整個 Pod 的本地臨時性存儲請求是 4 GiB,且其本地臨時性存儲的限制為 8 GiB。 該限制值中有 500Mi 可供 emptyDir 卷使用。

apiVersion: v1
kind: Pod
metadata:
  name: frontend
spec:
  containers:
  - name: app
    image: images.my-company.example/app:v4
    resources:
      requests:
        ephemeral-storage: "2Gi"
      limits:
        ephemeral-storage: "4Gi"
    volumeMounts:
    - name: ephemeral
      mountPath: "/tmp"
  - name: log-aggregator
    image: images.my-company.example/log-aggregator:v6
    resources:
      requests:
        ephemeral-storage: "2Gi"			# 關(guān)鍵配置,注意單位
      limits:
        ephemeral-storage: "4Gi"			# 關(guān)鍵配置,注意單位
    volumeMounts:
    - name: ephemeral
      mountPath: "/tmp"
  volumes:									# 掛載的卷
    - name: ephemeral
      emptyDir:
        sizeLimit: 500Mi

CSI 臨時卷

使用 CSI 臨時存儲的 Pod 的示例清單:

kind: Pod
apiVersion: v1
metadata:
  name: my-csi-app
spec:
  containers:
    - name: my-frontend
      image: busybox:1.28
      volumeMounts:
      - mountPath: "/data"
        name: my-csi-inline-vol
      command: [ "sleep", "1000000" ]
  volumes:
    - name: my-csi-inline-vol
      csi:
        driver: inline.storage.kubernetes.io
        volumeAttributes:
          foo: bar

通用臨時卷

特性狀態(tài): Kubernetes v1.23 [stable]

臨時存放Pod數(shù)據(jù)目錄,創(chuàng)建初始為空。

通用臨時卷與EmptyDir不同的功能特性:

  • 存儲可以是本地的,也可以是網(wǎng)絡(luò)連接的。

  • 卷可以有固定的大小,Pod 不能超量使用。

  • 卷可能有一些初始數(shù)據(jù),這取決于驅(qū)動程序和參數(shù)。

  • 支持典型的卷操作,前提是相關(guān)的驅(qū)動程序也支持該操作,包括 快照、 克隆、 調(diào)整大小和 存儲容量跟蹤)。

官方示例:

kind: Pod
apiVersion: v1
metadata:
  name: my-app
spec:
  containers:
    - name: my-frontend
      image: busybox:1.28
      volumeMounts:
      - mountPath: "/scratch"
        name: scratch-volume
      command: [ "sleep", "1000000" ]
  volumes:
    - name: scratch-volume
      ephemeral:
        volumeClaimTemplate:
          metadata:
            labels:
              type: my-frontend-volume
          spec:
            accessModes: [ "ReadWriteOnce" ]
            storageClassName: "scratch-storage-class"
            resources:
              requests:
                storage: 1Gi

參閱:

k8s存儲:卷、持久卷、存儲類

k8s數(shù)據(jù)存儲詳解

存儲

K8S系列之存儲文章來源地址http://www.zghlxwxcb.cn/news/detail-605249.html

到了這里,關(guān)于K8s卷存儲詳解(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授權(quán)訪問&容器執(zhí)行

    云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授權(quán)訪問&容器執(zhí)行

    Kubernetes是一個開源的, 用于編排云平臺中多個主機上的容器化的應(yīng)用,目標是讓部署容器化的應(yīng)用能簡單并且高效的使用, 提供了應(yīng)用部署,規(guī)劃,更新,維護的一種機制 。其核心的特點就是能夠自主的管理容器來保證云平臺中的容器按照用戶的期望狀態(tài)運行著,管理員可

    2024年02月08日
    瀏覽(31)
  • 【云原生 | Kubernetes 系列】K8s 實戰(zhàn) 管理 Secret 詳解

    【云原生 | Kubernetes 系列】K8s 實戰(zhàn) 管理 Secret 詳解

    Secret 是一種包含少量敏感信息例如密碼、令牌或密鑰的對象。 這樣的信息可能會被放在 Pod 規(guī)約中或者鏡像中。 用戶可以創(chuàng)建 Secret,同時系統(tǒng)也創(chuàng)建了一些 Secret。 一個 Secret 可以包含 Pod 訪問數(shù)據(jù)庫所需的用戶憑證。 例如,由用戶名和密碼組成的數(shù)據(jù)庫連接字符串。 你可

    2024年02月02日
    瀏覽(96)
  • 【云原生 | Kubernetes 系列】K8s 實戰(zhàn) 如何給應(yīng)用注入數(shù)據(jù) II 將pod數(shù)據(jù)傳遞給容器

    【云原生 | Kubernetes 系列】K8s 實戰(zhàn) 如何給應(yīng)用注入數(shù)據(jù) II 將pod數(shù)據(jù)傳遞給容器

    在上一篇文章中,我們學(xué)習(xí)了針對容器設(shè)置啟動時要執(zhí)行的命令和參數(shù)、定義相互依賴的環(huán)境變量、為容器設(shè)置環(huán)境變量,三種設(shè)置方式,本篇文章,我們將繼續(xù)學(xué)習(xí)數(shù)據(jù)的傳遞。 有兩種方式可以將 Pod 和 Container 字段傳遞給運行中的容器: 環(huán)境變量 卷文件 這兩種呈現(xiàn) Pod

    2024年01月25日
    瀏覽(526)
  • Kubernetes基礎(chǔ)(二十三)-k8s持久化存儲詳解

    Kubernetes基礎(chǔ)(二十三)-k8s持久化存儲詳解

    1.1 介紹 在容器中的磁盤文件是短暫的,當容器崩潰時,Kubelet會重新啟動容器,但容器運行時產(chǎn)生的數(shù)據(jù)文件都將會丟失,之后容器會以最干凈的狀態(tài)啟動。另外,當一個Pod運行多個容器時,各個容器可能需要共享一些文件,諸如此類的需求都可以使用Volume解決。Pod只需要通

    2024年03月17日
    瀏覽(25)
  • 【云原生】K8S存儲卷:PV、PVC詳解

    【云原生】K8S存儲卷:PV、PVC詳解

    容器磁盤上的文件的生命周期是短暫的,這就使得在容器中運行重要應(yīng)用時會出現(xiàn)一些問題。首先,當容器崩潰時,kubelet 會重啟它,但是容器中的文件將丟失——容器以干凈的狀態(tài)(鏡像最初的狀態(tài))重新啟動。其次,在Pod中同時運行多個容器時,這些容器之間通常需要共

    2024年02月12日
    瀏覽(21)
  • 云原生Kubernetes:K8S集群實現(xiàn)容器運行時遷移(docker → containerd) 與 版本升級(v1.23.14 → v1.24.1)

    云原生Kubernetes:K8S集群實現(xiàn)容器運行時遷移(docker → containerd) 與 版本升級(v1.23.14 → v1.24.1)

    目錄 一、理論 1.K8S集群升級 2.環(huán)境 3.升級策略 4.master1節(jié)點遷移容器運行時(docker → containerd)? 5.master2節(jié)點遷移容器運行時(docker → containerd)? 6.node1節(jié)點容器運行時遷移(docker → containerd)? 7.升級集群計劃(v1.23.14 →?v1.24.1) 8.升級master1節(jié)點版本(v1.24.1) 9.升級master2節(jié)點版本

    2024年02月03日
    瀏覽(38)
  • 云上攻防-云原生篇&;Kubernetes&;K8s安全&;API&;Kubelet未授權(quán)訪問&;容器執(zhí)行

    云上攻防-云原生篇&;Kubernetes&;K8s安全&;API&;Kubelet未授權(quán)訪問&;容器執(zhí)行

    curl -XPOST -k “https://192.168.139.132:10250/run///” -d “cmd=id” 執(zhí)行的命令是test03容器里的命令,需要進行容器逃逸。 1、攻擊8080端口:API Server(Master)未授權(quán)訪問 舊版本的k8s的API Server默認會開啟兩個端口:8080和6443。 6443是安全端口,安全端口使用TLS加密;但是8080端口無需認證,

    2024年04月22日
    瀏覽(71)
  • 云原生Kubernetes:K8S概述

    云原生Kubernetes:K8S概述

    目錄 一、理論 1.云原生 2.K8S 3.k8s集群架構(gòu)與組件 4.K8S網(wǎng)絡(luò) 二、總結(jié) (1)概念 云原生是一種基于容器、微服務(wù)和自動化運維的軟件開發(fā)和部署方法。它可以使應(yīng)用程序更加高效、可靠和可擴展,適用于各種不同的云平臺。 如果要更直接通俗的來解釋下上面的概念,云原生更

    2024年02月10日
    瀏覽(34)
  • 【云原生 ? Kubernetes】認識 k8s、k8s 架構(gòu)、核心概念點介紹

    【云原生 ? Kubernetes】認識 k8s、k8s 架構(gòu)、核心概念點介紹

    目錄 一、Kubernetes 簡介 二、Kubernetes 架構(gòu) 三、Kunbernetes 有哪些核心概念? 1. 集群 Cluster 2. 容器 Container 3. POD 4. 副本集 ReplicaSet 5. 服務(wù) service 6. 發(fā)布 Deployment 7. ConfigMap/Secret 8. DaemonSet 9. 核心概念總結(jié) Kubernetes 簡稱 k8s,是支持云原生部署的一個平臺,起源于谷歌。谷歌早在十幾

    2024年02月03日
    瀏覽(860)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包