Docker Kubernetes单容器节点体系结构
我对kubernetes还不太熟悉,因为我了解cherry围绕这个话题挑选的很多东西,有些东西仍然很难组合起来 我有以下项目设置,需要一个关于什么是设置我的k8集群的最佳方式的架构建议 我现在有两个应用程序:API-APP和WORKER-APP,它们都有大量的资源消耗,所以我需要为一个应用程序pod保留一个节点 我总共创建了6个节点,这样使用replicationcontroller复制的3个API-APP和使用replicationcontroller复制的3个WORKER-APP都可以拥有自己的节点,它们使用大约90%的CPU/内存 目前k8只是将它们部署到任意一个节点上,有时我会遇到这样的情况:我的3个API-APP都在1个节点上,而我有2个节点什么都不做 有没有办法指定我希望为一个应用程序保留一个节点 我已经考虑过指定请求/限制,但要么什么都没有发生,要么我做错了什么 yaml文件:Docker Kubernetes单容器节点体系结构,docker,kubernetes,yaml,azure-container-service,Docker,Kubernetes,Yaml,Azure Container Service,我对kubernetes还不太熟悉,因为我了解cherry围绕这个话题挑选的很多东西,有些东西仍然很难组合起来 我有以下项目设置,需要一个关于什么是设置我的k8集群的最佳方式的架构建议 我现在有两个应用程序:API-APP和WORKER-APP,它们都有大量的资源消耗,所以我需要为一个应用程序pod保留一个节点 我总共创建了6个节点,这样使用replicationcontroller复制的3个API-APP和使用replicationcontroller复制的3个WORKER-APP都可以拥有自
# RC for svc1
kind: ReplicationController
apiVersion: v1
metadata:
name: APP-API
spec:
replicas: 3
selector:
template:
metadata:
labels:
app: APP-API
spec:
containers:
- name: APP-API
image: SOME-IMAGE
resources:
limits:
cpu: "7000m"
requests:
cpu: "7000m"
env:
- name: APP_SVC
value: APP-API
ports:
- containerPort: 80
protocol: TCP
---
# Service for svc1
kind: Service
apiVersion: v1
metadata:
labels:
app: APP-API
name: APP-API
spec:
type: ClusterIP
ports:
- port: 80
name: http
selector:
app: APP-API
我的机器都有8个内核,所以在本例中,我试图告诉它请求7个内核,但什么都没有发生
我遇到了这个问题,这让我找到了正确的方向。豆荚间亲和力和反亲和力正是我想要的。它允许我根据yaml文件中提供的标记键/值,确保没有2个应用程序在同一节点上运行
我的yaml最终看起来非常相似:
apiVersion: apps/v1beta1 # for versions before 1.6.0 use extensions/v1beta1
kind: Deployment
metadata:
name: redis-cache
spec:
replicas: 3
template:
metadata:
labels:
app: store
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- store
topologyKey: "kubernetes.io/hostname"
containers:
- name: redis-server
image: redis:3.2-alpine