쿠버네티스 네트워킹

2023. 12. 5. 14:00·Docker
  • Service Network
  • Pod Network

 

1-1) Pause Container

apiVersion: v1
kind: Pod
metadata:name: pod-pause
spec:nodeSelector:kubernetes.io/hostname: k8s-node1
  containers:
  - name: container1
	image: kubetm/p8000
	ports:
	- containerPort: 8000
  - name: container2
	image: kubetm/p8080
	ports:
	- containerPort: 8080

Pause Container 확인

docker ps | grep pod-pause

Pause Container 인터페이스 확인

docker ps | grep pod-pause


docker inspect <container-id> -f "{{json .NetworkSettings}}"
sudo ln -s /var/run/docker/netns /var/run/netns
ip netns exec <SandboxKey> ip a

1-2) Calico Interface 확인

route 명령 설치

yum -y install net-tools

route로 Pod IP와 연결 되어 있는 인터페이스 확인

route | grep cal

route로 확인된 가상인터페이스 ID가 호스트 네트워크에 있는지 확인

ip addr

1-3) Pause Container Network Namespaces 확인

Pause Container와 타 Container간에 연결 확인

docker inspect <container-id> -f "{{json .HostConfig.NetworkMode}}

2. Pod Network - Calico


Calico는 Kubernetes 클러스터에서 네트워크 정책을 구현하는 오픈소스 소프트웨어

Calico는 BGP 프로토콜을 사용하여 노드 간에 네트워크 라우팅을 수행하며, 네트워크 보안을 강화하기 위해 미세한 수준의 접근 제어 정책을 구현

→ 이를 통해 Kubernetes 클러스터 내에서 각 노드와 컨테이너 간의 통신을 보호하고, 보안 및 네트워크 정책을 구현

2-1) Pod (source)

apiVersion: v1
kind: Pod
metadata:name: pod-src
  labels:type: src  
spec:nodeSelector:kubernetes.io/hostname: k8s-node2
  containers:
  - name: container
	image: kubetm/init
	ports:
	- containerPort: 8080

2-2) Pod (destination)

apiVersion: v1
kind: Pod
metadata:name: pod-dest
  labels:type: dest
spec:nodeSelector:kubernetes.io/hostname: k8s-node1
  containers:
  - name: container
	image: kubetm/app
	ports:
	- containerPort: 80

2-3) Overlay Network(IP-in-IP) 트래픽 확인

IPIP 모드 → IP-in-IP라고 불리우는 Overlay 방식으로, Calico의 기본 모드 → Pod의 네트워크 패킷의 기존 IP헤더 앞에 IP헤더를 하나 더 덧붙여 통신하는 방식 → 다른 노드간 Pod 통신은 tunl0 인터페이스를 통해 IP 헤더에 감싸져서 상대 노드로 도달 후 tunl0 인터페이스에서 Outer 헤더를 제거하고 내부의 파드와 통신

 

Calico Overlay Network 확인

kubectl describe IPPool

Cluster의 Pod Network CIDR(클래스 없는 도메인 간 라우팅 기법) 확인

kubectl cluster-info dump | grep -m 1 cluster-cidr

2-4) 트래픽 확인

tcpdump 설치

yum -y install tcpdump

트래픽 확인

route | grep cal
tcpdump -i <interface-name>

3. Service Network[clusterIP] - Calico


3-1) service (clusterIP)

apiVersion: v1
kind: Service
metadata:name: svc-clusterip
spec:selector:type: dest
  ports:
  - port: 8080targetPort: 8080type: ClusterIP

3-2) 트래픽 확인

route | grep cal
tcpdump -i <interface-name>

4. Service Network[NodePort] - Calico


4-1) service (NodePort)

apiVersion: v1
kind: Service
metadata:name: svc-nodeport
spec:selector:type: dest
  ports:
  - port: 8080targetPort: 8080 nodePort: 31080 type: NodePort

4-2) nodeport 확인

netstat -anp | grep 31080

//컴퓨터나 서버에서 31080 포트와 연관된 활성화된 네트워크 연결 또는 수신 대기중인 포트를 확인

4-3) 트래픽 확인

tcpdump -i <interface-name>
'Docker' 카테고리의 다른 글
  • [Docker] 도커 컨테이너 실행 이후 localhost 접속 실패 해결
  • 쿠버네티스 로깅
  • 쿠버네티스 컴포넌트
  • 쿠버네티스 스토리지
minseok__
minseok__
  • minseok__
    minseok_study
    minseok__
  • 전체
    오늘
    어제
    • 분류 전체보기 (90)
      • JAVA (1)
      • Kotlin (0)
      • CS (1)
      • SQL (7)
      • Python (2)
      • Docker (13)
      • Typescript (0)
      • Javascript (1)
      • AWS (6)
      • NestJS (1)
      • ElasticSearch (1)
      • 트러블슈팅 (10)
      • DB (6)
      • 알고리즘 (5)
      • Redis (1)
      • Postgresql (1)
      • AI (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    bigquery
    openssh 8.8
    error: relation "batch_job_instance" does not exist
    SQL
    userauth_pubkey: key type ssh-rsa not in pubkeyacceptedalgorithms
    윈도우
    node.js 20
    useswrinfinite
    amazon linux 2023
    빅쿼리
    window
    k8s
    쿠버네티스
    response data
    외래키 참조
    반환 데이터
    EC2
    mysql 아키텍처
    docker
    createMany
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
minseok__
쿠버네티스 네트워킹
상단으로

티스토리툴바