管理容器资源

当您指定一个 ,您可以选择指定 每个资源的大部分 容器 需要。 指定的最常见资源是CPU和内存(RAM)。还有其他。

指定资源时 请求 对于捕鱼大亨网络版中的容器,调度程序使用此 信息,以确定将捕鱼大亨网络版放置在哪个节点上。指定资源时 限制 对于容器,kubelet会强制执行这些限制,以使运行中的容器不会 允许使用超出您设置的限制的更多资源。 Kubelet也保留 at least 的 请求 该容器专用的系统资源量 to use.

要求和限制

如果运行捕鱼大亨网络版的节点有足够的可用资源,则有可能(并且 allowed) for a container to use more resource than its 请求 for that resource specifies. However, a container is not allowed to use more than its resource 限制.

For example, if you set a 记忆 请求 of 256 MiB for a container, 和 that container is 在 将捕鱼大亨网络版调度到具有8GiB内存且没有其他捕鱼大亨网络版的节点上,则容器可以尝试使用 more RAM.

If you set a 记忆 限制 of 4GiB for that 容器, 的 kubelet (and 容器运行时)执行限制。 运行时阻止容器使用超出配置的资源限制的容器。例如: 当容器中的进程尝试消耗超过允许的内存量时, 系统内核因内存不足而终止尝试分配的进程 (OOM) error.

可以以反应方式实施限制(一旦发现违规,系统就会进行干预) 或强制执行(系统会阻止容器超过限制)。不同 运行时可以有不同的方法来实现相同的限制。

注意: 如果容器指定了自己的内存限制,但未指定内存请求,则Kubernetes 自动分配与限制匹配的内存请求。同样,如果容器指定了自己的 CPU限制,但未指定CPU请求,Kubernetes会自动分配与之匹配的CPU请求 the 限制.

资源类型

中央处理器记忆 每个都是 资源类型。资源类型具有基本单位。 CPU代表计算处理,并以 Kubernetes 中央处理器. 内存以字节为单位指定。 如果您使用的是Kubernetes v1.14或更高版本,则可以指定 大页面 资源。 庞大的页面是Linux特有的功能,节点内核在其中分配内存块 比默认页面大小大得多。

例如,在默认页面大小为4KiB的系统上,您可以指定一个限制, hugepages-2Mi: 80Mi。如果容器尝试分配40多个2MiB大页面(a 总共80 MiB),则分配失败。

注意: You cannot overcommit hugepages-* 资源。 This is different 来自 记忆中央处理器 资源。

中央处理器和内存统称为 计算资源, 要不就 资源。计算 资源是可请求,分配和可测量的数量 消耗。它们与 API资源。 API资源,例如捕鱼大亨网络版和 服务 是可以读取和修改的对象 通过Kubernetes API服务器。

资源请求和捕鱼大亨网络版和容器的限制

荚的每个容器可以指定以下一项或多项:

  • spec.containers[].resources.limits.cpu
  • spec.containers[].resources.limits.memory
  • spec.containers[].resources.limits.hugepages-<size>
  • spec.containers[].resources.requests.cpu
  • spec.containers[].resources.requests.memory
  • spec.containers[].resources.requests.hugepages-<size>

尽管只能在单个容器上指定请求和限制,但它 讨论捕鱼大亨网络版资源请求和限制很方便。一种 荚资源请求/限制 对于特定的资源类型,是 捕鱼大亨网络版中每个Container的该类型的资源请求/限制。

Kubernetes中的资源单位

中央处理器的含义

中央处理器资源的限制和要求以 中央处理器 单位。 Kubernetes中的一个cpu相当于 1个vCPU /核心 对于云提供商和 1个超线程 在裸机英特尔处理器上。

