YongsHub / -Kubernetes-Study

스터디 레포지토리
1 stars 1 forks source link

Chapter5 - 범위: 섹션7 2024/01/22 #5

Closed YongsHub closed 6 months ago

YongsHub commented 6 months ago

Controller

Topic

himJJong commented 6 months ago

Autoscaler 내용 중 사용자가 ReplicaSet을 만드는 과정이 있었습니다. 애매하게 이해했던 부분에 대해 질문 남겨 놓았습니다.

(1) kubelet에게 pod를 만들어달라는 요청이 보내지고 -> (2) kubelet은 Pod는 k8s 개념이고, 이 안에 컨테이너만 빼서 이것을 만들어 달라고 Docker에게 요청 -> (3) Docker가 Node 위에 컨테이너를 만들어준다.


질문 1. (2)에서 컨테이너만 빼서 이것을 만들어 달라고 한 것이, Pod 관련 스크립트를 제외하고가 컨테이너의 생성 스크립트를 Docker에게 전달한다는 뜻인가요?? 질문 2. (3)에서 Node위에 컨테이너를 만들어지는데, 이때 노드 위에 있는 Pod가 생성되는 것이 아닌 강사님이 컨테이너가 생성되어 놓여진다고 하는 부분이 이해가 되지 않습니다.

YongsHub commented 6 months ago

metrics 같은 경우, type을 통해 지정할 수 있는데 Pods의 경우 type: Pods로 지정하고 Ingress같은 경우는 Object로 지정해야 함으로 이해.

하지만 이같은 경우 Prometheus와 같은 plugin이 설치되어 있어야한다고 이해를 했는지 궁금하네요

YongsHub commented 6 months ago

Ingress만 생성했다고 해서 아무것도 동작하지 않는다

NginX, Kong과 같은 Ingress Controller를 생성해줘야 한다 그렇게 되면 해당 Controller의 Namespace를 생성하고, ReplicaSet을 만들어서, NginX가 존재하는 Pod를 생성한다


동일하게 이해를 했는지 궁금합니다

YongsHub commented 6 months ago

Autoscaler 내용 중 사용자가 ReplicaSet을 만드는 과정이 있었습니다. 애매하게 이해했던 부분에 대해 질문 남겨 놓았습니다.

(1) kubelet에게 pod를 만들어달라는 요청이 보내지고 -> (2) kubelet은 Pod는 k8s 개념이고, 이 안에 컨테이너만 빼서 이것을 만들어 달라고 Docker에게 요청 -> (3) Docker가 Node 위에 컨테이너를 만들어준다.

질문 1. (2)에서 컨테이너만 빼서 이것을 만들어 달라고 한 것이, Pod 관련 스크립트를 제외하고가 컨테이너의 생성 스크립트를 Docker에게 전달한다는 뜻인가요?? 질문 2. (3)에서 Node위에 컨테이너를 만들어지는데, 이때 노드 위에 있는 Pod가 생성되는 것이 아닌 강사님이 컨테이너가 생성되어 놓여진다고 하는 부분이 이해가 되지 않습니다.

질문 1에 대해서 저도 정리해보겠습니다. master - node에 존재하는 kube-apiserver를 통해 ReplicaSet을 만들때, 말씀해주신대로 Pod 관련 스크립트를 전달합니다. 이 때, 각각의 Node에 존재하는 kubelet이 컨테이너 생성 스크립트만을 보고 Docker -> 즉, 컨테이너 생성 런타임을 통해 컨테이너를 만듭니다. 그래서 이해하신게 맞는거 같습니다! 질문2에서는 Node위에 컨테이너를 만드는데 이 컨테이너를 포함하고 있는 개념이 Pod이다보니 그렇게 말씀하신거 같아요. 여러 노드들로 이루어진 kubernetes cluster namespace -> Namespace 에 여러개의 Pod -> Pod 내 Container

himJJong commented 6 months ago

metrics 같은 경우, type을 통해 지정할 수 있는데 Pods의 경우 type: Pods로 지정하고 Ingress같은 경우는 Object로 지정해야 함으로 이해.

하지만 이같은 경우 Prometheus와 같은 plugin이 설치되어 있어야한다고 이해를 했는지 궁금하네요

metrics는 어떤 조건을 통해 Replicas를 증가시킬지에 대한 부분인데, 위 언급해주신 것 처럼 Pods의 경우 type: Pods로 지정하고 Ingress같은 경우는 Object, Resource 경우 type:Resource 등 가능하다고 이해했습니다. Prometheus도 위처럼 이해했습니다!

himJJong commented 6 months ago

Ingress만 생성했다고 해서 아무것도 동작하지 않는다

NginX, Kong과 같은 Ingress Controller를 생성해줘야 한다 그렇게 되면 해당 Controller의 Namespace를 생성하고, ReplicaSet을 만들어서, NginX가 존재하는 Pod를 생성한다

  • 해당 Pod가 생성한 Ingress Object에 따라 각각의 서비스 Path로 연결해줌
  • 더하여, 외부에서 접근하기 위해 NodePort는 LoadBalancer 서비스를 연결

동일하게 이해를 했는지 궁금합니다

