사설 레지스트리(docker, harbor, ECR 등)를 이용할 때 인증 정보(자격증명)를 같이 전달해야 하는 경우 쿠버네티스에서 제공하는 Secret 리소스를 이용할 수 있다. 사설 레지스트리의 인증정보를 포함하고 있는 Secret 리소스를 생성한 다음 Pod 혹은 Deployment와 같은 리소스가 사설 레지스트리에서 컨테이너 이미지를 가져올 때 생성한 Secret 리소스를 사용하도록 설정해야 한다. 사설 레지스트리 인증을 위한 Secret 생성Secret을 생성하는 방식은 kubectl 명령에 옵션으로 인증정보를 포함한 도커의 config.json 파일을 적용하거나 직접 커맨드에 인증 정보를 할당할 수 있고, 또는 YAML 파일에 인증정보를 입력해서 생성하는 방법이 있다. 1. kubectl 명령..
Infrastructure & Systems/Kubernetes
kubespray는 k8s 클러스터를 중앙에서 ansible을 이용해서 진행할 수 있도록 지원하는 오픈 소스 도구다. 코드를 이용해서 전체 클러스터를 컨트롤할 수 있기 때문에 규모가 큰 환경에서 사용하기 적합하다. 설정에 따라서 운영에 필요한 애드온을 자동으로 설치할 수 있고, 폐쇠망 환경에서도 설치가 가능하도록 지원한다.VM 서버 구성Master Node: 3대Worker Node: 2대OS : Ubuntu 24.04 LTSStorage: 50GB 대표 Master 노드 설정hosts 파일 설정# vim /etc/hostsmaster1 10.0.0.168master2 10.0.0.207master3 10.0.0.53worker1 10.0.0.149worker2 10.0.0.245pem key 파일 설..
상태 유지가 필요한 데이터베이스, 분산 시스템과 같은 Application을 관리하는데 사용되는 오브젝트다. 고유한 네트워크 식별자를 제공하고, 스토리지의 데이터를 영구적으로 사용 가능하도록 기능을 지원한다.StatefulSet 기본 개요고유한 네트워크 식별자가 필요하거나 스토리지를 지속적으로 적용해서 사용하고자 할 때 적합하다. 파드에는 고유한 id 값이 할당되기 때문에 파드가 재실행되더라도 동일한 PV 마운트가 가능하다.Deployment에서 PVC를 사용하면 동일한 PV가 마운트 되고, StatefulSet은 파드별로 PVC 생성 후 볼륨이 할당된다.Deployment는 파드를 최적의 워커 노드에 배치하려는 특성이 있지만 StatefulSet은 최대한 동일 노드에 배치한다. StatefulSet 주..
k8s cluster 전체 노드에 특정 Pod를 실행시키고자 할 때 사용한다. 로그 수집, 모니터링과 같이 항상 실행해 두어야 하는 Pod를 생성할 때 사용한다.Sample YAMLapiVersion: apps/v1kind: DaemonSetmetadata: name: fluentd-elasticsearch namespace: kube-system labels: k8s-app: fluentd-loggingspec: selector: matchLabels: name: fluentd-elasticsearch updateStrategy: type: RollingUpdate # roller update, on delte 중 선택 template: metadata: ..
Deployments는 실행시켜야 할 Pod의 개수 유지, Application 배포 과정에 롤링 업데이트 적용, 롤백 등의 기능을 지원한다.Sample YAML apiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deployment labels: app: nginx-deployment # deployment labelspec: replicas: 3 selector: matchLabels: app: nginx-pod # spec.template.metadata.labels와 같은 값으로 유지 template: metadata: labels: app: nginx-pod # spec.selecto..
쿠버네티스 클러스터를 전환하거나 Defalut 네임스페이스를 `kubectl` 실행할 때마다 `--namespace` 옵션을 지정하지 않고 사용하는 방법1. kubeconfig 파일 위치 설정kubectl 설정은 ~/.kube/config 파일에 저장파일 위치를 변경하고자 할 때는 KUBECONFIG 환경 변수에 해당 위치 정보 입력KUBECONFIG 파일에 콜론(:)으로 구분해서 여러 설정 파일 지정 가능(kubectl에 한 번에 모두 적용)2. kubeconfig 파일 구조kubeconfig 파일은 "클러스터 목록", "사용자 목록", "컨텍스트 목록", "현재 컨텍스트 이름" 네 부분으로 구성된다.apiVersion: v1kind: Configclusters:- name: [CLUSTER_NAME]..