臨時存儲 Ephemeral Storage


volume


Container 中的文件在磁盤上是臨時存放的,使之Container中運行的相對重要的應用業務帶來一些問題

  1. 第一個問題是當容器崩潰時文件丟失。kubelet 會重新啟動容器, 但容器會以干凈的狀態重啟
  2. 第二個問題是會在同一 Pod中運行多個容器並共享文件時出現,Kubernetes 卷(Volume) 這一抽象概念能夠解決這兩個問題

在 .spec.volumes 字段中設置為 Pod 提供的卷,並在 .spec.containers[*].volumeMounts 字段中聲明卷在容器中的掛載位置,容器中的進程看到的是由它們的 Docker 鏡像和卷組成的文件系統視圖。 Docker 鏡像 位於文件系統層次結構的根部。各個卷則掛載在鏡像內的指定路徑上。 卷不能掛載到其他卷之上,也不能與其他卷有硬鏈接。 Pod 配置中的每個容器必須獨立指定各個卷的掛載位置

臨時卷 ephemeral volume

節點通常還可以具有本地的臨時性存儲,由本地掛接的可寫入設備或者有時也用 RAM 來提供支持。 “臨時(Ephemeral)”意味着對所存儲的數據不提供長期可用性的保證。

Pods 通常可以使用臨時性本地存儲來實現緩沖區、保存日志等功能。 kubelet 可以為使用本地臨時存儲的 Pods 提供這種存儲空間,允許后者使用 emptyDir 類型的 將其掛載到容器中。

kubelet 也使用此類存儲來保存 節點層面的容器日志, 容器鏡像文件、以及運行中容器的可寫入層

