首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头工人群:没有合适的节点(每个节点的最大副本超过)为什么?

码头工人群:没有合适的节点(每个节点的最大副本超过)为什么?
EN

Stack Overflow用户
提问于 2022-07-25 22:53:10
回答 1查看 221关注 0票数 0

我有这个dockr复合的。

代码语言:javascript
复制
version: '3.8'
services:
  mongo:
    image: mongo
    restart: always
    env_file:
      - ./.env
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_USERNAME}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD}
    volumes:
      - mongo-db:/data/db
    ports:
      - "27017:27017"

  node-app:
    depends_on:
      - mongo
    image: USERNAME/PRIVATE_REPO_NAME:0.1
    env_file:
      - ./.env
    deploy:
      replicas: 2
      placement:
        max_replicas_per_node: 1
      update_config:
        parallelism: 1
        delay: 10s
      resources:
        limits:
          cpus: '0.50'
          memory: 512M
        reservations:
          cpus: '0.25'
          memory: 256M

  nginx:
    depends_on:
      - node-app
    image: nginx:stable-alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf

  mysql:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_USER: admin
      MYSQL_PASSWORD: password
      MYSQL_ALLOW_EMPTY_PASSWORD: 1
      MYSQL_DATABASE: db
    ports: 
      - 3306:3306
      - 33060:33060
    volumes:
      - mysql-db:/var/lib/mysql

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080
    depends_on: 
      - mysql

  portainer:
    image: portainer/portainer-ce:latest
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./portainer-data:/data
    ports:
      - 9000:9000

  volumes:
    mongo-db:
    mysql-db:

和码头-合成-生产。

代码语言:javascript
复制
version: '3.8'
services:
  node-app:
    build:
      context: .
      target: production
    environment:
      - NODE_ENV=production
    command: npm start

Dockerfile

代码语言:javascript
复制
FROM node:14 as base

FROM base as production
WORKDIR /app
COPY package.json .
RUN npm install --only=production
COPY . .
EXPOSE 4000

FROM base as development
....

Nginx default.conf

代码语言:javascript
复制
server { # simple reverse-proxy
  listen       80;

  # pass requests for dynamic content to rails/turbogears/zope, et al
  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://node-app:4000;
    proxy_redirect off;
  }
}

我构建映像并将其推送到专用码头回购,然后在VPS (1 vCPU和1 GM )上拉出映像,然后运行

代码语言:javascript
复制
docker stack deploy -c docker-compose.yml -c docker-compose-prod.yml nodestack --with-registry-auth

但是我运行docker stack ps nodestack我得到

代码语言:javascript
复制
is7hybeurfgb   nodestack_adminer.1     adminer:latest                  docker-desktop   Running         Running about a minute ago
l92hsxrnpznh   nodestack_mongo.1       mongo:latest                    docker-desktop   Running         Preparing about a minute ago
2sg4x4lzk5uy   nodestack_mysql.1       mysql:latest                    docker-desktop   Running         Running 2 minutes ago
88vnttgk5grb   nodestack_nginx.1       nginx:stable-alpine             docker-desktop   Running         Running 2 minutes ago
7l5bm8tnjatv   nodestack_node-app.1    USERNAME/PRIVATE_REPO_NAME:0.1   docker-desktop   Running         Running 2 minutes ago
4xn3odusd265   nodestack_node-app.2    USERNAME/PRIVATE_REPO_NAME:0.1                    Running         Pending 2 minutes ago          "no suitable node (max replica…"
o38en2hwnikp   nodestack_portainer.1   portainer/portainer-ce:latest   docker-desktop   Running         Running about a minute ago

而且它不会用新的更新来重新创建节点。为什么我要获得no suitable node (max replicas per node limit exceed),以及如何修复它以保持每个副本中只有一个节点运行两个副本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-25 23:22:53

我认为您混淆了群集集群中的节点和容器中的NodeJS实例。他们之间没有任何关系。从这一产出:

代码语言:javascript
复制
7l5bm8tnjatv   nodestack_node-app.1    USERNAME/PRIVATE_REPO_NAME:0.1   docker-desktop   Running         Running 2 minutes ago
4xn3odusd265   nodestack_node-app.2    USERNAME/PRIVATE_REPO_NAME:0.1                    Running         Pending 2 minutes ago          "no suitable node (max replica…"

看起来,您在docker-desktop上运行,其中包含一个节点群集群。你可以在docker node ls上看到这一点。若要在桌面上部署多个容器,请删除约束:

代码语言:javascript
复制
        max_replicas_per_node: 1

或设置多个群集节点(VM)并部署到该集群。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73116115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档