Docker Kubernetes单容器节点体系结构

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都可以拥有自

我对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文件:

# 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