본문 바로가기

TIL/개인공부

[Kubernetes] k8s관련 끄적끄적

반응형

 

쿠버네티스 마스터의 구성 요소

  • kube-apiserver
    • 클러스터 내 모든 컴포넌트와 외부 클라이언트가 통신하는 API 엔드 포인트. kubectl 과 같은 클라이언트나 다른 마스터 구성 요소들은 API서버와 상호작용하여 상태를 조회하거나 작업을 요청함.
  • ETCD
    • 클러스터의 모든 상태 정보를 저장하는 분산 키-값 데이터 저장소. Pod, Service, Namespace 등 모든 리소스에 대한 상태가 ETCD에 저장이됨.
    • 고가용성을 위해 다중 노드로 구성이 필요하며 꼭 마스터 노드에 존재하지않아도됨
  • kube-controller
    • 클러스터 상태를 지속적으로 모니터링하고, 원하는 상태로 맞추기 위해 필요한 작업을 수행함.
    • 예를들어서
      • Node Controller : 노드의 상태를 모니터링해서 만일 장애가 발생하면 해당 노드를 비활성화함
      • Replication Controller: 파드 수를 원하는 상태로 유지
      • Endpoint Controller: 서비스와 파드의 엔드포인트를 연결
      • Service Account & Token Controller: 새로운 네임스페이스가 생성되면 서비스 계정과 API접근 토큰을 자동으로 생성해줌
  • kube-scheduler
    • 새로 생성된 파드를 적절한 노드에 배치하는 작업을 수행함. 즉, 클러스터 내 노드의 상태, 리소스 사용량, Pod의 요구사항들을 분석해서 최적의 노드 위치에 스케줄링을 진행함.

 

쿠버네티스 마스터 노드가 2대일 경우 생기는 문제는?

쿠버네티스 마스터 노드는 안정성과 고가용성을 위해 일반적으로 3대 이상의 홀수 개로 구성하는것이 권장됨.

 

주된 이유는 ETCD의 이유에 있는데, 마스터 노드마다 ETCD가 생성이되고 ETCD는 위에서도 명시했다시피 key-value값으로 존재하며 클러스터의 상태를 기록하고 있음. 그리고 클러스터의 상태는 ETCD 과반수에 상태값에 따라서 결정되는데, 만약에 짝수개의 마스터 노드로 존재할경우 이러한 "과반수"의 개념이 사라지게 되어 잘못된 ETCD정보가 '옳바름' 으로 잘못인식할수있음.

 

이러한 과반수 합의를 쿼럼(quorum)이라고 부르기도함. 시간될때 아래 내용 정독이 필요함.

https://tech.kakao.com/posts/484

 

Kubernetes 운영을 위한 etcd 기본 동작 원리의 이해 - tech.kakao.com

안녕하세요, 클라우드플랫폼팀 ted입니다. Container Cloud 관련 업무...

tech.kakao.com

쿠버네티스 인증서 만료가 될 경우 발생할수있는 문제?

쿠버네티스 인증서가 만료되면 안정성과 접근성에 큰 영향을 미치는데 주된 영향은 다음과 같음

  • 서비스 중단
    • 기존 서비스는 정상적으로 돌아갈수도 있으나, 만료 시점 이후에 생성되는 리소스들에 대해서는 정상적으로 실행이 안될수있음.
    • 이유는 kube-apiserver접근이 어려워서임
  • API서버 접근 불가
    • 클러스터 내의 사용자와 앱은 kube-apiserver를 통해 모든 작업을 처리하는데, 인증서가 만료되면 kubectl 명령어를 사용한 모든 요청이 실패하게 되어 클러스터 리소스 관리, 배포, 설정 변경이 불가능해짐
  • 노드와 마스터 노드 간의 통신 불가
    • 인증서가 만료되면 kubelet과 kube-apiserver 서버간의 통신이 차단됨에 따라 pod 스케줄링, 상태관리, 로깅 등과 같은 기능이 중단될 수 있음
  • 컨트롤러와 서비스 간 상호작용 실패
    • 컨트롤러 매니저 및 스케줄러와 같은 컨트롤 플레인 구성요소가 kube-apiserver와 통신하는데 인증서가 만료되면 해당 통신에 영향을 주어 replicaset의 자동 관리 및 스케줄링 기능에 영향을 줌
반응형