允许部分请求。一个带有 spec.containers[].resources.requests.cpu of 0.5 is guaranteed half as much CPU as one that asks for 1 中央处理器. 的 expression 0.1 is equivalent to 的 expression 100m, which can be read as "one hundred millicpu". Some people say “一百毫”,这被理解为是同一件事。一种 request with a decimal point, like 0.1, is converted to 100m by 的 API, 和 precision finer than 1m is not allowed. For this reason, 的 form 100m might be preferred.

始终要求CPU是绝对数量,而不是相对数量。 0.1与单核,双核或48核计算机上的CPU数量相同。

记忆的意义

Limits 和 请求s for 记忆 are measured 在 bytes. You can express 记忆 as 一个纯整数或使用以下后缀之一作为定点数: E,P,T,G,M,K。您还可以使用2的幂次方:Ei,Pi,Ti,Gi, 咪淇例如,以下内容表示大致相同的值:

128974848, 129e6, 129M, 123Mi

这是一个例子。 以下捕鱼大亨网络版具有两个容器。每个容器的要求为0.25 中央处理器 and 64MiB (226 个字节)的内存。每个容器的限制为0.5 CPU和128MiB的内存。您可以说捕鱼大亨网络版的请求为0.5 中央处理器和128 MiB内存,限制为1 中央处理器和256MiB内存。

apiVersion: v1
kind: 
metadata:
  name: frontend
spec:
  containers:
  - name: app
    image: images.my-company.example/app:v4
    资源:
      请求s:
        记忆: "64Mi"
        中央处理器: "250m"
      限制s:
        记忆: "128Mi"
        中央处理器: "500m"
  - name: log-aggregator
    image: images.my-company.example/log-aggregator:v6
    资源:
      请求s:
        记忆: "64Mi"
        中央处理器: "250m"
      限制s:
        记忆: "128Mi"
        中央处理器: "500m"

如何安排具有资源请求的捕鱼大亨网络版

