-
Kubernetes (K8S): Network - 2. POD Networking공부합시다!/Kubernetes 2022. 12. 29. 00:14728x90
동일 node 혹은 다른 node의 경우에 pod 통신에는 cni가 이용이 됩니다.
아래 그림을 살펴 보세요!
Calico를 예로 보여 드립니다.
Kubernetes에서 사용하는 대부분의 CNI는 비슷한 구조를 이루고 있습니다.
Overlay Network의 특징이기도 하지요!
이런 경우 대부분 pod의 통신에는 IP Address를 사용합니다.
물론 DNS를 사용할 수도 있습니다.
그럼 하나하나 살펴보도록 하겠습니다.
저는 실습에서 CNI(Container Network Interface)는 weave를 사용하고 있습니다.
1. Test 구성도
1.1. weave는 vxlan terneling을 사용합니다.
1.2. 해서 추후 Routing Table을 확인해보면 스위치 내에서 통신처럼 routing 경로가 나타나질 않습니다.
1.3. 스위치 구성에서 host 끼리의 통신처럼 구현이 됩니다.
2. Node NIC및 IP Address 확인
2.1. node1과 node2에서 각각 # ip address 실행
# ip address
3. node1과 node2에서 사용할 cento yaml 파일 작성
3.1. node1: no1-os pod를 node2: no2-os pod 생성
vi centnode.yml apiVersion: v1 kind: Pod metadata: name: no1-os spec: containers: - name: centno1 image: centos:7 command: ["/bin/bash","-c","while true; do sleep 1000; done"] imagePullPolicy: IfNotPresent nodeName: node1 --- apiVersion: v1 kind: Pod metadata: name: no2-os spec: containers: - name: centno2 image: centos:7 command: ["/bin/bash","-c","while true; do sleep 1000; done"] imagePullPolicy: IfNotPresent nodeName: node2
4. 적용 후 확인
4.1. pod 생성 후 node 및 ip 정보확인
4.2. ping test
# kubectl apply -f centnode.yml # kubectl get pod -o wide # kubectl exec no1-os -- ping 10.38.0.3
5. no1-os pod에 접속 traceroute Test(Routing 경로 확인)
5.1. no1-os pod 접속
5.2. traceroute 설치
# kubectl exec no1-os -it -- bash # yum install -y traceroute net-tools net-tools는 ifconfig와 netstat를 가능하게 합니다.
5.3. traceroute 실행
5.3.1. 흡사 스위치에서 Host간의 통신처럼 라우팅 경로가 나타나질 않습니다. vxlan의 특징으로 vlan의 확장버전
5.3.2. vxlan은 약 천만개의 valn설정이 가능합니다. vlan은 약 4000천개
# traceroute 10.38.0.3
5.4. Network 및 Routing Table 확인
5.4.1. kubectl에서 확인한 pod의 IP와 container의 ip가 동일합니다.
5.4.2. gateway 주소도 확인해 보세요.
# ifconfig # netstat -n
DNS 설정 부분은 추후 포스팅 해야 겠네요!
이것보다 더 자세히 아는 것은 5일간의 교육만으로는 불가능 합니다.
또한 Network에 대한 자세한 지식을 아셔야 함으로 살짝 건너뛰세요!
참고 https://atl.kr/dokuwiki/doku.php/openvswitch%EB%A5%BC_%ED%86%B5%ED%95%9C_vxlan_%EA%B5%AC%EC%84%B1
728x90'공부합시다! > Kubernetes' 카테고리의 다른 글
Kubernetes (K8S): Scheduling (0) 2022.12.30 Kubernetes(K8S): yaml 파일 분석 (0) 2022.12.29 Kubernetes (K8S): App이 실행되지 않는 image(Centos, Ubuntu등) 실행 (0) 2022.12.28 Kubernetes (K8S): Network - 1. Container Networking (0) 2022.12.27 Kubernetes (K8S): Object - 6-3. Storage: Persistent Volume (0) 2022.12.26