74

在探索 Kubernetes 模板的 yaml 定义时,我偶然发现了不同的大小定义。首先我认为这是关于 apiVersions 但它们是相同的。那么那里有什么区别呢?当两者相同时,哪个是正确的?

storage: 5Gstorage: 5Gi

volumeClaimTemplates:
  - metadata:
      name: mongo-persistent-storage
    spec:
      resources:
        requests:
          storage: 2Gi

详细看这里: https ://github.com/cvallance/mongo-k8s-sidecar/blob/master/example/StatefulSet/mongo-statefulset.yaml

和这个:

 volumeClaimTemplates:
 - metadata:
     name: mongo-persistent-storage
   spec:
     resources:
       requests:
         storage: 5G

这里详细介绍:https ://github.com/openebs/openebs/blob/master/k8s/demo/mongodb/mongo-statefulset.yml

4

4 回答 4

86

来自Kubernetes 源代码

内存限制和请求以字节为单位。您可以使用以下后缀之一将内存表示为普通整数或定点整数:E、P、T、G、M、K。您还可以使用 2 的幂等值:Ei、Pi、Ti , 吉, 米, 基。例如,以下表示大致相同的值:

128974848、129e6、129M、123Mi

所以这些是“双字节”对应物,如 user2864740 评论。

关于这些数量级的一些信息:

kibibyte 旨在替换那些计算机科学上下文中的千字节,其中千字节一词用于表示 1024 字节。将千字节解释为表示 1024 字节, 与前缀千 (1000) 的 SI 定义相冲突,过去很常见。

因此,如您所见,5G 意味着 5 GB,而 5Gi 意味着 5 GB。它们相当于:

  • 5 G = 5000000 KB / 5000 MB
  • 5 Gi = 5368709.12 KB / 5368.70 MB

因此,就大小而言,它们并不相同。

于 2018-06-11T19:49:31.340 回答
28

确切地说,其中一个(G)是十的幂,而另一个(Gi)是二的幂。所以,

  • 10^3 是十的幂。结果是1000,或者1G
  • 2^10 是二的幂。结果是 1024,或 1Gi
于 2018-06-11T19:51:22.337 回答
12

这些是不同的单位——一个是二进制前缀,另一个是十进制前缀

简单地说,M、G、T 等单位是基于 10 的幂 - 1000 的倍数。 Mi、Gi、Ti 等单位是基于 2 的幂 - 1024 的倍数。

于 2018-06-11T20:14:24.840 回答
5

“千字节”等于 1024 或 2^10 个字节。很简单,但“千字节”不也是 1024 字节吗?嗯,有时是的。根据国际单位制的定义,前缀“kilo”指的是 1000 或 10^3。大多数存储制造商以 10 为单位测量和标记容量(1 KB = 1000 字节;1 MB = 1000 KB;1 GB = 1000 MB;1 TB = 1000 GB)。然而,RAM 供应商和大多数操作系统使用基数 2(1 KB = 1024 字节;1 MB = 1024 KB;1 GB = 1024 MB;1 TB = 1024 GB)。(一个值得注意的例外是 macOS,它自 OS X 10.6 以来一直使用基数 10。)因此,为了了解“千兆字节”的确切含义,您需要知道使用该词的上下文。如果您谈论的是原始硬盘容量,那么千兆字节就是 1000000000 字节。

链接到源。

于 2020-09-17T11:58:40.853 回答