DNS 관련 kubernetes join 에러

Sbae·2023년 8월 25일
0
post-thumbnail

테스트 환경

  • openstack
  • controlplane node 3대
    • 2core
    • 4GB
    • 20GB
    • centos7.9 2대
    • ubuntu2204 1대
  • worker node 2대
    • 2core
    • 4GB
    • 20GB
    • centos7.9 1대
    • ubuntu2204 1대
  • 필수 패키지
    • iproute2(ubuntu2204)
    • iproute(centos7, centos8)
    • iproute-tc(centos8)

문제사항

폐쇄망에서 앤시블을 이용한 쿠버네티스 설치 시 worker node(centos7.9)에서 join 시도 시 hostname을 찾지 못하여 지속적인 NotReady 상태가 되는 문제 발생

해결단계

1차

DNS를 찾지 못하는 문제임으로 /etc/hosts를 수정하면 된다고 생각했지만!
인생이란 원래...

똑같이 DNS를 못 찾는 문제 발생

2차

centos7 worker node에서
journalctl -xe | grep err/var/log/messages의 에러로그를 확인하던 도중 DNS 관련 되서 눈에 보이는 kubelet에 /run/systemd/resolve/resolv.conf을 찾을 수 없다는 에러를 발견하여

그럼 kubelet이 실행 될 때 DNS를 못찾는게 문제가 아닐까?

/var/lib/kubelet/config.yaml를 확인 후
ubuntu2204에는 resolvConf: /run/systemd/resolve/resolv.conf 옵션이 있고
centos에는 없어야하지만 centos worker node에 해당 옵션이 존재하는 것을 확인하여(저런게 없는데 kubelet 재시작 후 join하니 잘 연결됨

그래서 앤시블 소스상에서 KUBELET_EXTRA_ARGS로 ubuntu면 해당 옵션을 넣고
centos면 기본인 /etc/resolv.conf경로로 설정 했더니 잘 된다.

왜?

왜 저 옵션이 centos에서 박혀있을까? 앤시블에서 내가 뭐 잘 못 돌렸나...?

추가

/etc/hosts에 값은 안넣어도 된다.

profile
끄적이는 일반인

0개의 댓글