Skip to content

Commit cc6c45c

Browse files
committed
40일차 수정-1
1 parent 2bc3bcb commit cc6c45c

File tree

1 file changed

+69
-21
lines changed

1 file changed

+69
-21
lines changed

오토에버 클라우드 2기/_posts/2025-06-27-40일차.md

Lines changed: 69 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ Pod는 언제든 사라지고 다시 생성될 수 있어 IP가 계속 바뀜 **
148148
KubeProxy2 -- "2 전체 Pod 목록 확인 후</br>가장 적절한 Pod 선택" --> PodA
149149
```
150150
151-
- **노드포드를 사용해도 적절한 pod를 찾아가지만(kube-proxy) 실제 서비스에서 노드포트를 사용하지 않는 이유는 해당 워커노드가 죽으면 전달하지 못하고 노드가 스케줄링으로 줄어들어서 없어질수도 있기 때문에 실제 서비스에서 노드밸런서가 필요하다**
151+
- **노드포드를 사용해도 적절한 pod를 찾아가지만(kube-proxy) 실제 서비스에서 노드포트를 사용하지 않는 이유는 해당 워커노드가 죽으면 전달하지 못하고 노드가 스케줄링으로 줄어들어서 없어질수도 있기 때문에 실제 서비스에서 노드밸런서(서비스단에서)가 필요하다**
152152
153153
-
154154
@@ -163,35 +163,83 @@ Pod는 언제든 사라지고 다시 생성될 수 있어 IP가 계속 바뀜 **
163163
164164
- ``` mermaid
165165
graph TD
166-
User[👤 사용자] --> LB[🌐 외부 LoadBalancer]
166+
%% --- 전체 사설망(VPC) 경계를 정의합니다 ---
167+
subgraph "VPC (사설 네트워크)"
167168
168-
subgraph "쿠버네티스 클러스터"
169-
subgraph "워커 노드 1"
170-
KP1[kube-proxy] --> Pod1[Pod]
171-
end
172-
subgraph "워커 노드 2"
173-
KP2[kube-proxy] --> Pod2[Pod]
169+
%% --- 외부와 통신하는 Web Tier (Public Subnet) ---
170+
subgraph "Web Tier (프론트엔드)"
171+
direction LR
172+
Web1[🌐 웹서버 Pod 1]
173+
Web2[🌐 웹서버 Pod 2]
174174
end
175-
subgraph "워커 노드 3 (장애 발생)"
176-
style Node3 fill:#ff9999,stroke:#333,stroke-width:2px
177-
KP3[kube-proxy]
175+
176+
%% --- 내부 통신만 하는 App Tier (Private Subnet) ---
177+
subgraph "Application Tier (백엔드)"
178+
direction LR
179+
ILB["<b>Internal Load Balancer</b><br/>(사설 IP만 가짐)"]
180+
181+
App1[⚙️ 앱서버 Pod 1]
182+
App2[⚙️ 앱서버 Pod 2]
183+
App3[⚙️ 앱서버 Pod 3]
178184
end
179185
180-
Service[Service]
181-
KP1 --> Service
182-
KP2 --> Service
186+
%% --- 통신 흐름을 정의합니다 ---
187+
%% Web Tier의 Pod들이 내부 로드밸런서로 요청을 보냅니다.
188+
Web1 -- "내부 API 요청" --> ILB
189+
Web2 -- "내부 API 요청" --> ILB
190+
191+
%% 내부 로드밸런서는 App Tier의 Pod들에게 트래픽을 분산합니다.
192+
ILB -- "내부 로드 밸런싱" --> App1
193+
ILB -- "내부 로드 밸런싱" --> App2
194+
ILB -- "내부 로드 밸런싱" --> App3
195+
end
196+
197+
%% --- 외부 인터넷 사용자는 내부 로드밸런서에 직접 접근할 수 없음을 보여줍니다 ---
198+
Internet[👤 외부 인터넷 사용자]
199+
Internet -- "<font color=red>X 접근 불가 X</font>" --x ILB
200+
Internet -- "접근 가능" --> Web1
201+
Internet -- "접근 가능" --> Web2
202+
```
203+
204+
- **Ingress**: `Service`가 L4(TCP/UDP) 레벨에서 동작하는 것과 달리, **Ingress**는 L7(HTTP/HTTPS) 레벨에서 동작. URL 경로, 호스트 이름에 따라 요청을 다른 서비스로 라우팅하는 규칙을 정의
205+
206+
- ``` mermaid
207+
graph TD
208+
User[👤 외부 사용자] --> DNS
209+
210+
subgraph "클라우드 인프라"
211+
DNS -- "shop.my-website.com" --> LB[🌐 외부 LoadBalancer]
183212
end
184213
185-
LB -- "1단계: 노드 간 로드 밸런싱<br/>(Health Check 통과한 노드1, 2로만 분산)" --> KP1
186-
LB -- "1단계: 노드 간 로드 밸런싱<br/>(Health Check 통과한 노드1, 2로만 분산)" --> KP2
214+
subgraph "쿠버네티스 클러스터"
215+
subgraph "워커 노드"
216+
Controller["<b>Ingress Controller Pod</b><br/>(NGINX 등)"]
217+
218+
subgraph "쇼핑몰 서비스"
219+
ShopSvc[Service: shop-svc] --> ShopPod[Pod]
220+
end
221+
222+
subgraph "블로그 서비스"
223+
BlogSvc[Service: blog-svc] --> BlogPod[Pod]
224+
end
225+
end
226+
227+
IngressRules[📜 Ingress 규칙]
228+
end
187229
188-
Service -- "2단계: 파드 간 로드 밸런싱" --> Pod1
189-
Service -- "2단계: 파드 간 로드 밸런싱" --> Pod2
230+
%% --- 흐름 정의 ---
231+
LB -- "1 트래픽 전달" --> Controller
232+
Controller -- "2 Ingress 규칙 조회" --> IngressRules
233+
Controller -- "3 'shop.my-website.com'<br/> 규칙에 따라<br/>shop-svc로 라우팅" --> ShopSvc
190234
```
191235
192-
- 만약에 노드당 pod가 1개씩이라면 의미가 없어보일 수 있지만 pod가 업데이트 되거나 재실행되서 ip가 변경된다면 service를 통해서 변경된 pod에 요청을 제대로 보낼 수 있다
193-
194-
- **Ingress**: `Service`가 L4(TCP/UDP) 레벨에서 동작하는 것과 달리, **Ingress**는 L7(HTTP/HTTPS) 레벨에서 동작. URL 경로, 호스트 이름에 따라 요청을 다른 서비스로 라우팅하는 규칙을 정의
236+
- | 특징 (Feature) | Ingress를 사용하지 않을 때 (비효율적) | Ingress를 사용할 때 (효율적, 권장) |
237+
| ---------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
238+
| **외부 진입점** | 각 서비스마다 **별개의 로드밸런서**가 필요 | **단 하나의 로드밸런서**를 모든 서비스가 공유 |
239+
| **비용** | 서비스 개수만큼 클라우드 로드밸런서 비용이 발생하여 **고비용** 구조가 된다 | 로드밸런서 1개에 대한 비용만 발생하므로 **매우 비용 효율적** |
240+
| **라우팅 방식** | L4 (IP, Port 기반의 단순 전달)만 가능 | L7 (Host, URL 경로 기반의 **지능적인 라우팅**)이 가능 |
241+
| **관리 포인트** | 여러 개의 IP와 로드밸런서 설정을 개별적으로 관리해야 해서 복잡 | 단일 진입점과 라우팅 규칙(`Ingress` YAML)을 **중앙에서 일관되게 관리**할 수 있다 |
242+
| **SSL/TLS 인증** | 각 로드밸런서마다 개별적으로 SSL 인증서를 설정해야 한다 | **Ingress에서 SSL 인증서를 중앙 집중적으로 관리**하고 적용할 수 있다 |
195243
196244
&nbsp;
197245

0 commit comments

Comments
 (0)