서비스의 아키텍처 및 종속 항목
클래식 또는 VPC 클러스터에서 작성된 샘플 클러스터 아키텍처 및 컴포넌트를 검토합니다.
클래식 클러스터
다음 아키텍처 개요는 클래식 인프라 제공자에만 해당합니다. VPC 인프라 제공자에 대한 아키텍처 개요는 VPC 클러스터 아키텍처를 참조하십시오.
퍼블릭 클라우드 서비스 엔드포인트만 사용하는 비VRF 또는 VRF 사용 계정
다음 이미지는 퍼블릭 클라우드 서비스 엔드포인트만 사용으로 설정된 경우 클러스터의 컴포넌트 및 비VRF 또는 VRF 사용 계정에서 해당 컴포넌트가 상호작용하는 방식을 보여줍니다.
프라이빗 및 퍼블릭 클라우드 서비스 엔드포인트를 사용하는 VRF 사용 계정
다음 이미지는 퍼블릭 및 프라이빗 클라우드 서비스 엔드포인트가 사용으로 설정된 경우 클러스터의 컴포넌트 및 VRF 사용 계정에서 해당 컴포넌트가 상호작용하는 방식을 보여줍니다.
Kubernetes 마스터 컴포넌트
Kubernetes 마스터는 클러스터에서 모든 컴퓨팅, 네트워크 및 스토리지 리소스를 관리하는 역할을 하며 컨테이너화된 앱 및 서비스가 클러스터의 작업자 노드에 동일하게 배치되었는지 확인합니다. 앱 및 서비스의 구성 방식에 따라 마스터는 앱의 요구사항을 충족시키는 데 충분한 리소스가 있는 작업자 노드를 판별합니다.
Kubernetes 마스터 및 모든 마스터 컴포넌트는 사용자 전용이며 다른 IBM 고객과 공유되지 않습니다.
다음 표에서는 Kubernetes 마스터의 컴포넌트에 대해 설명합니다.
kube-apiserver- Kubernetes API 서버는 작업자 노드에서 Kubernetes 마스터로의 모든 클러스터 관리 요청에 대한 기본 시작점 역할을 수행합니다. Kubernetes API 서버는 팟(Pod) 또는 서비스 등의 Kubernetes 리소스의 상태를 변경하는 요청을 유효성 검증하고 처리하며, 이 상태를 etcd에 저장합니다.
konnectivity-server- Konnectivity 서버는 Konnectivity 에이전트와 연동하여 마스터 노드와 워커 노드를 안전하게 연결합니다. 이 연결은 팟(Pod) 및 서비스에 대한
apiserver proxy호출과 kubelet에 대한kubectl exec,attach및logs호출을 지원합니다. etcdetcd는 서비스, 배치 및 팟(Pod) 등 클러스터의 모든 Kubernetes 리소스의 상태를 저장하는 고가용성의 키 값 저장소입니다. etcd의 데이터는 IBM이 관리하는 암호화된 스토리지 인스턴스에 백업됩니다.kube-scheduler- Kubernetes 스케줄러는 새로 작성된 팟(Pod)을 감시하고 용량, 성능 요구사항, 정책 제한조건, 반친화성 스펙 및 워크로드 요구사항을 기반으로 이를 배치할 위치를 결정합니다. 요구사항과 일치하는 작업자 노드를 찾을 수 없으면 팟(Pod)이 클러스터에 배치되지 않습니다.
kube-controller-manager- Kubernetes 제어기 관리자는 복제본 세트 등의 클러스터 리소스의 상태를 감시하는 디먼입니다. 리소스의 상태가 변경되는 경우(예: 복제본 세트의 팟(Pod)이 작동 중지됨), 제어기 관리자는 정정 조치를 시작하여 필수 상태를 얻습니다.
작업자 노드 컴포넌트
각 작업자 노드는 클라우드 환경의 실제 머신(베어메탈), 또는 실제 하드웨어에서 실행되는 가상 머신입니다. 작업자 노드를 프로비저닝할 때 해당 작업자 노드에서 호스팅되는 컨테이너에 사용 가능한 리소스를 판별합니다. 워커 노드에는 IBM 에서 관리하는 컨테이너 런타임, 별도의 컴퓨팅 리소스, 네트워킹 및 볼륨 서비스가 설정되어 있습니다. 기본 제공 보안 기능은 격리, 리소스 관리 기능 및 작업자 노드 보안 준수를 제공합니다.
작업자 노드 및 모든 작업자 노드 컴포넌트는 사용자 전용이며 다른 IBM 고객과 공유되지 않습니다. 하지만 작업자 노드 가상 머신을 사용하는 경우, 기본 하드웨어는 선택한 하드웨어 격리 레벨에 따라 다른 고객과 공유될 수 있습니다.
kubelet과 같은 기본 작업자 노드 컴포넌트 수정은 지원되지 않으며 이를 수행하면 예기치 못한 결과가 나타날 수 있습니다.
다음 표에서는 작업자 노드의 컴포넌트를 설명합니다.
kube-system 네임스페이스
ibm-master-proxyibm-master-proxy는 작업자 노드의 요청을 고가용성 마스터 복제본의 IP 주소로 전달합니다. 단일 구역 클러스터에서 마스터에는 하나의 마스터 IP 주소와 도메인 이름을 지닌 별도 호스트의 3개 복제본이 있습니다. 다중 구역 가능 구역에 있는 클러스터의 경우, 마스터에는 구역 간에 전개된 3개의 복제본이 있습니다. 따라서 각각의 마스터에는 전체 클러스터 마스터에 대해 하나의 도메인 이름을 지닌 DNS에 등록된 자체 IP 주소가 있습니다.konnectivity-agent- Konnectivity 에이전트는 Konnectivity 서버와 연동하여 마스터 노드와 워커 노드를 안전하게 연결합니다. 이 연결은 팟(Pod) 및 서비스에 대한
apiserver proxy호출과 kubelet에 대한kubectl exec,attach및logs호출을 지원합니다. kubelet- kubelet는 모든 작업자 노드에서 실행되는 팟(Pod)이며, 작업자 노드에서 실행되는 팟(Pod)의 상태를 모니터링하고 Kubernetes API 서버가 전송하는 이벤트를 감시하는 역할을 담당합니다. 이벤트를 기반으로, kubelet는 팟(Pod)을 작성 또는 제거하고 활성 상태 및 준비 상태 프로브를 보장하며 팟(Pod)의 상태를 다시 Kubernetes API 서버에 보고합니다.
coredns- 기본적으로, Kubernetes는 클러스터에서 CoreDNS 팟(Pod)(또는 버전 1.12 이하에서 KubeDNS)과 서비스를 스케줄합니다. 컨테이너는 자동으로 DNS 서비스의 IP를 사용하여 기타 팟(Pod) 및 서비스에 대한 자체 검색에서 DNS 이름을 해석합니다.
calico- Calico는 클러스터에 대한 네트워크 정책을 관리하고 다음과 같은 일부 컴포넌트를 구성합니다.
calico-cni: Calico 컨테이너 네트워크 인터페이스(CNI)는 컨테이너의 네트워크 연결을 관리하고 컨테이너가 삭제될 때 할당된 리소스를 제거합니다.calico-ipam: Calico IPAM은 컨테이너의 IP 주소 지정을 관리합니다.calico-node: Calico 노드는 Calico인 네트워킹 컨테이너에 필요한 다양한 컴포넌트를 함께 번들로 묶는 컨테이너입니다.calico-policy-controller: Calico 정책 제어기는 설정된 네트워크 정책을 준수하는 인바운드 및 아웃바운드 네트워크 트래픽을 감시합니다. 트래픽이 클러스터에서 허용되지 않으면 클러스터에 대한 액세스가 차단됩니다. Calico 정책 제어기는 클러스터에 대한 네트워크 정책을 작성하고 설정하는 데도 사용됩니다.kube-proxy- Kubernetes 네트워크 프록시는 모든 작업자 노드에서 실행되며 클러스터에서 실행되는 서비스의 TCP 및 UDP 네트워크 트래픽을 전달하거나 로드 밸런싱하는 디먼입니다.
kube-dashboard- Kubernetes 대시보드는 사용자가 클러스터에서 실행하는 애플리케이션과 클러스터를 관리하고 해당 문제점을 해결할 수 있도록 허용하는 웹 기반 GUI입니다.
heapster- Heapster는 모니터링 및 이벤트 데이터의 클러스터 전체 집계기입니다. Heapster 팟(Pod)은 클러스터의 모든 노드를 검색하고 각 노드의 kubelet에서 사용 정보를 조회합니다. Kubernetes 대시보드에서 이용 그래프를 찾을 수 있습니다.
- Ingress ALB
- Ingress는 공용 또는 개인용 요청을 클러스터의 여러 앱에 전달함으로써 클러스터 내에서 네트워크 트래픽 워크로드의 밸런스를 유지하는 데 사용될 수 있는 Kubernetes 서비스입니다. 공용 또는 사설 네트워크를 통해 앱을 노출하려면 Ingress 리소스를 작성하여 Ingress 애플리케이션 로드 밸런서(ALB)에 앱을 등록해야 합니다. 그러면 단일 URL 또는 IP 주소를 사용하여 여러 앱에 액세스할 수 있습니다.
- 스토리지 제공자
- 모든 클러스터는 파일 스토리지를 프로비저닝하는 플러그인으로 설정되어 있습니다. 사용자는 기타 추가 기능(예: 블록 스토리지)의 설치를 선택할 수 있습니다.
ibm-system 네임스페이스
- 로깅 및 메트릭
-
IBM Cloud Logs 및 IBM Cloud® Monitoring 서비스를 사용하여 로그 및 메트릭 관련 작업을 수행할 때 콜렉션 및 보유 기능을 확장할 수 있습니다. 로드 밸런서
-
로드 밸런서는 공용 또는 개인용 요청을 앱에 전달하여 클러스터에서 네트워크 트래픽 워크로드의 밸런스를 유지하는 데 사용될 수 있는 Kubernetes 서비스입니다.
default 네임스페이스
- 앱 팟(Pod) 및 서비스
default네임스페이스 또는 사용자가 작성하는 네임스페이스에서 팟 및 서비스에 앱을 배치하여 해당 팟과 통신할 수 있습니다.
VPC 클러스터
다음 다이어그램 및 표에서는 IBM Cloud Kubernetes Service VPC 클러스터 아키텍처에서 설정되는 기본 컴포넌트에 대해 설명합니다.
다음 아키텍처 개요는 VPC 인프라 제공자에만 해당합니다. 클래식 인프라 제공자에 대한 아키텍처 개요는 클래식 클러스터 아키텍처를 참조하십시오.
| 컴포넌트 | 설명 |
|---|---|
| 마스터 | API 서버 및 etcd를 포함한 마스터 컴포넌트에는 세 개의 복제본이 있으며 보다 높은 가용성을 위해 구역에 분산됩니다. 마스터에는 커뮤니티 Kubernetes 아키텍처에 설명된 것과 동일한 컴포넌트가 포함됩니다. 마스터 및 모든 마스터 컴포넌트는 사용자 전용이며 다른 IBM 고객과 공유되지 않습니다. |
| 작업자 노드 | IBM Cloud Kubernetes Service를 사용하면 클러스터가 관리하는 가상 머신은 작업자 노드라고 하는 인스턴스입니다. 이러한 작업자 노드 가상 머신 및 모든 작업자 노드 컴포넌트는 사용자 전용이며 다른 IBM 고객과 공유되지 않습니다. 그러나 기반 하드웨어는 다른 IBM 고객과 공유합니다. API, CLI 또는 콘솔과 같이 IBM Cloud Kubernetes Service에서 제공하는 자동화 도구를 통해 작업자 노드를 관리합니다. 클래식 클러스터와 달리 VPC 컴퓨팅 작업자 노드는 인프라 포털 또는 별도의 인프라 청구에 표시되지 않지만, 대신 IBM Cloud Kubernetes Service에서 작업자 노드에 대한 모든 유지보수 및 비용 청구 활동을 관리합니다. 작업자 노드에는 클래식 아키텍처에 설명된 것과 동일한 컴포넌트가 포함됩니다. |
| 클러스터 네트워킹 | 지정하는 구역의 VPC 서브넷에 작업자 노드가 작성됩니다. 기본적으로 클러스터에 대한 퍼블릭 및 프라이빗 클라우드 서비스 엔드포인트가 사용으로 설정되어 있습니다. 마스터와 작업자 노드 간의 통신이 사설 네트워크를 통해 수행됩니다. 인증된 외부 사용자는 kubectl 명령을 실행하는 등 공용 네트워크를 통해 마스터와 통신할 수 있습니다. 사설 네트워크에 VPC VPN을 설정하여 온프레미스 서비스와
통신하도록 클러스터를 선택적으로 설정할 수 있습니다. |
| 앱 네트워킹 | 클러스터에서 앱에 대한 Kubernetes LoadBalancer 서비스를 작성할 수 있으며, 이 서비스는 클러스터 외부의 VPC에 VPC 로드 밸런서를 자동으로 프로비저닝합니다. 로드 밸런서는 다중 구역이며 작업자 노드에서 자동으로 열리는 사설 NodePort를 통해 앱에 대한 요청을 라우팅합니다. 자세한 정보는 VPC 로드 밸런서를 사용하여 앱 노출을
참조하십시오. Calico는 클러스터 네트워킹 정책 패브릭으로 사용됩니다. |
| 스토리지 | 블록 지속적 스토리지만 설정할 수 있습니다. 블록 스토리지는 클러스터 추가 기능으로 사용할 수 있습니다. 자세한 정보는 IBM Block Storage for IBM Cloud설정 을 참조하십시오. |