关于节点池
节点池是集群中全都具有相同配置的一组节点。通常,如果 Pod 具有不同的资源要求,您可以定义单独的节点池。例如,apigee-cassandra
Pod 需要永久性存储空间,而其他 Apigee Hybrid Pod 则不需要。
本主题介绍如何为 Hybrid 安装配置专用节点池。
使用默认 nodeSelector
最佳做法是设置两个专用节点池:一个用于 Cassandra Pod,另一个用于所有其他运行时 Pod。使用默认 nodeSelector 配置,安装程序会将 Cassandra Pod 分配给名为 apigee-data
的有状态节点池,并将所有其他 Pod 分配给名为 apigee-runtime
的无状态节点池。您只需要使用这些名称创建节点池,Apigee Hybrid 就会为您处理 Pod 计划详细信息:
默认节点池名称 | 说明 |
---|---|
apigee-data |
有状态节点池。 |
apigee-runtime |
无状态节点池。 |
以下是默认的 nodeSelector
配置。apigeeData
属性指定 Cassandra Pod 的节点池。apigeeRuntime
指定所有其他 Pod 的节点池。您可以在替换文件中替换这些默认设置,如本主题后面所述:
nodeSelector: requiredForScheduling: true apigeeRuntime: key: "cloud.google.com/gke-nodepool" value: "apigee-runtime" apigeeData: key: "cloud.google.com/gke-nodepool" value: "apigee-data"
同样,如需确保将 Pod 计划到正确的节点,您只需创建两个名称分别为 apigee-data
和 apigee-runtime
的节点池。
requiredForScheduling 属性
nodeSelector
配置部分具有名为 requiredForScheduling
的属性:
nodeSelector: requiredForScheduling: false apigeeRuntime: key: "cloud.google.com/gke-nodepool" value: "apigee-runtime" apigeeData: key: "cloud.google.com/gke-nodepool" value: "apigee-data"
如果设置为 false
(默认值),则无论是否使用所需名称定义节点池,系统都会计划底层 Pod。这意味着,如果您忘记创建节点池,或者不慎命名 apigee-runtime
或 apigee-data
以外的节点池,则 Hybrid 运行时安装将成功。Kubernetes 将决定在哪里运行您的 Pod。
如果将 requiredForScheduling
设置为 true
(默认值),则安装将会失败,除非有与配置的 nodeSelector
键和值匹配的节点池。
使用自定义节点池名称
如果您不想使用默认名称的节点池,则可以使用自定义名称创建节点池,并在 nodeSelector
节中指定这些名称。例如,以下配置会将 Cassandra Pod 分配给名为 my-cassandra-pool
的池,并将其他所有 Pod 分配给名为 my-runtime-pool
的池:
nodeSelector: requiredForScheduling: false apigeeRuntime: key: "cloud.google.com/gke-nodepool" value: "my-runtime-pool" apigeeData: key: "cloud.google.com/gke-nodepool" value: "my-cassandra-pool"
替换 GKE 上特定组件的节点池
您还可以在单个组件级别替换节点池配置。例如,以下配置会将值为 apigee-custom
的节点池分配给 runtime
组件:
runtime: nodeSelector: key: cloud.google.com/gke-nodepool value: apigee-custom
您可以在以下任何组件中指定自定义节点池:
istio
mart
synchronizer
runtime
cassandra
udca
logger
GKE 节点池配置
在 GKE 中,节点池必须具有您在创建池时提供的唯一名称,并且 GKE 会自动为每个节点添加如下标签:
cloud.google.com/gke-nodepool=THE_NODE_POOL_NAME
只要您创建了名为 apigee-data
和 apigee-runtime
的节点池,就不需要进一步配置。如果要使用自定义节点名称,请参阅使用自定义节点池名称。
Anthos 节点池配置
目前仅 Anthos 1.1.1 支持 Apigee Hybrid。此版本的 Anthos 不支持节点池功能;因此,您必须按照以下方式,手动为工作器节点添加标签。在 Hybrid 集群启动并运行后,执行以下步骤:
- 运行以下命令以获取集群中的工作器节点列表:
kubectl -n apigee get nodes
输出示例:
NAME STATUS ROLES AGE VERSION apigee-092d639a-4hqt Ready <none> 7d v1.14.6-gke.2 apigee-092d639a-ffd0 Ready <none> 7d v1.14.6-gke.2 apigee-109b55fc-5tjf Ready <none> 7d v1.14.6-gke.2 apigee-c2a9203a-8h27 Ready <none> 7d v1.14.6-gke.2 apigee-c70aedae-t366 Ready <none> 7d v1.14.6-gke.2 apigee-d349e89b-hv2b Ready <none> 7d v1.14.6-gke.2
- 为每个节点添加标签,以区分运行时节点和数据节点。
使用以下命令为节点添加标签:
kubectl label node NODE_NAME KEY=VALUE
例如:
$ kubectl label node apigee-092d639a-4hqt apigee.com/apigee-nodepool=apigee-runtime $ kubectl label node apigee-092d639a-ffd0 apigee.com/apigee-nodepool=apigee-runtime $ kubectl label node apigee-109b55fc-5tjf apigee.com/apigee-nodepool=apigee-runtime $ kubectl label node apigee-c2a9203a-8h27 apigee.com/apigee-nodepool=apigee-data $ kubectl label node apigee-c70aedae-t366 apigee.com/apigee-nodepool=apigee-data $ kubectl label node apigee-d349e89b-hv2b apigee.com/apigee-nodepool=apigee-data
替换 Anthos GKE 上特定组件的节点池
您还可以在 Anthos GKE 安装的各个组件级别替换节点池配置。例如,以下配置会将值为 apigee-custom
的节点池分配给 runtime
组件:
runtime: nodeSelector: key: apigee.com/apigee-nodepool value: apigee-custom
您可以在以下任何组件中指定自定义节点池:
istio
mart
synchronizer
runtime
cassandra
udca
logger