kubernetes临时存储限制参数-ephemeral storage

kubernetes临时存储限制参数-ephemeral storage

前言

最近发现一个服务pod内疯狂打日志,输出一小时内输出155G+日志量,直接造成了线上服务因磁盘压力被驱逐。

然后看了下很多技术跑的tomcat之类的业务也是输出大量日志未进行处理的或者一些奇怪Bug。

image-20240705135045180

image-20240705134934406

临时存储的概念

临时存储即宿主机节点的本地存储。早期版本的kubernetes提供了对container的CPU、内存的限制,并没有提供对container使用的本地存储的限制,这种情况下,可能存在某些container大量消耗宿主机的存储容量,导致宿主机没有足够的磁盘空间运行核心组件。

container使用的宿主机空间:

  • 存放log的目录:/var/lib/kubelet、/var/log/pods
  • 存放rootfs的目录: /var/lib/docker

kubernetes在1.8版本引入了ephemeral storage资源,以管理本地临时存储的使用。

临时性存储设置请求和限制

你可以指定 ephemeral-storage 来管理本地临时性存储。 Pod 中的每个容器可以设置以下属性:

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

参考:https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/#local-ephemeral-storage

测试Demo

创建一个deploy,ephemeral-storage申请300Mi,限制300Mi:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:      
      containers:
      - name: nginx
        image: nginx:1.24
        imagePullPolicy: IfNotPresent
        command:
        - nginx
        - -g
        - "daemon off;"
        workingDir: /usr/share/nginx/html
        ports:
        - name: http
          containerPort: 80
          protocol: TCP
        resources:
          limits:
            ephemeral-storage: 300Mi
          requests:
            ephemeral-storage: 300Mi

创建出来2个pod:

# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-124124adgd-11f5m   1/1     Running   0          20s
nginx-124124adgd-k9r22   1/1     Running   0          20s

在其中一个pod写入400Mi的文件:

# kubectl exec -it nginx-124124adgd-11f5mm /bin/sh
# dd if=/dev/zero of=/test bs=4096 count=102400
102400+0 records in
102400+0 records out
419430400 bytes (419 MB, 400 MiB) copied, 16.2403 s, 25.8 MB/s

可以看到,写入文件的pod被Evicted,并新创了一个pod:

# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-124124adgd-11f5m   0/1     Evicted   0          5m19s
nginx-124124adgd-z8r6a   1/1     Running   0          4s
nginx-124124adgd-k9r22   1/1     Running   0          5m19s

注意pod只是被Evicted了,但未比删除。

参考

1.https://zhuanlan.zhihu.com/p/601805418

2.https://blog.csdn.net/sdmei/article/details/101017405

评论

  1. keymon
    Windows Chrome 126.0.0.0
    6 月前
    2024-7-25 18:07:32

    为什么我这个主题评论有问题

    • 博主
      keymon
      Windows Edge 118.0.2088.76
      6 月前
      2024-8-01 8:21:27

      你问问作者~

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