Docker Swarm 관리 문제

Docker Swarm 관리 문제

3개 노드 docker swarm 클러스터가 있고 컨테이너가 3개 노드 모두에 배포되고 있습니다.

질문이 2개 있습니다

1] node1은 관리자이지만 여전히 컨테이너를 처리하므로 더 이상 그렇게 하고 싶지 않습니다. 노드 2와 노드 3은 작업 노드이며 Centos 7에 배포됩니다. Docker 버전은 17입니다...

2] node3다시 시작하면 모든 컨테이너가 자동으로 노드 1과 노드 2로 이동되지만 노드 3이 클러스터에 합류하면 컨테이너는 자동으로 노드 3으로 다시 이동되지 않으며 로드는 노드 1과 노드 2에서 처리됩니다. 이것을 어떻게 피할 수 있습니까?

답변1

특정 노드에서 컨테이너를 실행하지 않으려면 다음을 수행할 수 있습니다.흘러가다그것

docker node update swarm-01.local --availability drain

이렇게 하면 클러스터(클러스터) 모드에서 실행 중인 모든 컨테이너가 사용 가능한 다른 노드로 이동됩니다. Swarm 인식(시작) docker run명령을 지원하지 않는 컨테이너는 계속해서 그곳에서 실행됩니다.

두 번째 질문에 설명된 동작은 컨테이너를 불필요하게 이동(중지/시작)하여 최종 사용자에게 서비스 중단을 초래하는 것을 방지하기 위한 것입니다. 참고:https://docs.docker.com/engine/swarm/admin_guide/#force-the-swarm-to-rebalance

Swarm에 새 노드를 추가하거나 일정 기간 동안 노드를 사용할 수 없었다가 노드를 Swarm에 다시 연결하는 경우 Swarm은 작업 부하를 유휴 노드에 자동으로 배포하지 않습니다. 이것은 디자인 결정입니다. 클러스터가 균형을 유지하기 위해 정기적으로 작업을 다른 노드로 이동하면 해당 작업을 사용하는 클라이언트가 중단됩니다. 목표는 클러스터 간의 균형을 유지하기 위해 실행 중인 서비스를 중단하지 않는 것입니다. 새 작업이 시작되거나 작업이 실행 중인 노드를 사용할 수 없게 되면 사용량이 적은 노드에 작업이 할당됩니다. 목표는 최종 사용자에게 미치는 영향을 최소화하면서 궁극적인 균형을 이루는 것입니다.

관련 정보