k8s 기본 네트워킹 cli
Kubernetes 운영자를 위한 리눅스 네트워크 명령어 정리
📌 목적: K8s 환경에서 네트워크 문제를 진단, 분석, 설정 변경을 위해 알아야 하는 필수 명령어와 활용 예시 정리
📅 마지막 업데이트: 2025-08-12
1. 필수 명령어
1.1 ip addr
(or ip a
)
네트워크 인터페이스(IP) 확인 및 설정
자주 쓰는 옵션
ip addr show
: 전체 인터페이스 IP 표시ip addr show eth0
: 특정 인터페이스만 표시ip addr add 192.168.0.10/24 dev eth0
: IP 추가ip addr del 192.168.0.10/24 dev eth0
: IP 삭제
사용 예시
# K8s 노드의 IP 확인
ip addr show eth0
# 특정 Pod가 붙은 인터페이스 찾기
ip addr | grep <PodIP>
- 사용 상황
- 노드 IP 문제 확인
- CNI 네트워크 인터페이스 상태 점검
- 서비스 VIP 확인
1.2 ip link
네트워크 인터페이스 상태 확인/관리
자주 쓰는 옵션
ip link show
: 모든 인터페이스 표시ip link set eth0 up
: 인터페이스 활성화ip link set eth0 down
: 인터페이스 비활성화
사용 예시
# eth0 비활성화 후 다시 활성화
ip link set eth0 down
ip link set eth0 up
- 사용 상황
- NIC가 Down 상태일 때 수동 복구
- CNI 브리지 연결 상태 확인
1.3 ip route
라우팅 테이블 확인/관리
자주 쓰는 옵션
ip route show
: 현재 라우팅 테이블 표시ip route add 10.0.0.0/24 via 192.168.0.1
: 경로 추가ip route del 10.0.0.0/24
: 경로 삭제
사용 예시
# Pod 네트워크 경로 확인
ip route show | grep 10.244.
# 외부 API 서버 접근이 안될 때 라우팅 확인
ip route
- 사용 상황
- 노드 ↔ Pod ↔ 외부 간 통신 경로 점검
- MetalLB, Calico 등 CNI 설정 문제 추적
1.4 ping
네트워크 연결 여부 테스트
자주 쓰는 옵션
ping -c 4 <IP>
: 4번만 테스트ping -I eth0 <IP>
: 특정 인터페이스 지정
사용 예시
# 마스터 노드 ↔ 워커 노드 통신 확인
ping -c 4 192.168.1.21
# 특정 인터페이스로 외부 DNS 테스트
ping -I eth1 8.8.8.8
- 사용 상황
- 노드 간 통신 체크
- 외부 인터넷 연결 확인
- 특정 네트워크 카드로만 테스트
1.5 traceroute
/ tracepath
패킷 경로 추적
자주 쓰는 옵션
traceroute <도메인>
: 기본 경로 추적traceroute -I
: ICMP 기반 추적tracepath <도메인>
: root 권한 없이 경로 확인
사용 예시
# API 서버까지 경로 확인
traceroute apiserver.example.com
- 사용 상황
- 어디서 네트워크가 끊기는지 파악
- ISP 구간 병목 확인
1.6 nslookup
DNS 조회
자주 쓰는 옵션
nslookup <도메인>
: 기본 조회nslookup <도메인> <DNS서버>
: 특정 DNS 서버로 조회
사용 예시
# K8s 서비스 도메인 확인
nslookup kubernetes.default.svc.cluster.local
- 사용 상황
- DNS 해석 문제 확인
- CoreDNS 작동 여부 점검
1.7 dig
고급 DNS 조회 (nslookup보다 세부적)
자주 쓰는 옵션
dig <도메인>
: 기본 조회dig @8.8.8.8 <도메인>
: 특정 DNS 서버dig +short <도메인>
: 간단한 출력dig <도메인> ANY
: 모든 레코드 조회
사용 예시
# CoreDNS 서버로 서비스 조회
dig @10.96.0.10 kubernetes.default.svc.cluster.local
- 사용 상황
- DNS 레코드 TTL, 타입 분석
- DNS 서버별 응답 비교
1.8 ss
(netstat 대체)
네트워크 연결 상태, 포트 확인
자주 쓰는 옵션
ss -lntp
: LISTEN 중인 TCP 포트 + 프로세스ss -ant
: 모든 TCP 연결ss -uan
: 모든 UDP 연결
사용 예시
# API 서버 포트 확인
ss -lntp | grep 6443
- 사용 상황
- 포트 오픈 상태 점검
- 특정 서비스의 프로세스 확인
1.9 curl
HTTP/HTTPS 요청 테스트
자주 쓰는 옵션
curl -v <URL>
: 요청/응답 상세curl -I <URL>
: HTTP 헤더만curl -k <URL>
: 인증서 무시
사용 예시
# Ingress 라우팅 확인
curl -v https://service.example.com
- 사용 상황
- API 엔드포인트 동작 확인
- HTTPS 인증서 유효성 테스트
1.10 nc
(netcat)
TCP/UDP 연결 테스트
자주 쓰는 옵션
nc -vz <IP> <PORT>
: 포트 열림 확인nc -l <PORT>
: 포트 리스닝
사용 예시
# 데이터베이스 포트 확인
nc -vz db.example.com 3306
- 사용 상황
- 방화벽 포트 개방 여부 체크
- 서비스 포트 연결 테스트
2. 추천(심화) 명령어
2.1 ethtool
NIC 속성 확인/변경
자주 쓰는 옵션
ethtool eth0
: 링크 상태, 속도 확인ethtool -S eth0
: 통계
사용 예시
# 인터페이스 속도 확인
ethtool eth0
- 사용 상황
- 링크 업/다운, 속도 불일치 문제 분석
2.2 mtr
ping + traceroute 실시간 모니터링
mtr google.com
- 사용 상황
- 경로 품질 지속 모니터링
- 패킷 손실 구간 파악
2.3 arp
ARP 캐시 확인
arp -n
- 사용 상황
- IP ↔ MAC 매핑 문제 확인
- ARP 스푸핑 의심 시 분석
2.4 tcpdump
패킷 캡처
tcpdump -i eth0 port 80 -w output.pcap
- 사용 상황
- DNS, HTTP, TCP 연결 문제 심층 분석
- Wireshark로 분석
2.5 brctl
브리지 네트워크 관리
brctl show
- 사용 상황
- Flannel, Calico 브리지 상태 확인
3. 상황별 명령어 조합 예시
DNS 안 될 때
kubectl exec -it pod-name -- cat /etc/resolv.conf
kubectl exec -it pod-name -- nslookup google.com
kubectl exec -it pod-name -- dig @8.8.8.8 google.com
API 서버 연결 안 될 때
ping master-node-ip
nc -vz master-node-ip 6443
ss -lntp | grep 6443
서비스 지연 시
mtr service.example.com
traceroute service.example.com
Pod ↔ 외부 트래픽 분석
tcpdump -i eth0 port 80 -w traffic.pcap