hongkunyoo / blog-comments

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

[번역]쿠버네티스 패킷의 삶 - #3 | 커피고래의 노트 #47

Open utterances-bot opened 1 year ago

utterances-bot commented 1 year ago

[번역]쿠버네티스 패킷의 삶 - #3 | 커피고래의 노트

쿠버네티스 패킷의 삶 #3에서는 Service 네트워크가 동작하는 방법에 대해 심층적으로 알아 봅니다.

https://coffeewhale.com/packet-network3

heumsi commented 1 year ago

잊을만하면 보러옵니다. 진짜 쵝오..

kingbj940429 commented 1 year ago

커피고래님의 글 아주 재미있게 읽고 있습니다. 공부를 하면서 보고 있는데 문뜩 질문이 하나 생각났습니다. 그래서 결국 cni 와 kube-proxy 의 차이는 무엇일까??

아직 이해를 제대로 못한거 같지만.. cni 도 결국 파드 간 통신을 가능케 해주는 녀석이고, kube-proxy 도 netfilter 를 통해 파드 간 통신을 가능케 해주는 녀석이라고 이해하고 있습니다..

커피 고래님이 생각하시길 이 둘의 차이점은 무엇이라고 생각하시나요?? https://coffeewhale.com/k8s/network/2019/05/11/k8s-network-02/ 글에서 kube-proxy 에서 파드의 ip 주소를 가져오는데 이때 cni 는 무슨 역할을 하는 것일까요??

hongkunyoo commented 1 year ago

@kingbj940429 안녕하세요. 좋은 질문 감사합니다.

CNI는 Pod간의 네트워킹을 담당합니다. 컨테이너간의 네트워킹을 가능하게 하는 가장 기본적인 컴포넌트입니다. kube-proxyPod간의 네트워킹이 가능한 네트워크 위에 Service라는 리소스를 이용하여 Software LB를 제공하는 컴포넌트입니다. kube-proxy의 역할은 Software LB의 가상 IP(ClusterIP)를 Upstream Pod IP로 치환(혹은 매핑)해주는 역할을 담당합니다.

정확한 정의는 아니지만 이해를 돕기 위해 다음과 같이 생각해 볼 수 있습니다.

kingbj940429 commented 1 year ago

그럼 클러스터 내 서비스 없이 파드 to 파드 로 request 를 보낸다면, 여기서 kube-proxy 는 관여를 하지 않나요??

hongkunyoo commented 1 year ago

@kingbj940429 네, 맞습니다. 그런 경우에는 kube-proxy가 관여하는 부분이 없습니다.

kingbj940429 commented 1 year ago

아 이제야 쿠버네티스 네트워크에 대한 퍼즐이 맞쳐지는 느낌입니다. 정말정말정말 진심으로 감사드립니다 :)

idoyo7 commented 1 year ago

안녕하세요 커피고래님 블로그의 다른글들을 정주행하던중, Calico의 CNI에 대해 심도있게 다루신 글을보고 해결하지 못했던 질문을 조심스레 적어봅니다. 현재 온프레미스 클러스터에서 Pod들을 Nodeport로 서비스들을 오픈해둔 상태입니다. Pod들이 특정 서버에 요청을 보낼때 각 Node들(여러개의 IP)에서 보내는 요청들에 대한 처리를 하기 힘든상태라서, 한개의 IP에서 특정 서버에 요청을 날리고 응답받게하려면 어떤 설정들을 해볼 수 있을까요? (한개의 Deployment에 있는 하위 Pod들이 아닌 독립적인 Deployment들에서 해당 요청을 수행합니다) Calico Enterprise 에서는 Egress Gateway라는 기능을 제공하던데, 오픈소스 에디션에선 다른기능을 통해 해당 네트워크 구성을 할수있는지 궁금합니다.

hongkunyoo commented 1 year ago

@mjrodan1 님, 안녕하세요. 말씀하신 요구사항은 주로 DB ACL 설정을 위해 필요한 기능과 비슷해 보입니다. 저 같은 경우 좀 더 인프라 레벨에서 처리하였기 때문에 이 부분에 있어서는 저도 정확한 답변을 드리기가 힘들 것 같네요.(예를 들어, AWS 같은 경우 Security Group을 활용하는 등) 제가 알기론 cilium의 경우 Enterprise가 아닌 오픈소스로도 egress gateway 기능을 제공하는 것으로 알고 있습니다.(https://docs.cilium.io/en/v1.12/gettingstarted/egress-gateway) 한번 참고해 보시면 좋을 것 같습니다.

ChoiHwanMin commented 5 months ago

정말 좋은 글 잘 읽었습니다. 개인적으로 공부중인 사람인데 5대의 서버를 이용해서 쿠버네티스 클러스터를 구성했는데 한개의 노드만 ClusterIP 접근이 안되는 문제 즉, k8s dns에 연결이 안되는 문제가 발생했습니다. (telnet 10.96.0.10 53 명령어 입력 시 문제 서버만 연결이 안됨)

  1. 클러스터 구성 내용

    3대의 멀티 마스터 노드와 2개의 워커노드로 구성 crio/k8s(v1.24.1), flannel(v0.22.3)

위와 같은 상황에서는 어디가 문제라고 생각이 드시는지 고견을 부탁드립니다......

hongkunyoo commented 5 months ago

안녕하세요 @ChoiHwanMin 님.

K8s 네트워크 문제가 참 다양해서 해당 정보만을 가지고 판단하기가 상당히 힘들 것 같은데요...^^;; flannel 쪽 파드의 로그를 한번 찾아보시는 것을 권장 드립니다. 간혹 flannel에서 각 노드의 pod CIDR가 제대로 설정이 안되어서 비슷한 문제를 일으킨 적이 생각나네요. 그 외에 host network와 Pod, Service 네트워크의 CIDR가 서로 충돌이 없는지도 한번 확인 부탁 드립니다.

네트워크가 참 어려운 것 같습니다. 저도 많은 도움을 드리지 못해서 죄송합니다.