본문으로 건너뛰기

· 약 3분
Andes Noh

k9s로 k8s 주요 명령어 확인#


  • ns#

    • namespace
    • 쿠버네티스 오브젝트를 묶는 하나의 가상공간 또는 그룹
  • pod#

    • pod
    • 컨테이너를 하나 이상 모아 놓은 것으로, 쿠버네티스 애플리케이션의 최소 단위
  • deploy#

    • deployment
    • 애플리케이션 단위를 관리하는 Controller이며, Kubernetes의 최소 유닛인 Pod에 대한 기준 spec을 정의한 Object
  • serivce#

    • service
    • pod의 논리적 집합이며 어떻게 접근할지에 대한 정책은 정의해놓은 것
    • 즉 각 Pod의 IP로는 외부에서 접근이 불가능하지만, 서비스는 이를 가능하게 허용
  • ingress#

    • 클러스터 외부에서 내부 서비스로 접근하는 HTTP, HTTPS 요청들을 어떻게 처리할지 정의해둔 규칙들의 모음
    • 클러스터 외부에서 접근가능한 URL을 사용할 수 있게 하며, 트래픽을 로드밸런싱도 해주고, SSL 인증서 처리를 해주고, 도메인 기반으로 가상 호스팅을 제공
    • 전제조건으로 인그레스 컨트롤러가 있어야 인그레스를 충족(AWS, GCE, Nginx, Treafik)
    • 인그레스 컨트롤러(ingress controller)는 자동으로 실행되지 않으며 클러스터에 가장 적합한 컨트롤러를 선택하여 구현
    • k3s + nginx ingress controller(no traefik)
    • Reference
  • secret#

    • 비밀번호, OAuth 토큰, ssh 키 같은 민감한 정보들을 저장하는 용도
  • Storageclasses#

    • 관리자가 제공하는 스토리지의 "classes"를 설명할 수 있는 방법을 제공

· 약 2분
Andes Noh

ssh 접속을 이용해 local pc에서 remote k3s 살펴보기#


  • 필요 파일#

    • /etc/rancher/k3s/k3s.yaml
    • 참조
  • scp 명령어 사용해서 local 클라이언트쪽으로 k3s.yaml 파일 이동#

    • scp -P [포트] [원격 서버 이름]@[원격서버 아이피]:[가져올 파일 경로] [붙여넣을 경로]
    • 포트는 추가 옵션
    • 소유자 변경 할것
      • 소유자 변경 명령(chown)은 이전 포스팅 확인
  • 원격 서버 ssh접속#

    • ssh [원격 서버 이름]@[원격서버 아이피] -p[포트] -L 6443:localhost:6443
    • -L: 터널링 옵션
    • A가 B에 접근가능, B가 C에 접근가능, A는 C에 접근 불가능일때 -L 사용시 A가 C에 접근가능
    • 이 경우는 k8s default 포트인 6443으로 터널링
  • 추가 터미널 오픈#

    • 위의 접속 터미널은 그대로 두고
    • 아래 명령어 실행
    • export KUBECONFIG=[local 클라이언트쪽으로 복사해온 k3s.yaml 파일 경로]
  • k9s 실행#

    • k9s

· 약 3분
Andes Noh

1. k8s 관련 기본 개념정리#


  • Image#

    • application 실행에 필요한 최소한의 환경(런타임, 라이브러리)을 포함하고 있는 바이너리 파일
    • 컨테이너 실행에 필요한 파일과 설정 값을 포함하고 있는 것
    • Dockerfile이라는 파일을 통해 제작
  • Container#

    • 앱이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술
    • 호스트에서 돌아가고 있는 하나의 프로세스
    • 즉 위의 Image를 실행한 상태로 격리된 공간에서 프로세스를 동작 시키는 기술
    • 하나의 Image로 여러개의 컨테이너 생성 가능
  • Docker#

    • 컨테이너를 다루는 도구
    • 즉 컨테이너 런타임중 가장 유명한 플랫폼
    • push, pull, run 명령어등을 통해 이미지를 컨테이너에 띄우고 실행
  • Kubernetes#

    • Docker를 이용해 컨테이너를 분산 배치, 상태 관리, 구동 환경 관리 즉 오케스트레이션 하는 도구

2. k3s 설치#


  • 개념#

    • 컨테이너 관련 기술을 개발하는 Rancher Labs에서 개발한 쿠버네티스
    • 기존 etcd 의존성을 없애고 sqlite를 기본으로 사용
    • 컨테이너 런타임으로 Docker을 대신해 containerd를 사용
    • 설치가 매우 간단
    • 단점으로는 기존 쿠버네티스에서 지원하는 과거 버전 API 미지원
  • 설치 방법#

    • curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--no-deploy kubernetes-dashboard" sh -
    • 대쉬보드 설치 X 옵션 추가
    • 대쉬보드 관련해서는 다음 글에서 설명(k9s)
  • 설치 완료#

    k3s

· 약 1분
Andes Noh

1. k9s란?#


  • 개념#

    • 커맨드 라인 도구인 kubectl을 대신해서 쿠버네티스 클러스터를 제어할수 있는 터미널 기반 UI툴

