Container/Kubernetes

[Kubernetes] kubespray로 ansible-playbook 명령어 실행 시 "assertion: groups.etcd | length is not divisibleby 2" 에러

Nirsa 2020. 4. 6. 10:12
반응형

 

  • kubespray "assertion: groups.etcd | length is not divvisibleby 2" 에러

kubespray 설치 후 ansible-playbook 명령어로 k8s 설치 진행 시 "assertion: groups.etcd | length is not divisibleby 2" 에러가 발생할 수 있습니다.

해당 에러는 아래 이미지와 같이 inventory.ini 파일에 지정한 etcd가 짝수인 경우에 발생할 수 있습니다.

kubespray/inventory/cluster/inventory.ini
에러를 유발 시키던 코드 : kubespray/roles/kubernetes/preinstall/tasks/0020-verify-settings.yml

 

이 에러를 해결하기 위해선 etcd를 홀수로 늘리기 위해 노드를 추가하거나, -e ignore_assert_errors=yes 옵션을 추가하여 해결할 수 있습니다. 저같은 경우 테스트용이기도 하고 노드를 더이상 추가 하기가 힘들어서 -e ignore_assert_errors=yes 옵션을 이용하여 해결 후 설치까지 확인 했습니다.

# ex
ansible-playbook -i kubespray/inventory/cluster/inventory.ini \
-v --become --become-user=root kubespray/cluster.yml -e ignore_assert_errors=yes

 

  • etcd는 홀수로 사용하는것을 권장 합니다.

짝수로 사용할 경우 스플릿 브레인(Split Brain) 현상이 발생하여 네트워크 단절로 인한 통신 장애 등 문제가 발생할 여지가 존재 합니다. 이러한 이유로 실제 서비스 환경에서는 etcd 클러스터를 홀수로 사용하는것이 좋습니다.

 

참고 사이트 : https://github.com/etcd-io/etcd/blob/master/Documentation/faq.md#what-is-failure-tolerance

 

반응형