본문 바로가기
CRD (Custom Resource Definition) 만들어보자 1. CRD 정의하기todo-crd.yaml 파일을 만들어서 다음 내용을 저장: apiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata: name: todos.example.comspec: group: example.com # group: example.com # 이 리소스가 속한 API 그룹 이름입니다. # 기본 쿠버네티스 리소스는 보통 apps, batch, core 등의 그룹을 가지는데 # 여기서는 사용자가 정의한 example.com 그룹입니다. # 실제로 사용할 때는 이런 식으로 씁니다: # 최상위 선언 예) apiVersion: example.com/v1kind: Todo versions: - name: v.. 2025. 10. 14.
쿠버네티스 리소스(기본 + 커스텀)는 공통 구조 쿠버네티스 리소스(기본 + 커스텀)는 공통 구조를 따릅니다:apiVersion: ...kind: ...metadata: ...spec: ...status: ...이건 “강제 규약(convention)”이라서,리소스를 생성할 때 내부 컨트롤러나 kubectl explain 같은 툴이자동으로 spec과 status를 구분해 처리합니다. 즉,CRD의 스키마(openAPIV3Schema)에서 루트 수준에 spec이 있어야Kubernetes가 리소스의 구조를 올바르게 인식합니다. 2025. 10. 13.
클러스터가 파드를 제어하는 방식 클러스터가 파드를 제어하는 방식클러스터는 파드를 제어할 때 ServiceAccount를 사용하지 않습니다. 대신, 다음과 같은 고유한 방식으로 파드를 관리합니다.API 서버의 통신: 클러스터의 핵심인 API 서버는 파드에 직접 접속하지 않고, 파드의 상태를 etcd에 기록합니다. 예를 들어, kubectl delete pod 명령을 내리면, API 서버는 etcd에 해당 파드를 '삭제해야 함'이라고 기록합니다.컨트롤러와 kubelet: 클러스터의 다양한 컨트롤러들이 etcd를 지속적으로 감시합니다. 삭제 명령이 감지되면, kubelet 에이전트가 해당 노드에서 파드를 종료하는 작업을 수행합니다. Kubelet은 클러스터 컨트롤 플레인에 의해 관리되며, 파드에 대한 직접적인 제어 권한을 가지고 있습니다.요.. 2025. 8. 26.
ServiceAccount 쿠버네티스에서 ServiceAccount는 파드(Pod)가 쿠버네티스 API 서버와 통신할 때 사용되는 신원(identity)입니다.이는 사용자가 자신의 신원을 인증하는 방식과 유사하게, 파드가 쿠버네티스 클러스터 내에서 API 작업을 수행할 수 있도록 해주는 계정 역할을 합니다.ServiceAccount의 핵심 개념자동 할당: 쿠버네티스에서 생성되는 모든 파드에는 별도로 지정하지 않아도 default라는 이름의 ServiceAccount가 자동으로 할당됩니다.네임스페이스 종속성: ServiceAccount는 특정 네임스페이스에 종속됩니다. 다른 네임스페이스의 ServiceAccount는 사용할 수 없습니다.토큰: 각 ServiceAccount에는 시크릿(Secret)에 저장된 토큰이 연결됩니다. 이 토.. 2025. 8. 26.
[K8s] 가상 IP 및 서비스 프록시 https://kubernetes.io/ko/docs/reference/networking/virtual-ips/쿠버네티스 클러스터의 모든 노드는 kube-proxy를 실행한다(kube-proxy를 대체하는 구성요소를 직접 배포한 경우가 아니라면).kube-proxy는 ExternalName 외의 type의 서비스를 위한 가상 IP 메커니즘의 구현을 담당한다.항상 발생하는 질문은, 왜 쿠버네티스가 인바운드 트래픽을 백엔드로 전달하기 위해 프록시에 의존하는가 하는 점이다. 다른 접근법이 있는가? 예를 들어, 여러 A 값 (또는 IPv6의 경우 AAAA)을 가진 DNS 레코드를 구성하고, 라운드-로빈 이름 확인 방식을 취할 수 있는가?There are a few reasons for using proxyin.. 2025. 6. 18.
[K8s] Controler-node ip가 변경될 경우 1. /etc/kubernetes/manifest 아이피 변경/etc/kubernetes/manifest 하위 대상cd /etc/kubernetes/manifestsudo find . -type f -exec sed -i 's/192.168.137.30/192.168.56.30/g' {} +2. 인증서 재생성기존 X.509 인증서 중 재생성이 필요한 인증서를 지운 후 재생성출처: https://github.com/kubernetes/kubeadm/issues/338?ref=jangho.io#issuecomment-407383077cd /etc/kubernetes/pki# apiserver 인증서 삭제sudo rm apiserver.{crt,key} # a. Default CIDR이 10.96.0.0/1.. 2025. 6. 18.