쿠버네티스 오퍼레이터란? ( Kubernetes Operator ) 먼저 오퍼레이터를 이해하기 위해서는 쿠버네티스의 동작흐름과 몇 가지 개념을 알 필요가 있다. 왜냐하면 오퍼레이터는 쿠버네티스가 동작 흐름을 기반으로 동작하기 때문이다. 쿠버네티스는 다음과 같은 두 가지 접근법이 존재한다. 명령형(Imperative) - shell을 통해 kubectl과 같은 커맨드라인으로 오브젝트를 핸들링하는 방식이다. 선언형(Declarative) - yaml과 같은 파일에 오브젝트를 정의하고 apply로 생성하는 방식이다. 사용자는 두 접근방식으로 명시적인 애플리케이션 상태를 설정하면 쿠버네티스의 컨트롤러들은 지속적으로(컨트롤 루프) 리소스들을 감시하고 current state(현재 상태) -> desired sta..
Kubernetes
쿠버네티스 운영중 빈번하게 클러스터 내부 파드간의 통신이 되지 않아 장애가 나는 경우가 많았는데, 그 중에서, 호스트를 찾지 못하는 문제가 많았다.(UnknownHostException) 그래서 보통 netshoot파드를 이용하여 간단하게 ping이나 curl 명령어로 통신을 테스트하곤 했었는데 이번 포스팅에서는 dig라는 dns 유틸리티를 활용해 테스트해보며 아주 아주 조금 더 평소에 잘 모르고 넘겼던 dns관련 개념들까지 간단히 알아보자. Prerequisites더보기1. 먼저 파드 간 통신을 디버깅한다는 전제로 nicolaka/netshoot 이미지 파드 안에서 진행2. 도메인은 coredns의 서비스 디스커버리로 예시(사전지식 필요)digdig는 DNS(Domain Name System) 조회를 ..
개요 보안 상의 이유로 IP의 Class A, Class B를 가리고, 등록할 엔드포인트 IP는 10.10.10.1 이라고 가정하겠다. 관리하는 쿠버네티스의 클러스터가 많아질 수록, kubeconfig 파일에 여러 개의 클러스터를 등록해서 사용하게 될 것이다. 그러던 중, 폐쇄망 환경의 클러스터를 연결한 외부망 프록시 IP를 클러스터의 엔드포인트로 설정하였는데, 아래와 같은 에러 문제가 발생하였다. kubectl get node Unable to connect to the server: x509: certificate is valid for x.x.0.1, x.x.50.24, x.x.10.176, not 10.10.10.1 클러스터에 등록하려는 엔드포인트 IP가 10,10.10.1이라고 가정하였을때 해당..
평소에 말로만 듣던 가시다님의 쿠버네티스 스터디를 운 좋게 참여하게 되었다. 마침 사내에서 DB를 컨테이너화를 고려하기도 했었고, 평소 오퍼레이터에 관심을 가지어 더욱 더 기대가 되었다. 이번 포스팅에는 1주차 스터디를 진행하면서 평소에 애매하게 알고만 있었던 스테이트풀셋을 정리해본다. Stateful vs Stateless 위 사진은 Stateful과 Stateless한 파드를 표현한 너무나도 유명한 그림이다. 우리가 애완동물에 기르면서 이름(고유한 식별자)를 붙이고, 가축과 같은 경우에는 굳이 이름을 붙이지 않는다. 즉, State의 유뮤는 사용하는 목적에 맞게 고유한 식별자를 부여하여 상태를 유지하거나, 또는 상태를 저장하지 않는 것이다. ( 일반적으로 웹서버와 같은 경우 stateless, 데이터..