ClusterIP : 클러스터의 포드 / 서비스를 통해 서비스에 액세스 할 수 있습니다
. 기본 네임 스페이스 : clusterIP에서 myservice라는 서비스를 만들면 서비스에 대해 예측 가능한 다음 정적 DNS 주소가 생성됩니다.
myservice.default.svc.cluster.local (또는 myservice.default 또는 기본 네임 스페이스의 포드 만 "myservice"가 작동 함)
그리고 해당 DNS 이름은 클러스터 내부의 포드 및 서비스로만 확인할 수 있습니다.
NodePort : K8 호스트 노드 (및 클러스터의 포드 / 서비스)를 핑 (ping) 할 수있는 동일한 LAN / 클라이언트의 클라이언트가 서비스에 접근 할 수 있습니다 (보안을 위해 k8s 호스트 노드는 개인 서브넷에 있어야합니다. 이 서비스에 연결할 수 없습니다.)
mynamespace 네임 스페이스에서 mynodeportservice라는 서비스를 다음과 같은 유형으로 만드는 경우 : 3 노드 Kubernetes 클러스터의 NodePort. 그런 다음 서비스 유형 : ClusterIP가 생성되고 예측 가능한 다음 고정 DNS 주소로 클러스터 내부의 클라이언트가 도달 할 수 있습니다.
mynodeportservice.mynamespace.svc.cluster.local (또는 mynodeportservice.mynamespace)
mynodeportservice가 30000-32767 범위의 노드 포트에서 수신하는 각 포트에 대해 무작위로 선택됩니다. 따라서 클러스터 외부에있는 외부 클라이언트는 클러스터 내부에있는 해당 ClusterIP 서비스에 충돌 할 수 있습니다. 3 개의 K8 호스트 노드에 IP 10.10.10.1, 10.10.10.2, 10.10.10.3이 있고 Kubernetes 서비스가 포트 80에서 수신 대기하고 임의로 선택된 노드 포트가 31852
라고 가정합니다. 클러스터 외부에 존재하는 클라이언트는 방문 할 수 있습니다 10.10.10.1:31852, 10.10.10.2:31852 또는 10.10.10.3:31852 (모든 Kubernetes 호스트 노드가 NodePort를 수신하므로) Kubeproxy는 요청을 mynodeportservice의 포트 80으로 전달합니다.
LoadBalancer : 인터넷에 연결된 모든 사람이 서비스에 액세스 할 수 있습니다 * (공통 아키텍처는 L4 LB를 인터넷에 DMZ에 넣거나 사설 및 공용 IP 및 k8s 호스트 노드를 사설 서브넷에 제공하여 인터넷에서 공개적으로 액세스 할 수 있음)
( 참고 : 베어 메탈 Kubernetes와 같이 Kubernetes 구현에서 100 % 작동하지 않는 유일한 서비스 유형입니다. Kubernetes에 클라우드 공급자 통합이있을 때 작동합니다.)
mylbservice를 작성하면 L4 LB VM이 생성됩니다 (클러스터 IP 서비스 및 NodePort 서비스도 암시 적으로 생성됨). 이번에는 NodePort가 30222입니다. L4 LB의 공용 IP는 1.2.3.4이며 개인 IP 주소가있는 3 개의 K8 호스트 노드로 트래픽을로드 밸런싱하고 전달합니다. (10.10.10.1:30222, 10.10.10.2:30222, 10.10.10.3:30222) 그런 다음 Kube 프록시는이를 클러스터 내에 존재하는 ClusterIP 유형의 서비스로 전달합니다.
또한 NodePort 서비스 유형이 여전히 ClusterIP를 사용합니까? 예 *
아니면 kubectl get 노드를 실행할 때 NodeIP가 실제로 IP입니까? 또한 예 *
기본 사항 사이에 평행선을 그릴 수 있습니다.
컨테이너가 포드 안에 있습니다. 포드는 복제 세트 안에 있습니다. 복제 세트가 배포 내부에 있습니다.
마찬가지로
, ClusterIP 서비스는 NodePort 서비스의 일부입니다. NodePort 서비스는로드 밸런서 서비스의 일부입니다.
이 다이어그램에서 클라이언트는 클러스터 내부의 포드입니다.
externalIPs
여기서 방정식 을 어떻게 바꾸는 지에 대해 언급 해 주시겠습니까? 특히,externalIPs
배열을ClusterIP
-type 서비스 에 할당 할 수 있는데 외부 IP에서도 서비스에 액세스 할 수 있습니까? NodePort를 통해 언제 이것을 선택 하시겠습니까?