【问题标题】:How to tag nodes in GKE, then assign pods to nodes?如何在 GKE 中标记节点,然后将 pod 分配给节点?
【发布时间】:2021-10-01 06:50:52
【问题描述】:

我在 GKE 中有标准的 3 节点池。

我想将这些节点中的 1 个标记为 devtest,因此命名空间 devqastage 中的所有 pod 都最好加载到该节点中。

命名空间 prod 中的 pod 将使用其他可用节点,无论是 2、3 还是更多可用节点。

基本上我想限制非重要部署的 CPU / 内存负载以影响 prod 部署。

如何自动执行此操作?因为当 Google 更新节点(用于软件更新)时,会创建一个新节点。

【问题讨论】:

  • 您在下面的评论中提到来自一个环境的进程正在杀死节点,这正在影响其他环境;在单独的集群中运行这些环境是否更有意义?

标签: kubernetes google-kubernetes-engine


【解决方案1】:

如果你想限制 CPU/内存,在节点上使用标签不是正确的方法。而是在 dev/test 命名空间上设置配额。

https://kubernetes.io/docs/concepts/policy/resource-quotas/

基本上,它看起来像这样

apiVersion: v1
  kind: ResourceQuota
  metadata:
    name: low-priority
  spec:
    hard:
      cpu: "5"
      memory: 1Gi
      pods: "10"

我也有一篇关于此的博文:https://cloud.google.com/blog/products/containers-kubernetes/kubernetes-best-practices-resource-requests-and-limits

编辑:

如果你真的想这样做,我认为最好的方法是使用node pools,然后使用tag the pods to go into a specific pool

【讨论】:

  • 谢谢,我们一直在随机重启节点......所以我想知道这是否是由我们作为 pod 的 NFS 服务器引起的......所以我们想避免 QA / DEV / STAGE deploy 杀死 PROD 所在的节点...
  • @JorgeeFG 我对我的答案进行了编辑,但如果是这种情况,最好的办法是使用节点池,或者更好的是创建两个 GKE 集群。有两个集群,风险为零。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多