Kubernetes 운영자는 Kubernetes의 기능을 확장하여 더 복잡한 상태 저장 워크로드를 관리하는 애플리케이션 배포 방법입니다. 이러한 워크로드의 예로는 데이터베이스, 쿼럼 메커니즘을 사용하는 분산 시스템 및 단일 단계로 쉽게 재구성할 수 없는 응용 프로그램이 있습니다. 상태 비저장 워크로드에서도 운영자는 Kubernetes에서 "애플리케이션"의 일관된 정의를 형성하는 데 도움이 됩니다.
이 모든 것을 달성하기 위해 Kubernetes 운영자는 축적된 모범 사례와 운영 절차를 Kubernetes에서 실행되는 소프트웨어로 체계화합니다. 이전에는 클러스터 외부의 스크립트 및 사이트 안정성 엔지니어(SRE)가 관리하던 것이 이제 관리되는 워크로드가 있는 클러스터에서 실행되는 사용자 지정 Kubernetes 확장에 의해 관리됩니다. 몇 가지 운영자 기능은 잠재적으로 복잡한 설치 및 업데이트 루틴, 백업, 복원, 장애 조치 또는 장애 복구와 같은 수명 주기 이벤트 및 메트릭 기반 확장입니다.
대부분의 Kubernetes 개발은 상태 비저장, 프론트 엔드, API 중심 애플리케이션에 중점을 두고 있지만 운영자는 나머지 스택도 환경으로 가져올 수 있습니다. 이는 Kubernetes가 IT 및 엔지니어링 부서의 이식성의 중요한 측면이 됨에 따라 구성 및 관리를 단순화합니다. 또한 운영자는 구성 드리프트를 자동으로 수정하여 가동 시간을 늘리고 운영 노동력을 줄입니다. 이는 이 방법을 플랫폼 독립적으로 만들고 Kubernetes 커뮤니티에서 주도하는 Kubernetes의 자체 확장 메커니즘으로 달성할 수 있습니다.
Kubernetes 운영자 작동 방식
운영자는 Kubernetes 마스터 API에 연결하고 관련 이벤트를 감시합니다. 그들은 고객 Kubernetes 컨트롤러 역할을 하여 원하는 상태와 실제 상태를 지속적으로 비교하는 자체 객체 유형을 클러스터에 도입합니다. 원하는 상태는 YAML로 선언되며 Kubernetes 객체를 생성하는 사용자가 표현합니다.
운영자는 이러한 사용자 정의 리소스 정의 또는 이벤트를 감시하고 이러한 개체가 나타나거나 업데이트되거나 삭제될 때마다 루프를 실행하기 시작합니다. 운영자는 클러스터에서 Kubernetes Pod로 실행됩니다.
운영자는 클러스터 관리자가 설치하지만 최종 사용자를 돕기 위해 구축되었습니다. 운영자가 Kubernetes와 통합하는 방식을 통해 사용자는 kubectl 도구를 계속 사용하고 다른 원시적인 Kubernetes 기본 제공 리소스와 마찬가지로 잠재적으로 복잡한 소프트웨어를 처리할 수 있습니다.