/etc/hosts 에 관해서
/etc/hosts 완전 정리 (K8s 운영자 관점)
집/랩 환경에서 K8s를 굴릴 때 /etc/hosts
를 정확히 이해하면 “DNS가 안 잡히는 상황”, “부트스트랩 시 통신 안 됨”, “로컬 테스트 도메인 강제 매핑” 같은 문제를 빠르게 뚫을 수 있어요.
아래를 쭉 보면 역할 → 동작 원리 → 실전 설정 → K8s 특화 팁 순으로 정리돼 있습니다.
1) /etc/hosts
는 뭐 하는 파일?
- 로컬(host) 단에서 “이름 → IP”를 가장 먼저(보통) 해석하는 정적 매핑표
- 네트워크를 타지 않고 OS가 파일을 읽어서 즉시 해석
nsswitch.conf
순서에 따라 보통/etc/hosts
가 DNS보다 우선- DNS 레코드와 충돌 시
/etc/hosts
가 항상 이김
확인 명령:
getent hosts myname.local
2) 파일 형식과 기본 규칙
# IPv4 예시
192.168.219.151 master-node-1.home.lan master-node-1
# IPv6 예시
fe80::1234:abcd master-node-1-v6
- 주석은
#
이후 - 한 이름당 한 IP 원칙
- IPv4/IPv6 동시 사용 시 우선순서 확인 (
getent ahosts NAME
)
3) K8s에서 왜 중요한가?
- 부트스트랩/장애 시 DNS가 준비 전이어도 노드 간 통신 가능
- 고정 FQDN ↔ IP 매핑 가능
- 로컬 개발/테스트 시 특정 도메인을 내부 IP로 강제
단, K8s 서비스/파드 이름 해석은 CoreDNS가 담당
4) K8s 홈 클러스터 권장 패턴
4.1 호스트네임 & FQDN 정리
sudo hostnamectl set-hostname master-node-1.home.lan
hostname -f # master-node-1.home.lan
hostname -s # master-node-1
4.2 /etc/hosts
예시
127.0.0.1 localhost
127.0.1.1 master-node-1
192.168.219.151 master-node-1.home.lan master-node-1
192.168.219.181 worker-node-1.home.lan worker-node-1
192.168.219.182 worker-node-2.home.lan worker-node-2
192.168.219.183 worker-node-3.home.lan worker-node-3
192.168.219.200 harbor.home.lan
192.168.219.201 grafana.home.lan
192.168.219.202 argocd.home.lan
5) 안전한 수정 방법
# 백업
sudo cp /etc/hosts /etc/hosts.bak.$(date +%F)
# 편집
sudo nano /etc/hosts
# 추가 (명령 사용)
echo "192.168.219.151 master-node-1.home.lan master-node-1" | sudo tee -a /etc/hosts
# 검증
getent hosts master-node-1
ping -c1 master-node-1
6) 활용 패턴 예시
외부 DNS 건너뛰기
192.168.219.200 harbor.home.lan
→ 브라우저에서
https://harbor.home.lan
시 내부 IP로 바로 연결장애 시 우회
- DNS 장애 시 핵심 서비스 IP를
/etc/hosts
에 임시로 등록
- DNS 장애 시 핵심 서비스 IP를
관리용 별칭
192.168.219.151 m1 192.168.219.181 w1
7) Kubernetes 파드 /etc/hosts
- 노드
/etc/hosts
와 별개로 파드 전용 파일 제공 - 기존 파드는 노드 수정 후 자동 갱신 안 됨 → 재시작 필요
- 추가 엔트리는
hostAliases
사용
apiVersion: v1
kind: Pod
metadata:
name: demo
spec:
hostAliases:
- ip: "192.168.219.200"
hostnames:
- "harbor.home.lan"
containers:
- name: c
image: curlimages/curl
command: ["sleep","infinity"]
8) 흔한 함정 & 베스트 프랙티스
- 루프백 매핑 실수 주의
- 중복/상충 엔트리 금지
- DHCP 예약으로 IP 고정
*.svc.cluster.local
은 매핑하지 말 것- IPv6 우선순서 확인
/etc/hosts
권한 유지 (root:root 644
)
9) 문제 진단 체크리스트
hostname -f
가 기대한 FQDN인지?getent hosts <이름>
결과 확인/etc/nsswitch.conf
순서 확인 (files dns
)- 중복 매핑 없는지
- 파드 내부
/etc/hosts
내용 확인 - DHCP 예약 여부 확인
10) 빠른 템플릿
127.0.0.1 localhost
127.0.1.1 <this-node-shortname>
192.168.219.151 master-node-1.home.lan master-node-1
192.168.219.181 worker-node-1.home.lan worker-node-1
192.168.219.182 worker-node-2.home.lan worker-node-2
192.168.219.183 worker-node-3.home.lan worker-node-3
192.168.219.200 harbor.home.lan
192.168.219.201 grafana.home.lan
192.168.219.202 argocd.home.lan