일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Python3 #PEP
- 쿠버네티스
- Glossary #Python
- nodeport
- Exception
- k8s
- til #loguru #str #format
- Python #PEP
- crossfit_geeks #크로스핏 #crossfit #당산크로스핏 #크로스핏긱스 #running #역도 #오운완 #크로스핏터 #Django가 고장날때까지
- aws #modernization #eks #k8s
- Today
- Total
Django가 고장날때까지
네트워크 스터디 3주차 본문
<지식의 흐름 + 회고>
flannel에 이어서 이번에는 calico cni에 대해서 살펴봤다. 어떤 차이점이 있는지 살펴봤고, overlay 네트워크를 왜 사용하고, aws랑 azure가 어떻게 다른 부분이 있는지도 알게되고, 2주차와 비교했을때는 크게 달라지는 내용은 없었지만, 세부적인 디테일이나, 네트워크 지식들이 더 필요해져서. 한번 놓치면 힘들겠다라는 생각이 들었다.
강의 영상만 총 2번씩 봤다..... ㅜㅜ 조금 더 효율적으로 정리하는 법을 연구해야겠다 ㅜㅜ
스터디 실습과정에서 알게된 개념
라우팅 Logest Match Rule
Blackhole
Link Local 주소
https://backendbrew.com/ko/docs/internet/link-local
# 169.254.1.1 # link local 대역 L3 장비를 넘어가면 해당정보를 가져올 수 없음 보안적으로 안전한 정보 사용하기 위해 사용
https://en.wikipedia.org/wiki/Link-local_address
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/instance-identity-documents.html
기본적인 정보 확인
calico 설치하기 전
기본 크기는 16인데 24로 변경
calico 설치하고 나서 binary 폴더에 calico, clico-ipam 생긴것 확인
calico interface 생긴것 확인
172.16.116.1 - corednsXXXXXXX
172.16.116.2 - calico-kube-controllers-XXXXXX
172.16.116.3- corednsXXXXXXX
kube-ops-view로 확인
=========기본적인 실습 준비 과정 스샷============
Calico 가 무엇인가?
Calico는 자체 IPAM을 사용함
각각의 Node가 poddp
172.16.158.0/24로 통신할려면 192.168.10.101로가 bird가 알려줌
host-local의 대역은 있으나 자체 IPAM을 제공하나,
calico의 IPAM을 우선해서 사용한다.
host-ipam이 아니라 calico-ipam을 우선해서 사용하겠다.
쉽게 생각하면 node ( BGP Router - 그 역할 bird가 한다.)
kubeadm 할때 사용한 정보 다시 확인
calicoctl get wep -A # 자주 사용하는 명령어,
프로세스 정보, bird, confd, felix
felix가 iptable 관리해줌 # cali라는 룰이 생김
cali라는 룰이 생김
======================================================================================
2. 파드(Pod) <> 파드(Pod)간 통신
실습목표 및 내용
호스트 네트워크 네임스페이스를 파드빼고, k8s-w1에 아무런 파드가 없는 상태에서 진행
터널 인터페이스가 1개 되어 있음 -> 그게 빨간색으로 표시한 부분
네트워크 네임스페이스가 없다. 파드가 아무것도 없으니까 (w1)
bird가 BGP 라우팅 프로토콜에 의해 서로 교환한 정보고, felix가 넣어주고, blackhole은 w1 자신을 가리킴
이거 없으면 라우팅 loop 발생할 수 있음
w1에 pod2개를 배포함
172.16.158.1, 172.16.158.2 # pod ip를 할당해줌
cali 인터페이스 매핑해줌
파드가 2개 만들어지니 네트워크 네임스페이스가 없었는데 생성됨 # pause 컨테이너 만들어줌
파드에서 파드 통신할떄 라우팅 테이블 172.16.158.1 -> calice0906292e2 거쳐서 통신 # 반대의 경우도 마찬가지
늘어난 iptable 룰 수
pod1에 직접 들어가서 자세히 살펴보자
pod2에 들어가서 살펴보자.
이 proxy_arp 값이 반드시 1로 셋팅되어 있어야한다.
ㅜㅜ 스샷이 없어져서 ㅜㅜ 우선 강의 영상 차용 MAC 주소 알려줘서 통신하고, ARP 먼저 -> ICMP 동작
1. prox_arp
2. 32bit
3. 169.254.1.1 # link local 대역 L3 장비를 넘어가면 해당정보를 가져올 수 없음 보안적으로 안전한 정보 사용하기 위해 사용
==================================================================================
2. 파드 -> 외부(인터넷)통신
실습목표: 외부 통신할 때 NAT 통해서 MASQUERADE 되고, tunnel 인터페이스 거치지 않는 지 확인 하기
cali-nat-outoging 룰로 지정
Member 안에 속하는 대역대가 아니면 -> masquerade 해서 NAT 통해서 나가라
watch로 걸어둠
veth1 인터페이스
a) MASQUERADE 쪽에 pkts 1로 증가 확인
b) pod ip가 8.8.8.8 로 갔다. tcpdump에서 확인가능
위에서 한 것은 핑크색(veth1)으로 색칠한 부분에 tcpdump 수행
외부 통신은 여기에 tunl0에 잡히지 않는다.
tcpdump를 ens5에서 잡을 경우 잡힌다.
도메인도 외부 통신 가능하고
tcpdump ens5로 잡았을때
192.168.10.101로 나온다.
pod(172.16.158.3)에서 8.8.8.8 로 갔다가
들어오는 source ip가 192.168.10.101
pod(172.16.158.3)에서 8.8.8.8 로 갔다가
들어오는 source ip가 192.168.10.101 라서
NAT FALSE 로 만들어서 외부 통신 안하게 하는 방법도 있음
NAT False로 변경함
cali-nat-outgoing 안에 룰이 사라짐
==================================================
4. 다른 노드에서 파드 <> 파드 간 통신
flannel cni - vxlan / calico는 ipip 를 사용 (overlay) 목적은 동일
실습 목표: 다른 노드에서의 파드간 통신이 어떻게 되는지?
워커 노드 1번, 2번 기본정보 확인함
AWS는 기본적으로 9091에서 20바이트 (IPIP 헤더)빼면
각각의 워커 노드에 파드 생성
라우터 정보에 calice 네트워크 정보가 추가됨
이 개념이 핵심
pod 1 -> pod2 통신 # pod 2에서 tcpdump - tun0잡고 있음
핑크색라인은 outer 헤더 정보, 노란색은 inner 헤더 정보
패킷 덤프 뜨고, 직접까봄
4. Calico 네트워크 모드 중 Direct 모드에 대해서 알아보자
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#change_source_dest_check
Source/Detination Check 기능을 반드시 disable(=stop) 해야지 가능함
해당 자겁을 통해서 ipipMode를 Never로 만들연 -> IPIP overlay 모드 안쓰겠다는 소리
tun0 -> esn5로 일괄 변경됨
esn5로만 통신 가능함
파드 3개를 띄우고, 어떤 문제가 있는지 살펴보자
파드의 ip가 직접빠져 나감
(강의 영상)
(실습)
다른 대역대인 w0에 들어가서 확인하면, w1 에서 빠져 나가는 건 있으나 w0으로 들어오는게 없음 # 문제가 발생
핑크색은 AWS가 가지고 있는 virtual router라고 생각
AWS virtual router에 pod의 172.16.XXX.XXX (파드 대역대 정보가 없음)
수동으로 라우터 정보 넣어주면 통신 가능함
그래서!!!!!!!!!!!!!! overlay 네트워크 나온이유 - 개발자가 애플리케이션만가지고 네트워크팀 협조 안받고 개발할려고
4. 네트워크 모드 중 CrossSubnet 모드: 나랑 같은 ip 대역대에있는 워커노드끼리는 파드 ip가 그냥 빠져나가고(es5) , 다른 대역대는 (tunl0) 이용
BGP 는 실습할수 있는 환경은 아니지만 살펴보기
https://www.tigera.io/blog/why-bgp/
========================
Z. 마지막 네트워크 모드 중 패킷 암호화
장점: 이동 중에도 연결이 끊기지 않음
https://docs.tigera.io/calico/latest/networking/configuring/mtu#determine-mtu-size
"peer" 값은 공개 키를 base64로 인코딩한 해시 값. 이것은 일반적인 사용자 이름이나 ID가 아니라, WireGuard에서 각 피어를 식별하기 위해 사용하는 공개 키. 각 피어는 고유한 공개 키를 가지고 있으며, 이를 통해 서로 간의 안전한 통신을 보장
이렇기 때문에 이동중에 연결이 끊어져도 가능함
노드 2 로
출발지 목적지 ip만 나오고 UDP 로 나옴.
진짜 암호화 된건지 살펴보자
패킷 암호화 여부 확인
프로메테우스 셋팅
그라파나로 모니터링 툴 셋팅
'k8s' 카테고리의 다른 글
네트워크 스터디 5주차 (2) | 2024.10.06 |
---|---|
네트워크 스터디 4주차 (2) | 2024.09.29 |
정리 (0) | 2024.09.23 |
네트워크 스터디 2주차 - Pause Container 와 k8s CNI(Flannel) (2) | 2024.09.01 |
네트워크 스터디 1주차 (5) | 2024.08.28 |