K8S Context와 친해지기

d4v1d·2022년 3월 7일
2

Docker & Kubernetes

목록 보기
4/8

개요

K8S context의 개념과 사용에 대해 간단히 정리한 포스트입니다. 🔥

Context

Config 파일을 이용하여 여러 개의 클러스터에 쉽게 접근할 수 있도록 하는 것이 context입니다. kubectl을 이용하여 CLI로 쿠버네티스 작업을 할 때, 어느 클러스터 혹은 네임스페이스에 작업을 할지를 결정할 수 있습니다.

kubectl config

먼저, kubectl config view를 이용해 현재 K8S 설정이 어떻게 되어있는지 알아봅시다!

» kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://kubernetes.docker.internal:6443
  name: docker-desktop
- cluster:
    insecure-skip-tls-verify: true
    server: https://xxx.xxx.xxx:6443
  name: flask-test-cluster-cluster
contexts:
- context:
    cluster: docker-desktop
    user: docker-desktop
  name: docker-desktop
- context:
    cluster: flask-test-cluster-cluster
    user: dave.rhee_flask-test-cluster
  name: flask-test-cluster-context
current-context: flask-test-cluster-context
kind: Config
preferences: {}
users:
- name: dave.rhee_flask-test-cluster
  user:
    token: REDACTED
- name: docker-desktop
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED

kubectl config에는 몇 가지 살펴볼 영역들이 있습니다.

  • apiVersion 사용할 K8S API 버전
  • clusters 생성한 클러스터 목록과 각 클러스터의 이름, 서버 주소 등
  • contexts 어떤 사용자가 어떤 이름의 클러스터를 사용하는지에 대한 정보
  • kind 이 파일은 설정 파일이므로 kind가 Config
  • users 사용 권한을 가진 사용자 정보

Context 확인

여러 개의 클러스터와 컨텍스트가 존재하는 경우, kubectl 명령어를 통해 어떤 컨텍스트에서 작업할 것인지를 명시해야 합니다.

전체 컨텍스트 목록과 현재 어떤 컨텍스트로 설정되어있는지는 아래 명령어를 통해 확인할 수 있습니다.

» kubectl config get-contexts
CURRENT   NAME                         CLUSTER                      AUTHINFO                       NAMESPACE
          docker-desktop               docker-desktop               docker-desktop                 
*         flask-test-cluster-context   flask-test-cluster-cluster   dave.rhee_flask-test-cluster

kubectl config use-context 명령어를 통해 컨텍스트를 스위치할 수 있습니다.

» kubectl config use-context docker-desktop  
Switched to context "docker-desktop".
------------------------------------------------------------------------------------------------
» kubectl config get-contexts
CURRENT   NAME                         CLUSTER                      AUTHINFO                       NAMESPACE
*         docker-desktop               docker-desktop               docker-desktop                 
          flask-test-cluster-context   flask-test-cluster-cluster   dave.rhee_flask-test-cluster

kubectx

위에서 소개한대로 kubectl config use-context를 통해 작업할 컨텍스트를 바꿀 수도 있지만, kubectx라는 툴을 통해 더욱 쉽게 컨텍스트 스위치 작업을 할 수 있습니다.
kubectx GitHub

krew 설치 https://krew.sigs.k8s.io/docs/user-guide/setup/install/
Krew는 kubectl 플러그인을 쉽게 사용할 수 있도록 해주는 툴입니다.

kubectx 설치

# Homebrew로 설치하기
brew install kubectx
# Krew로 설치하기
kubectl krew install ctx

kubectx로 컨텍스트 확인 및 변경

현재 사용하고 있는 컨텍스트는 하이라이트되어 표시됩니다.

» kubectx flask-test-cluster-context
Switched to context "flask-test-cluster-context".
------------------------------------------------------------------------------------------------
~ » kubectx
docker-desktop
flask-test-cluster-context # 하이라이트
------------------------------------------------------------------------------------------------
~ » kubectx - # 이전 컨텍스트로 돌아가기
Switched to context "docker-desktop".
------------------------------------------------------------------------------------------------
~ » kubectx
docker-desktop # 하이라이트
flask-test-cluster-context

정리

kubectl config view 명령어를 통해 현재 kubectl 설정 정보를 확인할 수 있습니다. 작업할 수 있는 클러스터, 컨텍스트, 사용자 목록 등을 볼 수 있는데, 컨텍스트를 스위치함으로써 작업 환경을 바꿀 수 있습니다. 쉽게 말해 현재 터미널에서 여러 개의 컨텍스트(그리고 클러스터)를 오가며 작업할 수 있는 것이죠!
kubectl config use-context 대신 kubectx를 사용하면, 컨텍스트에 관한 정보만을 빠르게 확인할 수 있고 컨텍스트 스위치도 간편하게 할 수 있습니다. 🎧

profile
데이터 엔지니어/백엔드 개발자 d4v1d의 개발 일지🐯

0개의 댓글