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 확인

네트워크 인터페이스 상태 확인/관리

  • 자주 쓰는 옵션

    • 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