gpt4 book ai didi

kubernetes - 我可以在 GKE 上使用本地 SSD 在 Pod 内进行快速的临时存储吗?

转载 作者:行者123 更新时间:2023-12-04 01:40:05 25 4
gpt4 key购买 nike

我们在 GKE 上部署了一个应用程序,该应用程序将受益于磁盘上的快速临时存储。

GKE local SSD功能几乎是完美的,但是我们有多个 pod 副本,并且理想情况下希望在同一节点上支持多个 pod。使用 hostPath 挂载本地 SSD使这变得困难。

This 2016 SO question提到了安装的想法 emptyDir s 在本地 SSD 上这将是完美的,但我明白仍然不是一个选择。

有一个2017 mailing list thread有同样的想法,但答案仍然不是肯定的。

GCP docs for local SSDs最近更新以通过 PersistentVolume 描述使用它们抽象,这听起来很有希望。我可以用它来实现我所追求的吗?

这些示例似乎显示将完整的本地 SSD 安装为 PersistentVolume ,当我更喜欢为每个 pod 使用它的独立部分时。我们也不需要数据是持久的——一旦 pod 被删除,我们也会很高兴数据也被删除。

最佳答案

Kubernetes 1.11 添加了一个名为 Downward API support in volume subPath 的 alpha 功能,它允许使用向下 API 设置 volumeMount 子路径。

我通过创建 GKE 1.11 alpha 集群对此进行了测试:

gcloud container clusters create jh-test --enable-kubernetes-alpha
--zone=asia-southeast1-a --cluster-version=1.11.3-gke.18
--local-ssd-count=1 --machine-type=n1-standard-2 --num-nodes=2
--image-type=cos --disk-type=pd-ssd --disk-size=20Gi
--no-enable-basic-auth --no-issue-client-certificate
--no-enable-autoupgrade --no-enable-autorepair

然后我使用以下配置创建了一个 2-replica 部署:
      env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
volumeMounts:
- name: scratch-space
mountPath: /tmp/scratch
subPath: $(POD_NAME)
volumes:
- name: scratch-space
hostPath:
path: "/mnt/disks/ssd0"

如果我 kubectl exec进入每个 pod ,我有一个 /tmp/scratch目录是隔离的并且非常高效。

如果我通过 SSH 连接到主机,那么我可以看到每个 pod 的目录:
$ ls -l /mnt/disks/ssd0/
drwx--x--x 14 root root 4096 Dec 1 01:49 foo-6dc57cb589-nwbjw
drwx--x--x 14 root root 4096 Dec 1 01:50 foo-857656f4-dzzzl

我还尝试将部署应用到非 alpha GKE 1.11 集群,但 SSD 内容最终看起来像这样:
$ ls -l /mnt/disks/ssd0/
drwxr-xr-x 2 root root 4096 Dec 1 04:51 '$(POD_NAME)'

不幸的是,在 alpha 集群上运行我们的工作负载是不现实的,所以这对我们来说还不是一个实用的解决方案。我们将不得不等待该功能达到测试版并在标准 GKE 集群上可用。似乎是 slowly progressing ,虽然 API will probably change slightly .

对于 kubernetes 1.14, volumeMounts 的语法已更改为使用新的 subPathExpr field 。该功能仍然是 alpha-only:
      env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
volumeMounts:
- name: scratch-space
mountPath: /tmp/scratch
subPathExpr: $(POD_NAME)
volumes:
- name: scratch-space
hostPath:
path: "/mnt/disks/ssd0"

关于kubernetes - 我可以在 GKE 上使用本地 SSD 在 Pod 内进行快速的临时存储吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53550287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com