kubelet 會將日志寫入到所配置的日志目錄(默認為 /var/log)下的文件中; 還會針對其他本地存儲的數據使用同一個基礎目錄(默認為 /var/lib/kubelet

<root@HK-K8S-WN4 /var/lib/kubelet># ls -l
total 40
-rw-r--r-- 1 root root 1270 Aug 16 15:59 config.yaml
-rw------- 1 root root   62 Aug 15 15:03 cpu_manager_state
drwxr-xr-x 3 root root 4096 Aug 15 15:13 csi-plugins
drwxr-xr-x 2 root root 4096 Aug 19 15:31 device-plugins
-rw-r--r-- 1 root root  211 Aug 16 12:29 kubeadm-flags.env
drwxr-xr-x 2 root root 4096 Aug 15 15:03 pki
drwxr-x--- 2 root root 4096 Aug 15 15:03 plugins
drwxr-x--- 2 root root 4096 Aug 15 21:11 plugins_registry
drwxr-x--- 2 root root 4096 Aug 16 16:00 pod-resources
drwxr-x--- 6 root root 4096 Aug 19 15:32 pods
<root@HK-K8S-WN4 /var/lib/kubelet># cd pods/
<root@HK-K8S-WN4 /var/lib/kubelet/pods># ls
410f3b52-3fa2-4a75-8811-bd2b4e60b1bd  75aa6245-eac7-46ee-9d13-7b521071074d  9d01c4c7-6c73-4bd0-8cf2-468b4a70d0f5  c0454f67-7c54-401d-99f7-0457601e181d
<root@SIT-K8S-WN4 /data/docker/containers/f810adcc256c2705f964464b4dea9566efe278429dee26eb23b1de16c863b8a8># cd /var/log/pods/
<root@SIT-K8S-WN4 /var/log/pods># ls
default_prometheus-node-exporter-f29fl_474af7c9-f7e1-40c0-9111-9f0f48780005                sit_sit01-xy-loan-7fdffb898d-vgxs7_1ac6a779-8712-4958-a4f7-df10dcec5320
kube-system_calico-node-mvcpf_2b654b4c-c50d-495f-a644-1fa70df66f5f                         sit_sit02-coll-api-5886fb469d-975s8_182966ee-9e21-4354-a64e-9ef70acf070c
kube-system_kube-proxy-7wxjb_9dbf490a-7929-4e37-9911-dd92201d4052                          sit_sit02-coll-service-5dc5966794-bmkw2_3602f083-0b4c-47d0-a6db-0d925242cf0d
kube-system_logtail-ds-bsrfz_e2090262-9ff0-4f92-8e58-6f2912453fb8                          sit_sit02-common-service-6885494765-h4dtt_b3ef29cd-a7b8-484d-910b-92b37fb18d95
sit_sit01-coll-service-5d4979b488-md8n7_1beaee42-3308-44c8-a43a-8a697e61a950               sit_sit02-eureka-1_e21ab027-49d6-4987-9bf4-dc659ae4dd98
sit_sit01-common-gateway-6797fd5d84-g7nbt_641c992a-8850-458a-a687-dc695e5c701a             sit_sit02-feserver-8568b7fbd-s8vv8_53dbce38-1d81-4313-995c-d98b9ccd75ad
sit_sit01-eureka-2_870f5ed5-a6e9-4fdb-be34-e76484ebd1ea                                    sit_sit02-nisp-gateway-b78bc8c47-s4ph4_1c687a04-c316-406d-836d-fa7d82c5acb5
sit_sit01-h5-chanel-n-orange-56c46db4f7-jfwjf_920266f4-452d-4eb3-9449-40ce7c4158bc         sit_sit02-xc-flow-7d447db78f-75mtp_377436b2-55cc-43c8-8898-8433c5c82984
sit_sit01-risk-gateway-6c649bbd65-vblf2_7267767d-4c45-4a64-8d5e-17a7b8c0f112               sit_sit02-xc-fund-6888f8fc47-4444b_f73266bc-b865-4a2e-90ba-c894011cb6ac
sit_sit01-risk-model-5fcdc7bfc8-c27ww_fb240c36-1e34-4be6-a9a4-4513d23809d5                 sit_sit02-xc-loan-7c7c989c67-wf257_67371f1e-c6a6-4c6c-ad40-5de182507451
sit_sit01-xc-common-5f7db64b8-8c9nf_169b60be-68aa-4d98-b62d-c6adb6ffd0c5                   sit_sit02-xy-risk-6f44cd4574-9zfgt_e7db4d6a-9399-4af0-8efc-8cbc73923fbd
sit_sit01-xc-event-f898d48f8-ddw96_c6e67019-b539-423f-b2aa-f7de8d25a325                    sit_sit02-xy-trade-7649b9c58b-sjs9q_018c651e-cdfa-4aac-80f8-90a08ead9e21
sit_sit01-xc-flow-5fb64b68bf-j6q99_fc72af00-d3c1-41dc-951c-a4b778338c7e                    sit_sit03-h5-chanel-n-orange-657887f5bf-hzgj7_b784c78f-430f-42ce-b7c8-bfa910e9fcc0
sit_sit01-xianxiang-manage-business-8484bd4b8f-t5zqh_b8a379b0-4e64-4e60-9c37-efc09fa79018  sit_sit03-xianxiang-credit-6859bcf9bb-zs5d8_9a903f01-2d58-4f88-b911-1fc64b28f3b2
sit_sit01-xianxiang-transaccount-5cf787c9bf-pd6q6_ba229ac2-ebc9-44ce-be09-d58ec5df2898     weave_weave-scope-agent-rj4jd_7701ce14-7853-4bd3-a781-c77a767619da

約束形式

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

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

 驅逐處理

  • 如果某 Pod 的臨時存儲用量超出了你所允許的范圍,kubelet 會向其發出逐出(eviction)信號,觸發該 Pod 被逐出所在節點。
  • 就容器層面的隔離而言,如果某容器的可寫入鏡像層和日志用量超出其存儲約束, kubelet 也會將所在的 Pod 標記為逐出候選。
  • 就 Pod 層面的隔離而言,kubelet 會將 Pod 中所有容器的約束值相加,得到 Pod 存儲約束的總值。如果所有容器的本地臨時性存儲用量總和加上 Pod 的 emptyDir 卷的用量超出 Pod 存儲約束值,kubelet 也會將該 Pod 標記為逐出候選

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM