首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >库伯奈特的放置会使吊舱永远重新启动。

库伯奈特的放置会使吊舱永远重新启动。
EN

Stack Overflow用户
提问于 2020-09-10 07:24:48
回答 3查看 380关注 0票数 1

我们有两个节点,每个节点都有96 GB内存。我们的计划是,我们的吊舱将从其中一个节点获取90.5 GB内存,从另一个节点获取91 GB内存。实际发生的是,吊舱从一个节点获得93.5GB,从另一个节点获取88 GB。这导致荚永久地重新启动,并且应用程序从未达到运行状态。

背景:我们是kubernetes的新手,在AWS上的ek集群上使用版本1.14 (v1.14.9- eks 658790)。目前我们有不同大小的豆荚,合在一起构成我们的产品的一个单位。在测试设置上,我们希望与一个单元一起工作,在生产上与多个单元一起工作。这是一个问题,我们支付更多的钱,节点,减少吊舱限制或数量的副本。

豆荚的详细情况:

代码语言:javascript
复制
+-------------+--------------+-----------+-------------+
|  Pod name   | Mem requests | pod limit | # of copies |
+-------------+--------------+-----------+-------------+
| BIG-OK-POD  | 35           | 46        | 2           |
| OK-POD      | 7.5          | 7.5       | 4           |
| A-OK-POD    | 6            | 6         | 8           |
| WOLF-POD    | 5            | 5         | 1           |
| WOLF-B-POD  | 1            | 1         | 1           |
| SHEEP-POD   | 2            | 2         | 1           |
| SHEEP-B-POD | 2            | 2         | 1           |
| SHEEP-C-POD | 1.5          | 1.5       | 1           |
+-------------+--------------+-----------+-------------+

我们不关心豆荚在哪里运行,我们只是希望节点能够处理内存需求,而不会失败。

我重新命名了豆荚,以使它更容易遵循我们的预期。

预期位置:

我们预计狼荚会在一个节点上,绵羊豆荚在另一个节点上,而OK豆荚会在两个节点之间被分开。

代码语言:javascript
复制
Node 1:
+-------------+-----------+-------------+----------------+
|  Pod name   | pod limit | # of copies | combined limit |
+-------------+-----------+-------------+----------------+
| BIG-OK-POD  | 46        | 1           |             46 |
| OK-POD      | 7.5       | 2           |             15 |
| A-OK-POD    | 6         | 4           |             24 |
| WOLF-POD    | 5         | 1           |              5 |
| WOLF-B-POD  | 1         | 1           |              1 |
+-------------+-----------+-------------+----------------+
|                                       | TOTAL: 91      |
+-------------+-----------+-------------+----------------+

Node 2:

+-------------+-----------+-------------+----------------+
|  Pod name   | pod limit | # of copies | combined limit |
+-------------+-----------+-------------+----------------+
| BIG-OK-POD  | 46        | 1           | 46             |
| OK-POD      | 7.5       | 2           | 15             |
| A-OK-POD    | 6         | 4           | 24             |
| SHEEP-POD   | 2         | 1           | 2              |
| SHEEP-B-POD | 2         | 1           | 2              |
| SHEEP-C-POD | 1.5       | 1           | 1.5            |
+-------------+-----------+-------------+----------------+
|                                       | TOTAL: 90.5    |
+-------------+-----------+-------------+----------------+

实际放置:

代码语言:javascript
复制
Node 1:
+-------------+-----------+-------------+----------------+
|  Pod name   | pod limit | # of copies | combined limit |
+-------------+-----------+-------------+----------------+
| BIG-OK-POD  | 46        | 1           | 46             |
| OK-POD      | 7.5       | 2           | 15             |
| A-OK-POD    | 6         | 4           | 24             |
| WOLF-POD    | 5         | 1           | 5              |
| SHEEP-B-POD | 2         | 1           | 2              |
| SHEEP-C-POD | 1.5       | 1           | 1.5            |
+-------------+-----------+-------------+----------------+
|                                       | TOTAL: 93.5    |
+-------------+-----------+-------------+----------------+

Node 2:
+-------------+-----------+-------------+----------------+
|  Pod name   | pod limit | # of copies | combined limit |
+-------------+-----------+-------------+----------------+
| BIG-OK-POD  | 46        | 1           | 46             |
| OK-POD      | 7.5       | 2           | 15             |
| A-OK-POD    | 6         | 4           | 24             |
| WOLF-B-POD  | 1         | 1           | 1              |
| SHEEP-POD   | 2         | 1           | 2              |
+-------------+-----------+-------------+----------------+
|                                       | TOTAL: 88      |
+-------------+-----------+-------------+----------------+

有没有办法告诉kubernetes,节点应该将4GB的内存留给节点本身?

在阅读了的答案后,我们尝试更改系统--保留=内存(设置为0.2Gi),但是对于任何大于0.3Gi的值(0.5Gi、1Gi、2Gi、3Gi和4Gi),豆荚永远处于待定状态。

更新:我们找到了一种方法来减少对一些豆荚的限制,现在系统已经启动并且稳定了(尽管有一个节点在99%上)。我们无法让K8s从预览配置开始,我们仍然不知道为什么。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-09-10 09:00:13

Kubernetes让我们配置服务器,以便为系统守护进程保留资源。

为此,您需要配置kubelet代理。这是一个每个节点的配置。

因此,如果要在一个节点上预留4Gb内存,则需要使用以下选项在此节点上配置kubelet代理:

代码语言:javascript
复制
--system-reserved=memory=4Gi

您可以在正式文件中找到更多关于这一点的信息。

票数 2
EN

Stack Overflow用户

发布于 2020-09-10 08:42:44

每个资源类型有两个资源说明符。

  1. 资源请求
  2. 资源限度

资源请求指定了豆荚应该保留的特定资源(CPU或内存)的数量。豆荚可以使用比所请求的资源更多的资源,但不能超过资源限制。

根据Kubernetes的文件:

创建Pod时,Kubernetes调度程序会为Pod选择要运行的节点。每个节点对于每种资源类型都有最大的容量:它可以为Pods提供的CPU和内存量。调度器确保,对于每种资源类型,调度容器的资源请求之和小于节点的容量。注意,尽管节点上的实际内存或CPU资源使用率非常低,但如果容量检查失败,调度程序仍然拒绝在节点上放置Pod。这可以防止当资源使用增加时,例如在请求速率的日峰值期间,节点上的资源短缺。

以下是资源请求和限制的典型配置。

代码语言:javascript
复制
resources:
  requests:
    memory: "64Mi"
    cpu: "250m"
  limits:
    memory: "128Mi"
    cpu: "500m"
票数 1
EN

Stack Overflow用户

发布于 2020-09-10 13:54:21

您在同一个“堆栈溢出问题”中触及了几个主题。

专题1.

有没有办法告诉kubernetes,节点应该将4GB的内存留给节点本身?背景:..。版本1.14在一个ek集群上

主题上的官方医生说,如果您的Kubernetes服务器位于版本1.8或更新版本1.8,那么它是可配置的。

在GiHub上有一条关于“库贝保留和系统预留不工作的#72762”的老线索,这也是值得一查的。

以及一个非常全面的文章,它指定了如何防止关键系统和Kubernetes服务的资源短缺。

专题2。

我们期望狼荚在一个节点上,羊荚在另一个节点上。

可以将Pod限制为只能在特定的节点上运行,或者更愿意在特定的节点上运行。有几种方法可以做到这一点,推荐的方法都使用标签选择器来进行选择。

nodeSelector是最简单的节点选择约束形式。nodeSelector是PodSpec的一个领域。它指定了键值对的映射。为了使pod有资格在节点上运行,节点必须将每个指定的键值对作为标签(它也可以有附加的标签)。最常见的用法是一个键值对。

当OK豆荚在节点之间被分开的时候。

荚间亲和力和反亲和力允许您约束您的荚符合调度https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity的节点,而不是基于节点上的标签。规则的形式是“如果X已经运行了一个或多个符合规则Y的豆荚,则这个荚应该(或者,在反亲和力的情况下,不应该)运行在X中”。

专题3.

听起来它可以用于我详细共享的两个节点的单位用例,但是对于生产,我们有很多节点,而不是一个接一个地配置它们。

  • 如果你想定制你的豆荚(“狼”在奇数节点上,“绵羊”在偶数节点上,只有一个OK,A-OK,大-OK的每个节点),这就是它应该工作的方式。
  • “我们不是一个一个地配置它们”--管理基础设施/标签/部署的方法很多,但这是一个单独的问题。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63824731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档