2. k9s 설치#


3. k3s 살펴보기#

  • /etc/rancher/k3s/k3s.yaml 파일을 적당한 폴더로 이동 및 이름 변경#

  • 옮긴 파일의 소유자 변경#

    • sudo chown 'YOUR OWNER':'YOUR GROUP' 'FILE NAME'
  • k9s --kubeconfig /YOUR DIRECTORY/YOUR FILE#

    k9s

· 약 1분
Andes Noh

1. LAN#

  • cd /etc/netplan 커맨드를 이용해 netplan 폴더로 이동#

  • 폴더 안에 있는 yaml파일을 확인 후 아래 형식에 맞춰 수정(우분투 버전에 따라 파일 이름은 상이)#

  • 아래 설정의 enp3s0 부분은 랜카드이기때문에 다를수 있음#

  • DHCP 설정#

network:  ethernets:    enp3s0:      dhcp4: true  version: 2
  • STATIC#

network:  ethernets:    enp3s0:      dhcp4: no      addresses: [192.168.0.167/24]      gateway4: 192.168.0.1      nameservers:        addresses: [8.8.8.8, 1.1.1.1]      optional: true  version: 2

2. WIFI#

  • 우분투 설치시 Wifi 세팅을 했다면 ~-wifi.yaml 파일 존재#

  • 파일이 없다면 만들어서 추가#

  • 혹은 디폴트 yaml 파일에 추가#

  • DHCP#

network:  version: 2  wifis:    wlp1s0:      access-points:        'YOUR SSID':          password: 'YOUR PASSWORD'    dhcp4: true
  • STATIC#

network:  version: 2  wifis:    wlp1s0:      addresses: [192.168.0.167/24]      gateway4: 192.168.0.1      nameservers:        addresses: [8.8.8.8, 1.1.1.1]      access-points:        UNOMIC_LTS 2G:          password: unomic12$#^21      dhcp4: no

· 약 1분
Andes Noh

github action을 이용한 CI/CD를 위해 yml파일에 민감한 정보가 필요한 경우(token) 어떻게 등록하는지 알아보자

1. github action에서 사용할 토큰 발행 방법#

  • settings 클릭#

    setting

  • Developer settings 클릭#

    setting

  • Generate new token 클릭#

    setting

  • token 사용 용도(Note), 만료 기간(Expiration), 범위(Scopes) 설정#

    setting

  • token 생성#

    setting

2. Repository settings#

  • token을 등록할 repo로 이동후 setting 클릭#

    setting

  • 왼쪽바의 Secret - Actions 클릭#

    setting

  • New Repository Secret 클릭#

    setting

  • 이름 및 token 등록#

    setting

  • 등록완료#

    setting

· 약 2분
Andes Noh

1. chocolatey란?#

choco

  • 리눅스의 apt, 맥의 honebrew와 같은 윈도우용 패키지 관리 도구
  • choco install aaa bbb ccc
  • 참고 링크: chocolatey

2. choco 설치 방법#

  • 관련 링크: 윈도우 choco 설치방법

  • 관리자 모드로 Power Shell 열기

  • 아래 커맨드 복사 및 붙여널기 Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

  • ※주의 사항#

    • 원활한 설치를 위해서는 Power Shell을 관리자 모드로 실행할것
    • Power Shell 실행 정책(Execution Policy)으로 인해 Get-ExecutionPolicy 명령어 입력시 Restrict 라는 값이 나올경우 Set-ExecutionPolicy AllSigned 혹은 Set-ExecutionPolicy Bypass -Scope Process 명령어를 실행해서 실행 정책을 바꾼후 설치 할것

3. choco 설치 확인#

  • choco 입력 check

4. nvm 설치하기#

  • choco install -y nvm nvm

  • 설치후 바로 적용이 안되기때문에 Power Shell 종료후 다시 관리자 모드로 실행후 nvm 설치 확인

5. node 설치하기#

  • nvm list available 명령어로 설치 가능한 node확인 node version

  • 원하는 버전의 node 설치

  • 16.13.0 버전 설치 시 nvm install 16.13.0

  • nvm use 명령어를 사용해 pc 에서 사용할 node 지정 nvm use 16.13.0

  • 위의 방법을 통해 여러 버전의 node 설치 및 자유로운 사용 가능 current node

6. node 설치 완료#

node test

7. 설치 패키지 삭제 (node 및 nvm)#

  • node 삭제: nvm uninstall 16.13.0
  • nvm 삭제: choco uninstall -y nvm

· 약 1분
Andes Noh

1. Homebrew란?#

brew

  • 터미널에서 명령을 실행하는 것만으로, 패키지 설치 및 제거가 용이하게 할 수있게 해주는 패키지 관리 도구
  • brew install aaa bbb ccc

2. 설치 방법#

  • wsl2 설치하기(설치 필수): 윈도우 Wsl2 설치방법

  • brew 설치 및 환경 변수 등록

    // 설치$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    // 환경변수 등록// 한라인씩
    $ test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)$ test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)$ test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile$ echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile

3. 설치 확인#

  • brew 입력 tobe