[k8s] 랜처 데스크탑

도커 데몬은 컨테이너를 실행 및 관리하는 백그라운드 서비스이다. 쿠버네티스는 도커를 사용하여 클러스터 전반에 걸쳐 컨테이너들을 오케스트레이션함으로써 애플리케이션의 배포와 관리를 자동화한다. 로컬 환경에서 쿠버네티스를 통한 컨테이너 오케스트레이션 환경을 구축하기 위해 미니큐브(Minikube), 랜처 데스크탑(Rancher Desktop), 포드맨(Podman)과 같은 플랫폼을 사용할 수 있다. 이러한 도구들은 쿠버네티스를 기반으로 구축되었으며 컨테이너 애플리케이션과 상호 작용할 수 있는 사용자 친화적인 인터페이스를 제공한다. 주로 로컬 개발 및 테스트 목적으로 사용되지만 프로덕션 환경에서도 사용할 수 있다. 그러나 프로덕션 워크로드에는 전용 쿠버네티스 솔루션을 사용하는 것이 권장된다.

랜처 데스크탑은 도커 데몬과 도커 CLI를 내장하고 있으며 컨테이너 이미지의 빌드 및 실행, 원격 저장소에 대한 이미지의 풀, 푸시를 지원한다. 랜처 데스크톱은 오픈 소스 프로젝트이며 무료로 다운로드하여 사용할 수 있다. 라이센스는 아파치 라이선스 2.0을 따른다. 랜처 데스크탑이 제공하는 컨테이너 엔진에는 containerd와 dockerd(moby)가 있으며 기본적으로 dockerd를 사용한다. 랜처 데스크탑에는 경량 쿠버네티스인 k3s가 내장되어 있어 로컬 환경에서 컨테이너 오케스트레이션 플랫폼으로도 사용 가능하다. 쿠버네티스 클러스터의 정보를 확인하고 관리하기 위한 UI인 클러스터 대시보드도 제공한다.


랜처 데스크탑 기본 설정 및 구성

랜처 데스크탑을 설치하면 rancher-desktop이라는 이름의 도커 컨텍스트가 추가된다. 이 컨텍스트의 도커 엔드포인트는 unix:///Users/유저명/.rd/docker.sock이다.

기본적으로 랜처 데스크탑은 기본 경로인 ~/.kube/config 파일에 쿠버네티스 클러스터 관련 구성 정보를 저장하고 이를 사용한다. 환경 변수를 설정하여 구성 파일 탐색 경로를 변경할 수 있다. kubectl은 기본적으로 ~/.kube/config 파일에서 클러스터, 인증, 컨텍스트 정보를 읽는다. 이러한 클러스터 구성 정보를 kubeconfig라고 한다.


관련 파일 경로

  • ~/Library/Application Support/rancher-desktop: 가상 머신의 현재 구성 및 모든 관련 설정을 저장하는 스냅샷, 컨테이너 이미지 등
  • ~/Library/Preferences/rancher-desktop: 설정 파일
  • ~/Library/Logs/rancher-desktop: 로그 파일
  • ~/Library/Caches/rancher-desktop: 캐시 파일


SSH 접속

rdctl shell


호스트 접근

컨테이너의 /private/etc/hosts 파일에 127.0.0.1 host.docker.internal 추가


DNS 설정

클러스터 외부 DNS 설정

다음 방법 중 하나를 사용하여 클러스터 내부의 애플리케이션이 클러스터 외부의 DNS 서버에 접근하여 도메인 쿼리를 할 수 있도록 만든다.

  1. 도커 데몬 설정 (/etc/docker/deamon.json 파일 설정): 전역 설정

     {
         "dns": ["dns서버ip"],
         "dns-search": ["검색도메인문자열"]
     }
    
  2. 디플로이먼트 설정 (dnsConfig 설정): 생성 및 관리되는 모든 파드에 대해 설정

     apiVersion: v1
     kind: Deployment
     metadata:
       namespace: default
       name: 디플로이먼트명
     spec:
       template:
         spec:
           dnsPolicy: ClusterFirst
           dnsConfig:
             nameservers:
             - DNS서버IP
             searches:
             - 검색도메인
    
  3. 파드 내 설정 (dnsConfig 설정): 특정 파드에 대한 설정

     apiVersion: v1
     kind: Pod
     metadata:
       namespace: default
       name: 파드명
     spec:
       dnsPolicy: ClusterFirst
       dnsConfig:
         nameservers:
         - DNS서버IP
         searches:
         - 검색도메인
    


/etc/docker/daemon.json 파일은 도커 데몬의 전역 설정을 관리하는 구성 파일이다. 이 파일을 통해 도커 데몬의 동작을 다양하게 설정할 수 있다. daemon.json 파일에 DNS 관련 설정을 하여 도커가 관리하는 모든 컨테이너에 대한 기본 DNS 쿼리 방식을 변경할 수 있다. 이 파일을 수정함으로써 쿠버네티스 상에서도 도커가 관리하는 모든 컨테이너에 대한 설정이 가능하다.

디플로이먼트나 파드의 dnsConfig를 설정하는 것은 쿠버네티스 API를 통해 특정 파드에 대한 DNS 설정을 수행하는 것이다. 이를 통해 파드별로 다른 DNS 서버를 지정하거나, DNS 쿼리에 대한 타임아웃 값을 설정하는 등의 작업을 할 수 있다. 전체 시스템에 대한 DNS 설정을 위해서는 daemon.json을 사용하고, 특정 파드에 대한 세부적인 DNS 설정이 필요하다면 디플로이먼트나 파드의 dnsConfig를 사용한다.


helm

다음 명령어를 사용하여 쿠버네티스 컨텍스트 및 클러스터를 rancher-desktop으로 변경 후 helm 명령어를 사용하여 로컬 쿠데네티스 클러스터에 접근한다.

kubectl config use-context rancher-desktop


Troubleshootings

1.

쿠버네티스 클러스터 대시보드 실행 시 무한 로딩 문제가 발생한다면 steve.log 파일에서 9080 포트 충돌 로그가 있는지 확인하여 해당 포트를 사용하는 프로세스를 종료 후 랜처 데스크탑을 재시작한다. 또는 현재 도커 컨텍스트가 rancher-desktop인지 확인한다. rancher-desktop 도커 컨텍스트는 랜처 데스크탑을 실행하면 생성된다.


2.

PV 생성 시 nodeAffinity 필드를 설정하여 PV를 특정 노드로 제한할 수 있다. 노드의 레이블과 값을 사용하여 PV를 바인딩할 특정 노드를 선택할 수 있다. nodeAffinity 필드를 설정하지 않는 경우 해당 PV를 설정한 디플로이먼트에 의해 파드 생성 시 노드 어피니티 충돌 에러가 발생하게 된다. PV를 생성하고 난 후에는 nodeAffinity 필드 수정이 불가능하다.


참고

Categories:

Updated:

Comments