创建捕鱼大亨网络版时,Kubernetes调度程序会为捕鱼大亨网络版选择一个节点 运行。每个节点对于每种资源类型都具有最大容量: 它可以为捕鱼大亨网络版提供的CPU和内存量。调度程序可确保 对于每种资源类型,已调度资源请求的总和 容器小于节点的容量。请注意,尽管实际内存 或节点上的CPU资源使用率非常低,调度程序仍拒绝放置 如果容量检查失败,则为节点上的捕鱼大亨网络版。这样可以防止资源 稍后资源使用率增加时(例如,在 每日请求率高峰。

具有资源限制的捕鱼大亨网络版如何运行

当kubelet启动捕鱼大亨网络版容器时,它会超过CPU和内存限制 到容器运行时。

使用Docker时:

  • spec.containers[].resources.requests.cpu is converted to its core value, 可能是小数,然后乘以1024。此数字中的较大者 或2用作 --cpu-shares flag 在 的 docker run command.

  • spec.containers[].resources.limits.cpu is converted to its millicore value 和 乘以100。结果是容器可以使用的CPU时间总量 每100ms。在此时间间隔内,容器使用的CPU时间不能超过其份额。

    注意: 默认配额期限为100毫秒。 中央处理器配额的最小分辨率为1ms。
  • spec.containers[].resources.limits.memory is converted to an 在teger, 和 用作 --memory flag 在 的 docker run command.

如果容器超出其内存限制,则可能会终止。如果是 可重新启动,与其他任何类型的运行时一样,kubelet将重新启动它 failure.

如果容器超出其内存请求,则其捕鱼大亨网络版可能会 每当节点内存不足时都会被逐出。

容器可能会或可能不会超出其CPU限制进行扩展 时间段。但是,它不会因CPU使用率过高而被杀死。

确定容器是否无法安排或由于以下原因而被杀死 资源限制,请参阅 故障排除 部分。

监视计算和内存资源使用情况

将捕鱼大亨网络版的资源使用情况报告为捕鱼大亨网络版状态的一部分。

如果可选 监控工具 在群集中可用,则可以检索捕鱼大亨网络版资源的使用情况 from 的 指标API 直接或从您的监视工具。

本地临时存储

功能状态: Kubernetes v1.10 [beta]

节点具有本地临时存储,并由 本地连接的可写设备,或有时通过RAM。 “暂时性”表示不能长期保证耐久性。

荚使用临时本地存储来存储暂存空间,缓存和日志。 Kubelet可以使用本地临时存储为捕鱼大亨网络版s提供临时空间 mount emptyDir 放入容器中。

kubelet也使用这种存储来保存 节点级容器日志, 容器映像以及正在运行的容器的可写层。

警告: 如果节点发生故障,其临时存储中的数据可能会丢失。
您的应用程序不能期望任何性能SLA(例如磁盘IOPS) 来自本地临时存储。

作为Beta版功能,Kubernetes可让您跟踪,保留和限制金额 捕鱼大亨网络版可以消耗的临时本地存储量。

本地临时存储的配置

Kubernetes支持两种在节点上配置本地临时存储的方式:

在此配置中,您放置了所有不同类型的临时本地数据 (emptyDir 卷, writeable layers, container images, logs) 在to one filesystem. 配置kubelet的最有效方法意味着使用此文件系统 到Kubernetes(kubelet)数据。

kubelet还写道 节点级容器日志 并将其与临时本地存储类似。

Kubelet将日志写入其配置的日志目录(/var/log 默认);并具有其他本地存储数据的基本目录 (/var/lib/kubelet by default).

Typically, both /var/lib/kubelet/var/log are on 的 system root filesystem, 而kubelet在设计时就考虑了这种布局。

您的节点可以具有不用于Kubernetes的尽可能多的其他文件系统, as you like.

您在用于临时数据的节点上有一个文件系统, comes from running 豆荚: logs, 和 emptyDir 卷. 您可以使用 this filesystem 其他数据(例如:与Kubernetes不相关的系统日志);它甚至可以 是根文件系统。

kubelet还写道 节点级容器日志 放入第一个文件系统,并将其与临时本地存储类似。

您还可以使用由不同逻辑存储设备支持的单独文件系统。 在此配置中,您告诉kubelet放置的目录 容器映像层和可写层位于此第二个文件系统上。

第一个文件系统不包含任何图像层或可写层。

您的节点可以具有不用于Kubernetes的尽可能多的其他文件系统, as you like.

Kubelet可以衡量其使用了多少本地存储。它做到了这一点 that:

  • LocalStorageCapacityIsolation 功能门 已启用(默认情况下该功能为启用状态),并且
  • 您已使用支持的配置之一设置了节点 用于本地临时存储。

如果您使用其他配置,则kubelet不会应用资源 临时本地存储的限制。

注意: 的 kubelet tracks tmpfs emptyDir 卷 as container 记忆 use, rather 而不是作为本地临时存储。

设置本地临时存储的请求和限制

您可以使用 临时存储 用于管理本地临时存储。 荚的每个容器可以指定以下一项或多项:

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

Limits 和 请求s for 临时存储 are measured 在 bytes. You can express storage as 一个纯整数或使用以下后缀之一作为定点数: E,P,T,G,M,K。您还可以使用2的幂次方:Ei,Pi,Ti,Gi, 咪淇例如,以下内容表示大致相同的值:

128974848, 129e6, 129M, 123Mi

在下面的示例中,该捕鱼大亨网络版具有两个容器。每个容器都有一个2GiB的本地临时存储请求。每个容器的本地临时存储限制为4GiB。因此,该捕鱼大亨网络版要求本地临时存储空间为4GiB,本地临时存储空间为8GiB。

apiVersion: v1
kind: 
metadata:
  name: frontend
spec:
  containers:
  - name: app
    image: images.my-company.example/app:v4
    资源:
      请求s:
        临时存储: "2Gi"
      限制s:
        临时存储: "4Gi"
  - name: log-aggregator
    image: images.my-company.example/log-aggregator:v6
    资源:
      请求s:
        临时存储: "2Gi"
      限制s:
        临时存储: "4Gi"

如何安排具有临时存储请求的捕鱼大亨网络版

创建捕鱼大亨网络版时,Kubernetes调度程序会为捕鱼大亨网络版选择一个节点 运行。每个节点都可以为捕鱼大亨网络版提供最大数量的本地临时存储。有关更多信息,请参见 可分配节点.

调度程序确保调度的容器的资源请求的总和小于节点的容量。

临时存储消耗管理

如果kubelet将本地临时存储作为资源进行管理,则 kubelet衡量以下方面的存储使用:

  • emptyDir 卷,除了 tmpfs emptyDir
  • 存放节点级日志的目录
  • 可写容器层

如果捕鱼大亨网络版使用的临时存储量超出了您的允许范围,则kubelet 设置一个触发捕鱼大亨网络版逐出的逐出信号。

对于容器级别的隔离,如果容器的可写层和日志 如果使用量超出其存储限制,则kubelet将捕鱼大亨网络版逐出。

对于捕鱼大亨网络版级别的隔离,kubelet通过以下方式计算捕鱼大亨网络版的总体存储限制 汇总该捕鱼大亨网络版中容器的限制。在这种情况下,如果 所有容器以及捕鱼大亨网络版的本地临时存储使用情况 emptyDir 卷超过了捕鱼大亨网络版的总体存储限制,那么kubelet也会标记捕鱼大亨网络版 for eviction.

警告:

如果kubelet没有测量本地临时存储,则捕鱼大亨网络版 超出其本地存储限制的将不会因违反而被驱逐 本地存储资源限制。

但是,如果用于可写容器层,节点级日志的文件系统空间, or emptyDir 卷 falls low, 的 node 污点 本身就是本地存储的不足 而此异味会触发任何不专门允许异味的捕鱼大亨网络版。

查看支持 构型 用于临时本地存储。

kubelet支持多种方法来衡量捕鱼大亨网络版存储的使用:

kubelet执行定期的计划检查,该检查将扫描每个 emptyDir 卷,容器日志目录和可写容器层。

扫描测量使用了多少空间。

注意:

在这种模式下,kubelet不会跟踪打开的文件描述符 for deleted files.

If you (or a container) create a file 在side an emptyDir volume, 然后,某些东西会打开该文件,而您在删除文件时将其删除 仍然打开,则删除文件的索引节点将保持不变,直到您关闭 该文件,但kubelet并未将使用空间分类。

功能状态: Kubernetes v1.15 [alpha]

项目配额是用于管理的操作系统级别的功能 文件系统上的存储使用。使用Kubernetes,您可以启用项目 用于监视存储使用的配额。确保文件系统 backing 的 emptyDir 卷, on 的 node, provides project quota support. 例如,XFS和ext4fs提供项目配额。

注意: 项目配额使您可以监视存储使用情况;他们不执行限制。

Kubernetes uses project IDs starting from 1048576. 的 IDs 在 use are registered 在 /etc/projects/etc/projid. If project IDs 在 该范围用于系统上的其他目的,那些项目 IDs must be registered 在 /etc/projects/etc/projid so that Kubernetes不使用它们。

配额比目录扫描更快,更准确。当一个 目录已分配给项目,所有文件都在 目录是在该项目中创建的,内核只需要 跟踪该项目中的文件正在使用多少个块。
如果创建并删除了文件,但文件描述符为打开状态, 它继续消耗空间。配额跟踪可准确记录该空间 而目录扫描会忽略已删除文件所使用的存储。

如果要使用项目配额,则应该:

  • 启用 LocalStorageCapacityIsolationFSQuotaMonitoring=true 功能门 在kubelet配置中。

  • 确保根文件系统(或可选的运行时文件系统) 已启用项目配额。所有XFS文件系统都支持项目配额。 对于ext4文件系统,您需要启用项目配额跟踪功能 未挂载文件系统时。

    # For ext4, with /dev/block-device not 安装ed
    sudo tune2fs -O project -Q prjquota /dev/block-device
    
  • 确保根文件系统(或可选的运行时文件系统)为 在启用项目配额的情况下安装。对于XFS和ext4fs, mount option is named prjquota.

扩展资源

扩展资源是标准资源名称,在 kubernetes.io 域。它们允许集群运营商做广告,用户可以 消耗非Kubernetes内置资源。

使用扩展资源需要两个步骤。一,集群 操作员必须播发扩展资源。其次,用户必须要求 捕鱼大亨网络版中的扩展资源。

管理扩展资源

节点级扩展资源

节点级扩展资源绑定到节点。

设备插件托管资源

看到 设备 Plugin 有关如何在每个节点上播发设备插件托管资源的信息。

其他资源

要播发新的节点级扩展资源,集群运营商可以 submit a PATCH HTTP 请求 to 的 API server to specify 的 available quantity 在 的 status.capacity for a node 在 的 cluster. After this operation, 的 node's status.capacity will 在clude a new resource. 的 status.allocatable 字段会使用新资源自动更新 由kubelet异步进行。请注意,因为调度程序使用该节点 status.allocatable 评估捕鱼大亨网络版适合性时的价值,可能会短暂 在用新资源修补节点容量和第一个捕鱼大亨网络版之间延迟 请求在该节点上调度资源。

例:

Here is an example showing how to use curl to form an HTTP 请求 that advertises five "example.com/foo" 资源 on node k8s-node-1 whose master is k8s-master.

curl --header "Content-Type: application/json-patch+json" \
--request PATCH \
--data '[{"op": "add", "path": "/status/capacity/example.com~1foo", "value": "5"}]' \
http://k8s-master:8080/api/v1/nodes/k8s-node-1/status
注意: In 的 preceding 请求, ~1 is 的 encoding for 的 character / 在补丁路径中。 JSON-Patch中的操作路径值被解释为 JSON指针。有关更多详细信息,请参见 IETF RFC 6901第3节.

集群级扩展资源

群集级别的扩展资源未绑定到节点。他们通常被管理 由调度程序扩展程序处理,这些程序处理资源消耗和资源配额。

您可以指定由调度程序扩展程序处理的扩展资源 in 调度策略 configuration.

例:

调度程序策略的以下配置表明 群集级别的扩展资源“ example.com/foo”由调度程序处理 extender.

  • 仅当捕鱼大亨网络版请求时,调度程序才将捕鱼大亨网络版发送到调度程序扩展程序 "example.com/foo".
  • ignoredByScheduler field specifies that 的 scheduler does not check the "example.com/foo" resource 在 its 荚FitsResources predicate.
{
  "kind": "Policy",
  "apiVersion": "v1",
  "extenders": [
    {
      "urlPrefix":"<extender-endpoint>",
      "bindVerb": "bind",
      "managedResources": [
        {
          "name": "example.com/foo",
          "ignoredByScheduler": true
        }
      ]
    }
  ]
}

消耗扩展资源

用户可以使用捕鱼大亨网络版规范中的扩展资源,就像CPU和内存一样。 调度程序负责资源核算,因此 可用数量同时分配给捕鱼大亨网络版。

API服务器将扩展资源的数量限制为整数。 Examples of 有效 quantities are 3, 3000m3Ki. 示例 无效 quantities are 0.51500m.

注意: 扩展资源取代了Opaque整数资源。 Users can use any domain name prefix other than kubernetes.io which is reserved.

要使用捕鱼大亨网络版中的扩展资源,请包含资源名称作为键 in 的 spec.containers[].resources.limits map 在 的 container spec.

注意: 扩展资源不能过量使用,因此请求和限制 如果两者都在容器规范中,则必须相等。

仅当满足所有资源请求(包括 CPU, 记忆 和 any extended 资源。 的 荚 remains 在 的 PENDING state 只要不能满足资源请求。

例:

下面的捕鱼大亨网络版请求2个CPU和1个“ example.com/foo”(扩展资源)。

apiVersion: v1
kind: 
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: myimage
    资源:
      请求s:
        中央处理器: 2
        example.com/foo: 1
      限制s:
        example.com/foo: 1

PID限制

进程ID(PID)限制允许对kubelet进行配置,以限制给定捕鱼大亨网络版可以消耗的PID数量。看到 限位 有关信息。

故障排除

我的捕鱼大亨网络版正在挂起,事件消息失败

如果调度程序找不到适合捕鱼大亨网络版的任何节点,则捕鱼大亨网络版将保留 计划外直到找到一个地方。每次 调度程序无法为捕鱼大亨网络版找到位置,如下所示:

Kubectl describe pod frontend | grep -A 3 Events
Events:
  FirstSeen LastSeen   Count  From          Subobject   PathReason      Message
  36s   5s     6      {scheduler }              FailedScheduling  Failed for reason 荚ExceedsFreeCPU 和 possibly others

在前面的示例中,由于以下原因,无法调度名为“ frontend”的捕鱼大亨网络版: 节点上的CPU资源不足。类似的错误消息也可以建议 因内存不足(捕鱼大亨网络版ExceedsFreeMemory)而失败。一般来说,如果是豆荚 暂挂此类消息,可以尝试以下几种方法:

  • 将更多节点添加到群集。
  • 终止不需要的捕鱼大亨网络版,以便为未完成的捕鱼大亨网络版腾出空间。
  • 检查捕鱼大亨网络版是否不大于所有节点。例如,如果所有 nodes have a capacity of 中央处理器: 1, 的n a 荚 with a 请求 of 中央处理器: 1.1 will never be scheduled.

您可以检查节点容量和通过 Kubectl describe nodes 命令。例如:

Kubectl describe nodes e2e-test-node-pool-4lw4
Name:            e2e-test-node-pool-4lw4
[ ... lines removed for clarity ...]
Capacity:
 中央处理器:                               2
 记忆:                            7679792Ki
 pods:                              110
Allocatable:
 中央处理器:                               1800m
 记忆:                            7474992Ki
 pods:                              110
[ ... lines removed for clarity ...]
Non-terminated 豆荚:        (5 在 total)
  Namespace    Name                                  中央处理器 Requests  中央处理器 Limits  Memory Requests  Memory Limits
  ---------    ----                                  ------------  ----------  ---------------  -------------
  kube-system  fluentd-gcp-v1.38-28bv1               100m (5%)     0 (0%)      200Mi (2%)       200Mi (2%)
  kube-system  kube-dns-3297075139-61lj3             260m (13%)    0 (0%)      100Mi (1%)       170Mi (2%)
  kube-system  库贝代理-e2e-test-...               100m (5%)     0 (0%)      0 (0%)           0 (0%)
  kube-system  monitoring-influxdb-grafana-v4-z1m12  200m (10%)    200m (10%)  600Mi (8%)       600Mi (8%)
  kube-system  node-problem-detector-v0.1-fj7m3      20m (1%)      200m (10%)  20Mi (0%)        100Mi (1%)
Allocated 资源:
  (Total 限制s may be over 100 percent, i.e., overcommitted.)
  中央处理器 Requests    中央处理器 Limits    Memory Requests    Memory Limits
  ------------    ----------    ---------------    -------------
  680m (34%)      400m (20%)    920Mi (11%)        1070Mi (13%)

在前面的输出中,您可以看到捕鱼大亨网络版请求的长度超过1120m CPU或6.23Gi的内存,它将不适合该节点。

By looking at 的 豆荚 section, you can see which 豆荚 are taking up space on the node.

豆荚可用的资源量少于节点容量,因为 system daemons use a portion of 的 available 资源。 的 allocatable field 节点状态 给出捕鱼大亨网络版可用的资源量。有关更多信息,请参见 节点可分配资源.

资源配额 可以配置功能 限制可以消耗的资源总量。如果结合使用 使用名称空间,它可以防止一个团队占用所有资源。

我的容器已终止

您的容器可能因为资源不足而被终止。去检查 容器是否由于达到资源限制而被杀死,请致电 Kubectl describe pod 在感兴趣的豆荚上:

Kubectl describe pod simmemleak-hra99
Name:                           simmemleak-hra99
Namespace:                      default
Image(s):                       saadali/simmemleak
Node:                           kubernetes-node-tf0f/10.240.216.66
Labels:                         name=simmemleak
Status:                         Running
Reason:
Message:
IP:                             10.244.2.75
Replication 控制器:        simmemleak (1/1 replicas created)
Containers:
  simmemleak:
    Image:  saadali/simmemleak
    Limits:
      中央处理器:                      100m
      记忆:                   50Mi
    State:                      Running
      Started:                  Tue, 07 Jul 2015 12:54:41 -0700
    Last Termination State:     Terminated
      Exit Code:                1
      Started:                  Fri, 07 Jul 2015 12:54:30 -0700
      Finished:                 Fri, 07 Jul 2015 12:54:33 -0700
    Ready:                      False
    Restart Count:              5
Conditions:
  Type      Status
  Ready     False
Events:
  FirstSeen                         LastSeen                         Count  From                              SubobjectPath                       Reason      Message
  Tue, 07 Jul 2015 12:53:51 -0700   Tue, 07 Jul 2015 12:53:51 -0700  1      {scheduler }                                                          scheduled   Successfully assigned simmemleak-hra99 to kubernetes-node-tf0f
  Tue, 07 Jul 2015 12:53:51 -0700   Tue, 07 Jul 2015 12:53:51 -0700  1      {kubelet kubernetes-node-tf0f}    implicitly required container POD   pulled      荚 container image "k8s.gcr.io/pause:0.8.0" already present on machine
  Tue, 07 Jul 2015 12:53:51 -0700   Tue, 07 Jul 2015 12:53:51 -0700  1      {kubelet kubernetes-node-tf0f}    implicitly required container POD   created     Created with docker id 6a41280f516d
  Tue, 07 Jul 2015 12:53:51 -0700   Tue, 07 Jul 2015 12:53:51 -0700  1      {kubelet kubernetes-node-tf0f}    implicitly required container POD   started     Started with docker id 6a41280f516d
  Tue, 07 Jul 2015 12:53:51 -0700   Tue, 07 Jul 2015 12:53:51 -0700  1      {kubelet kubernetes-node-tf0f}    spec.containers{simmemleak}         created     Created with docker id 87348f12526a

In 的 preceding example, 的 Restart Count: 5 在dicates that 的 simmemleak荚中的容器已终止,然后重新启动了五次。

You can call Kubectl get pod with 的 -o go-template=... option to fetch 的 status 先前终止的容器数量:

Kubectl get pod -o go-template='{{range.status.containerStatuses}}{{"Container Name: "}}{{.name}}{{"\r\nLastState: "}}{{.lastState}}{{end}}'  simmemleak-hra99
容器 Name: simmemleak
LastState: map[terminated:map[exitCode:137 reason:OOM Killed startedAt:2015-07-07T20:58:43Z finishedAt:2015-07-07T20:58:43Z containerID:docker://0e4095bba1feccdfe7ef9fb6ebffe972b4b14285d5acdec6f0d3ae8a22fad8b2]]

You can see that 的 容器 was terminated because of reason:OOM Killed, where OOM stands for Out Of Memory.

下一步是什么

上次修改时间:太平洋标准时间2020年12月17日晚上8:43: 修复manage-resources-containers.md中的拼写错误(815fe3790)