Ingress 오브젝트는 k8s 설치 후 언제든지 바로 만들 수 있습니다. 대신 이를 사용하려면 위 언급해주신 것 처럼 실현할 구현체로 Nginx, Kong이 대표적으로 쓰이는거구요. ReplicasSet에서 Ingress 구현체인 Nginx Pod를 생성할거고, 생성된 Pods는 Ingress Rule을 보고 트래픽 전달이 되는것으로 이해했습니다.

외부에서 접근하는 사용자들은 생선한 Nginx Pod를 지나쳐야하기 때문에 외부에서 접근할 수 있는 서비스를 만든 후 해당 Nginx Pod에 연결한다고 했습니다. 근데 말씀주신 것 중에 이해가 안되는 것은 NodePort는 LoadBalancer 서비스를 연결한다고 하신 문장인데, 제가 이해했을 때는 결국 둘 다 외부 서비스에서 접근하기 위한 것이고, 각각의 환경에 따라 (NodePort, LoadBalancer)2가지 방법이 있습니다! 라고 이해했습니다. NodePort와 LoadBalancer는 서로 연관이 없지 않나 하는 생각이 드는데 혹시 제가 잘못 이해한 부분이 있을까요!?

himJJong commented 6 months ago

Autoscaler 내용 중 사용자가 ReplicaSet을 만드는 과정이 있었습니다. 애매하게 이해했던 부분에 대해 질문 남겨 놓았습니다. (1) kubelet에게 pod를 만들어달라는 요청이 보내지고 -> (2) kubelet은 Pod는 k8s 개념이고, 이 안에 컨테이너만 빼서 이것을 만들어 달라고 Docker에게 요청 -> (3) Docker가 Node 위에 컨테이너를 만들어준다. 질문 1. (2)에서 컨테이너만 빼서 이것을 만들어 달라고 한 것이, Pod 관련 스크립트를 제외하고가 컨테이너의 생성 스크립트를 Docker에게 전달한다는 뜻인가요?? 질문 2. (3)에서 Node위에 컨테이너를 만들어지는데, 이때 노드 위에 있는 Pod가 생성되는 것이 아닌 강사님이 컨테이너가 생성되어 놓여진다고 하는 부분이 이해가 되지 않습니다.

질문 1에 대해서 저도 정리해보겠습니다. master - node에 존재하는 kube-apiserver를 통해 ReplicaSet을 만들때, 말씀해주신대로 Pod 관련 스크립트를 전달합니다. 이 때, 각각의 Node에 존재하는 kubelet이 컨테이너 생성 스크립트만을 보고 Docker -> 즉, 컨테이너 생성 런타임을 통해 컨테이너를 만듭니다. 그래서 이해하신게 맞는거 같습니다! 질문2에서는 Node위에 컨테이너를 만드는데 이 컨테이너를 포함하고 있는 개념이 Pod이다보니 그렇게 말씀하신거 같아요. 여러 노드들로 이루어진 kubernetes cluster namespace -> Namespace 에 여러개의 Pod -> Pod 내 Container

명확한 답변 감사합니다 :)

YongsHub commented 6 months ago

Ingress만 생성했다고 해서 아무것도 동작하지 않는다 NginX, Kong과 같은 Ingress Controller를 생성해줘야 한다 그렇게 되면 해당 Controller의 Namespace를 생성하고, ReplicaSet을 만들어서, NginX가 존재하는 Pod를 생성한다

  • 해당 Pod가 생성한 Ingress Object에 따라 각각의 서비스 Path로 연결해줌
  • 더하여, 외부에서 접근하기 위해 NodePort는 LoadBalancer 서비스를 연결

동일하게 이해를 했는지 궁금합니다

Ingress 오브젝트는 k8s 설치 후 언제든지 바로 만들 수 있습니다. 대신 이를 사용하려면 위 언급해주신 것 처럼 실현할 구현체로 Nginx, Kong이 대표적으로 쓰이는거구요. ReplicasSet에서 Ingress 구현체인 Nginx Pod를 생성할거고, 생성된 Pods는 Ingress Rule을 보고 트래픽 전달이 되는것으로 이해했습니다.

외부에서 접근하는 사용자들은 생선한 Nginx Pod를 지나쳐야하기 때문에 외부에서 접근할 수 있는 서비스를 만든 후 해당 Nginx Pod에 연결한다고 했습니다. 근데 말씀주신 것 중에 이해가 안되는 것은 NodePort는 LoadBalancer 서비스를 연결한다고 하신 문장인데, 제가 이해했을 때는 결국 둘 다 외부 서비스에서 접근하기 위한 것이고, 각각의 환경에 따라 (NodePort, LoadBalancer)2가지 방법이 있습니다! 라고 이해했습니다. NodePort와 LoadBalancer는 서로 연관이 없지 않나 하는 생각이 드는데 혹시 제가 잘못 이해한 부분이 있을까요!?

네네 말씀해주신게 정확한거 같습니다!~! 학습에 도움이 되었습니다 :)

himJJong commented 6 months ago

이번주 섹션도 도움이 많이 되었습니다!! 마지막까지 얼마 안남았으니 화이팅입니다 :)