zoukankan      html  css  js  c++  java
  • 临时存储 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 标记为逐出候选

     

  • 相关阅读:
    MongoDB简单使用
    mongodb安装部署
    分布式通信-序列化
    分布式通信协议
    分布式概念
    springboot-事件
    spring-事件
    spring-@Component/@ComponentScan注解
    springboot-Date日期时间问题
    enginx:基于openresty,一个前后端统一,生态共享的webstack实现
  • 原文地址:https://www.cnblogs.com/apink/p/15167672.html
Copyright © 2011-2022 走看看