docker - 将新节点池添加到GKE集群

标签 docker kubernetes google-cloud-platform google-kubernetes-engine

我正在运行配置为4vCPU和16 GB内存的单节点GKE群集。现在,我计划再添加一个节点池1 vCPU和3.75 GB的RAM。

现在在单个节点上,我正在使用具有磁盘连接的有状态集运行类似Elasticsearch,Redis,Rabbitmq的负载。

我尚未在Pod配置中添加任何亲和力和反亲和力。如果我要添加新节点,则可能会将某些广告连播安排到新节点。虽然我只打算在新Pod上运行无状态Pod。

有什么方法可以停止在新节点上停止ES,Redis或RabbitMQ而不增加亲和力或任何不想重新启动(Touch)pod或服务的事情。 ES,Redis,RabbitMQ只应停留在旧节点上。

最佳答案

nodeSelector kubectl patch可能是解决方案。

使用新标签

您必须使用以下命令首先用以下标签statefullnode=true标记运行全状态工作负载的节点:
kubectl label nodes <node-name> statefullnode=true
然后,您必须使用kubectl patch修补在此节点上运行的每个部署:

kubectl patch deployments nginx-deployment -p '{"spec": {"template": {"spec": {"nodeSelector": {"statefullnode": "true"}}}}}'

使用节点名称

如果您不想标记节点,则可以简单地使用节点名称作为nodeSelector的标签。
例如,如果您的节点名称为 my-gke-node ,则运行:
kubectl patch deployments nginx-deployment -p '{"spec": {"template": {"spec": {"nodeSelector": {"kubernetes.io/hostname": "my-gke-node"}}}}}'

运行kubectl get nodes以获取集群节点的名称。

关于docker - 将新节点池添加到GKE集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59608060/

相关文章:

kubernetes - Pod 与绑定(bind)本地持久卷的主机节点的关联性

kubernetes - 有没有办法回滚编辑后的 ​​kubernetes list 文件?

docker - webpack-dev-server 热加载不适用于 boot2docker

postgresql - 无法使用 docker compose 通过 postgresql 启动 FastAPI 服务器

docker - 在Minikube上运行镜像时应用特定的部署文件

google-cloud-platform - (Terraform、云运行)错误 : Forbidden Your client does not have permission to get URL/from this server

node.js - 使用 Speech-to-Text API 无法解决 "Requested entity was not found"错误

Docker 容器 RestartCount 不增加

docker - 如何保持Hello-world容器运行

amazon-web-services - 弹性Kubernetes服务AWS部署过程可避免停机