kubernetes - 如何确保 GKE 中我的节点上只运行一个 pod?
问题描述
在我的应用程序中,我有一个休息服务器,它通过命令行与数据库进行本地交互(说来话长)。无论如何,数据库安装在节点上的本地 ssd 中。我可以保证只有这种类型的 pod 会被安排在节点池中,因为我已经污染了节点并为我的 pod 添加了容差。
我想知道的是,如何防止 kubernetes 在单个节点上调度我的 pod 的多个实例?我想避免这种情况,因为我希望我的 pod 能够消耗尽可能多的 CPU,而且我也不希望多个 pod 通过本地 ssd 进行交互。
如何防止将多个我的类型的 pod 调度到节点上?起初我在考虑守护程序集,但我想,我想将我的节点池设置为自动扩展,这样当我的池中有 n 个节点并且我请求 n+1 个副本时,节点池会自动扩展向上。
解决方案
您可以与或Daemonsets
结合使用。或者,您可以在您的 s 上进行配置,例如:nodeSelector
affinity
podAntiAffinity
Pod
apiVersion: apps/v1
kind: Deployment
metadata:
name: rest-server
spec:
selector:
matchLabels:
app: rest-server
replicas: 3
template:
metadata:
labels:
app: rest-server
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- rest-server
topologyKey: "kubernetes.io/hostname"
containers:
- name: rest-server
image: nginx:1.12-alpine
推荐阅读
- .net - 无法从引用的 dll 调用函数
- junit5 - 如何用junit5定义@Rule和@ClassRule
- javascript - Framework7 Stepper buttons not working
- php - Angular 6 HttpClient 和 PHP 错误(未知 url)的 Http 失败响应:0 未知错误
- android - onSaveInstanceState 后无法执行此操作 - android
- css - CSS:屏幕图像的一半和屏幕背景颜色的一半,上面有一个容器
- docker - Docker Compose - Network_mode:Service: - 2 个容器无法相互通信
- julia - 星历表上的 Julia 程序显示的答案不充分
- javafx - (JavaFX) - 蛇和梯子游戏中的蛇迭代 2D 矩阵
- spring-data-jpa - 如何将 application.property 变量值访问到测试类