kubernetes 如何预防低资源灾难

ne5o7dgx  于 2023-04-29  发布在  Kubernetes
关注(0)|答案(1)|浏览(208)

当资源不足时,kubernetes开始重新创建pod,但新的pod也会失败,因此它们的数量会不断增加。群集变得不可用。这似乎是不合逻辑的行为。有可能预防吗?是否可以在不删除所有内容的情况下恢复?

light@o-node0:~/lh-orchestrator$ k get pod
NAME                            READY   STATUS                   RESTARTS        AGE
aa344-detect-5cd757f65d-8kz2n   0/1     ContainerStatusUnknown   536 (62m ago)   46h
bb756-detect-855f6bcc78-jnfzd   0/1     ContainerStatusUnknown   8 (59m ago)     75m
aa344-analyz-5cc6c59d6c-rchkm   0/1     ContainerStatusUnknown   1               46h
lh-graphql-77fc996db5-8qcxl     0/1     ContainerStatusUnknown   1 (2d ago)      2d
lh-pgadmin-5b598d4d4-shjbz      0/1     ContainerStatusUnknown   1               2d
bb756-analyz-8cd7c48f7-k2xh9    0/1     ContainerStatusUnknown   1               75m
lh-postgres-698bc448bd-9vkqp    0/1     ContainerStatusUnknown   1               2d
lh-pgadmin-5b598d4d4-c4ts4      0/1     ContainerStatusUnknown   1               54m
lh-graphql-77fc996db5-btvzx     0/1     ContainerStatusUnknown   1               54m
lh-postgres-698bc448bd-99m55    0/1     ContainerStatusUnknown   1               54m
aa344-detect-5cd757f65d-qmvcc   0/1     ContainerStatusUnknown   1               58m
bb756-detect-855f6bcc78-7lc7g   0/1     ContainerStatusUnknown   1               56m
lh-graphql-77fc996db5-7lbms     1/1     Running                  0               34m
lh-pgadmin-5b598d4d4-l6f7s      0/1     ContainerStatusUnknown   1               34m
aa344-analyz-5cc6c59d6c-78ltt   0/1     ContainerStatusUnknown   1 (17m ago)     55m
lh-postgres-698bc448bd-gjbf2    0/1     ContainerStatusUnknown   1               34m
aa344-detect-5cd757f65d-cbspd   0/1     ContainerStatusUnknown   1               33m
bb756-detect-855f6bcc78-qvqsf   0/1     ContainerStatusUnknown   1               32m
lh-pgadmin-5b598d4d4-4znww      1/1     Running                  0               17m
lh-postgres-698bc448bd-xxm28    1/1     Running                  0               16m
aa344-analyz-5cc6c59d6c-h7vfc   1/1     Running                  3 (9m41s ago)   16m
bb756-analyz-8cd7c48f7-4tdcp    1/1     Running                  7 (10m ago)     54m
bb756-detect-855f6bcc78-fgpzx   0/1     Pending                  0               2s
bb756-detect-855f6bcc78-t4p4q   0/1     ContainerStatusUnknown   1               16m
aa344-detect-5cd757f65d-cd6gl   0/1     ContainerStatusUnknown   1               16m
aa344-detect-5cd757f65d-dwhf6   0/1     Pending                  0               1s
ej83mcc0

ej83mcc01#

在删除pods之前,请检查Pod无法创建的原因,如果是内存问题,请执行以下步骤:
1.如果你正在使用docker,运行docker system prune -a来清理docker占用的一些空间,然后节点将获得一些空间,清空节点并重新启动docker
1.任何容器都可以向文件系统写入任意数量的存储。设置一个quotalimits.ephemeral-storage, requests.ephemeral-storage)来限制它。
1.您可能需要增加存储空间,因为Kubernetes需要更多空间。

**对于部署:**缩减部署,以便在删除Pod时不会尝试创建新Pod。如果你缩小比例,Kubernetes会删除pod。

现在扩展部署,以便kubernetes创建上一个命令的pod的新副本。
您也可以通过运行以下命令删除所有处于失败阶段的Pod,而无需扩展部署:

kubectl delete pod --field-selector=status.phase==Failed

您可以在Oren Ninio的blog中找到更多有关删除pod的方法
通常,建议使用autoscaler来管理部署。

相关问题