hongkunyoo / blog-comments

blog comments for utteranc.es
1 stars 0 forks source link

[번역] 쿠버네티스 네트워킹 이해하기#3: Ingress | 커피고래의 노트 #16

Open utterances-bot opened 3 years ago

utterances-bot commented 3 years ago

[번역] 쿠버네티스 네트워킹 이해하기#3: Ingress | 커피고래의 노트

쿠버네티스 네트워킹 시리즈의 첫번째 포스트에서는 한 Pod가 다른 노드에 위치하는 다른 Pod들과 어떻게 서로 통신하는지 설명하였습니다. 두번째 포스트에서는 서비스 네트워크가 어떻게 포드들의 부하를 분산 시키는지 설명하였고 이를 통해 클러스터

https://coffeewhale.com/k8s/network/2019/05/30/k8s-network-03/

hongkunyoo commented 3 years ago

Comment written by SOYONG KIM on 09/09/2020

포스팅덕분에 쿠버네티스 네트워크 구조 이해에 정말 큰도움이 되었습니다 감사합니다

몇가지 궁금한게 있는데, 저 그림에 router/gateway가 master 노드와 같다고 보면 될까요? 제가 kubeadm을 사용해서 클러스터를 구축하고 사용법을 익히는 중인데, 저것과 매칭되는게 master 노드밖에 없는것 같습니다.

그리고 GKE를 쓴다면 master 노드 역할을 하는 것이 구글 클라우드 서버에 있고 저는 그 노드로 명령만 내리는 구조가 되는 건가요?

Comment written by HongKun Yoo on 09/09/2020

안녕하세요, 제 블로그에 관심을 가져주셔서 감사합니다. 저도 잘 아는 것은 아니지만 제가 아는 선에서 말씀드리자면,

  1. router/gateway는 daemonset 형식으로 각 노드마다 Pod 형태로 존재합니다. 그 친구들이 default gateway의 역할을 담당하는 것으로 알고 있습니다.

  2. 네 맞습니다. 말씀하신 것 처럼 GKE를 사용한다면 구글에서 제공하는 managed master (혹은 control plane)을 사용하게 되어 따로 마스터 노드를 관리할 필요 없이 그쪽 endpoint로 명령만 내리면 됩니다.

walcoll72 commented 3 years ago

안녕하세요! 좋은 포스팅 오늘 정주행 중입니다. 정말 감사한 글입니다 ㅠㅠ 다만 선생님 궁금한게 있습니다.

' Service IP가 단지 특정 내부 네트워크에 한정되어서 동작하지 않는다는 것을 확인할 수 있습니다. 그것은 다시 말해, 어디에서 왔는 트래픽인지 상관 없이 목적지 주소가 Service IP (예시에서는 10.3.241.152:80)인 경우에 원하는 Pod까지 정상적으로 패킷이 전달 된다는 것입니다.'

이게 실제로 가능한가요? 클러스터 외부에서 클러스터 IP를 이용할 수 있는건가요...? 클러스터 내부에서는 클러스터 아이피가 특정 할 수 있을것 같은데, 클러스터 외부에서는 특정할 수 없지않을까요? 10.3.241.152 라는 딱 하나만 존재하지는 않을 것 같다는 생각이 듭니다 ㅠㅠ

아 그리고 한가지 더 궁금한게 있습니다.

'쿠버네티스의 역할을 클러스터 외부에 존재하는 라우터를 관리하는데까지 넓히는 방법에 대해서는 쿠버네티스 설계자들이 동의하지 않았습니다. 왜냐하면 클라이언트의 요청을 분산하여 노드들에게 전달해주는 존재가 이미 있기 때문입니다. 그 이름은 로드 밸런서입니다. 그리고 놀랍지 않게도 쿠버네티스에서는 이것을 이용하여 안정적으로 외부의 트래픽을 전달 받는데에 활용합니다. 이제 여러분과 layer 3 레벨을 떠나서 연결에 대해서 얘기할 시간이 되었습니다.'

이렇게 말씀해 주셨는데, 이 로드밸런서도 결국 서버를 운영하는 사람이 구성해 줘야하는거죠? 제가 노드포트를 만들었다고, 갑자기 로드밸런서가 만들어지지는 않는게 맞나요? 그 아래서 쿠버네티스의 서비스의 리소스중 하나로 소개되는 'loadbalancer'는 GCP난 AWS에서만 가능한 기능이구요.

hongkunyoo commented 3 years ago

반갑습니다. @walcoll72 님. 저의 번역글이 도움이 된다니 기쁘네요.

  1. 외부에서 Cluster IP 접근 가능한지?

저도 다시 글을 읽어 보고 원글을 찾아봤는데 저자의 의도는 "만약 그렇게 된다면~" 이라는 가설을 세운 것이였습니다. 그렇게 때문에 실제로는 walcoll72님의 생각대로 외부에서 Cluster IP 그대로 접근하는 것은 불가능하며 실제로는 External LB --> NodePort --> Cluster IP --> Pod 의 흐름으로 트래픽이 전달됩니다.

원글에서도 누군가 비슷한 질문을 하여 원저자의 답변이 나와있습니다. 원저자 답변


  1. LB 생성 주체

맞습니다. 사용자가 NodePort를 만든다고 자동으로 로드밸런서가 생성되는 것이 아니라 사용자가 직접 LB를 구성해줘야 합니다. 다만 말씀하신 것처럼 AWS나 GCP, Azure와 같은 클라우드 환경에서는 LoadBalancer 타입을 사용하면 클라우드 플랫폼에서 자동으로 LB를 만들어 줍니다.

LB를 누가 만들어 주느냐의 차이일 뿐, 일단 LB가 세팅되면 들어오는 트래픽은 둘다 동일합니다. External LB --> NodePort --> Cluster IP --> Pod

kingbj940429 commented 2 years ago

정말 좋은 글 감사합니다 :)

synoti21 commented 8 months ago

이런 너무나도 좋은 글을 이제서야 봤네요. 덕분에 정말 이해가 잘 됐습니다. 감사합니다!