티스토리 뷰

Devops 2회차/K8S Study

K8S-03_kubectl

SOO_JUNE 2022. 1. 2. 18:00

2021.12.18 - [Devops 2회차/K8S Study] - K8S-01_개요 및 스터디 계획

2021.12.25 - [Devops 2회차/K8S Study] - K8S-02_쿠버네티스 기초와 kubectl

 

참조

서적: 쿠버네티스 완벽 가이드
https://kubernetes.io/ko/docs/tasks/access-application-cluster/configure-access-multiple-clusters/

개요

기존 VM 쓰던 상황에서는 putty나 툴을 이용해서 ssh 접속을 하고,
그 안에서 서버에 필요한 작업들을 진행했다.
kubectl의 클러스터를 조작하려면 그럴필요 없이 마스터 API 조작을 통하여 진행하면 된다.
그 중 대표적인 방식이 kubectl 이라는 CLI (command line interface)를 사용 하는 것이다.

그러니까 내가 어디 ssh 접속 할 필요 없이 
단순하게 내 로컬에서 클러스터에 대한 인증 정보만 가지고 있으면 
커맨드로 클러스터 내부 리소스를 생성하고, 제거하는 등 다양한 관리를 할 수 있다.

앞으로 테스트를 위해 docker와 minikube를 사전에 설치하였다.
minikube는 로컬에서 쿠버네티스를 테스트 하기에 너무 잘 되어 있다.
설치하는 과정은 여기서는 다루지 않도록 한다.

인증정보

kubectl이 쿠버네티스 마스터와 통신하려면 접속 대상의 서버 및 인증 정보가 필요하다.
이 정보들은 경로 ~/.kube/config에 쓰여져 있다. 이 정보들을 kubeconfig 파일이라고 한다. 
해당 경로에 있는 미니큐브 파일을 참조해보면 아래와 같이 정보를 확인할 수 있다.

- name: minikube
  user:
    client-certificate: /Users/june.bee/.minikube/profiles/minikube/client.crt
    client-key: /Users/june.bee/.minikube/profiles/minikube/client.key

 

kubeconfig 파일은 여러개를 동시에 등록하여 관리할 수 있다.
공식문서를 참조하면 일반적인 kubeconfig 파일은 아래와 같다.

apiVersion: v1
kind: Config
preferences: {}

clusters:
- cluster:
  name: development
- cluster:
  name: scratch

users:
- name: developer
- name: experimenter

contexts:
- context:
  name: dev-frontend
- context:
  name: dev-storage
- context:
  name: exp-scratch

크게 세 개의 설정 항목이 있는 것을 확인할 수 있다.
clusters : 접송 대상 클러스터 정보
users : 인증 정보
contexts : 클러스터, user, namespace 지정에 대한 정의

kubeconfig를 변경하고자 할 때에는 kubectl config 명령어를 사용한다.

## 클러스터 정의 편집
kubectl config set-clusetr prd-clusetr \
--server=https://localhost:8082


## User 인증 정보 정의 편집
kubectl config set-credentials admin-user \
--client-certificate=./sample.crt \
--client-key=./sample.key \
--embed-certs=true


## 컨텍스트 정의를 편집
kubectl config set-context prd-admin \
--cluster=prd-cluster \
--user=admin-user \
--namespace=default

여기까지가 쿠버네티스 활용을 위한 기본적인 사전내용이다.
이제 다음 글부터는 본격적으로 리소스를 관리하는 내용을 다뤄보기로 한다.