728x90

CentOS7 환경인지 먼저 점검합니다.

$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

 

운영체제의 패키지들을 최신 버전으로 업데이트 합니다. (선택사항)

$ sudo yum update

 

docker와 docker-registry 패키지를 설치합니다

$ sudo yum -y install docker docker-registry

 

설치된 docker를 재부팅시에도 자동 실행하도록 합니다 (선택사항)

$ sudo systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

 

docker 서비스를 실행하고 상태를 확인해 봅니다

$ sudo systemctl start docker.service
$ systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-07-08 15:55:35 JST; 24s ago
     Docs: http://docs.docker.com
     ...

 

docker-registry에 등록된 이미지를 가져와서 실행해 봅니다

$ sudo docker pull centos
$ docker run -it centos /bin/bash

 

728x90
728x90

기초적인 것들이 늘 가장 어려운 법입니다. 여러 환경에 구축된 쿠버네티스 클러스터를 다루는 상황이 되니 이게 뭥미~ 하는 생각이 들면서 머릿속이 하얗게 변했습니다. 가령 로컬 환경에 시험용 클러스터가 구축되어 있고 (이하 docker-desktop) 구글 클라우드 플랫폼에 클러스터를 하나 구성한 상황에서 (이하 k8snopd) kubectl 로 양쪽 클러스터를 제어하는 방법의 정리입니다. 


kubectl 설정 파일 확인하기 

kubectl 을 사용하고 있다면 .kube/config 파일에 (맥 기준) 액세스 할 수 있는 클러스터 정보가 기록되어 있습니다. 언급 드린 것처럼 로컬 환경과 GCP 환경에 클러스터가 구성되어 있습니다. 로컬 환경은 맥 용 Docker Desktop 에서 클러스터를 만들었고, GCP 는 gcloud CLI 를 이용해서 원격지 환경에 클러스터를 만들고 접근할 수 있게 가이드를 따랐습니다.

이 상태라면 .kube/config 에는 두 클러스터 접근을 위한 설정이 들어가 있게 됩니다. 설정된 내용은 cat 등으로 조회할 수도 있지만 kubectl 을 이용해서 조회하는 것이 더 깔끔합니다. 

% kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://kubernetes.docker.internal:6443
  name: docker-desktop
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://xx.xxx.xxx.xx
  name: gke_k8s-practice-310514_asia-northeast1-a_k8snopd
contexts:
- context:
    cluster: docker-desktop
    user: docker-desktop
  name: docker-desktop
- context:
    cluster: gke_k8s-practice-310514_asia-northeast1-a_k8snopd
    user: gke_k8s-practice-310514_asia-northeast1-a_k8snopd
  name: gke_k8s-practice-310514_asia-northeast1-a_k8snopd
current-context: gke_k8s-practice-310514_asia-northeast1-a_k8snopd
kind: Config
preferences: {}
users:
- name: docker-desktop
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
- name: gke_k8s-practice-310514_asia-northeast1-a_k8snopd
  user:
    auth-provider:
      config:
        access-token: ya29.a0AfH6SM...........................
        cmd-args: config config-helper --format=json
        cmd-path: /Downloads/google-cloud-sdk/bin/gcloud
        expiry: "2021-04-15T09:00:09Z"
        expiry-key: '{.credential.token_expiry}'
        token-key: '{.credential.access_token}'
      name: gcp

먼저 clusters 노드로 두개의 cluster 가 지정돤 것이 보입니다. name 키에 지정된 이름이 각각 다른게 보이시죠? GCP 에 만든 클러스터 이름은 다소 복잡합니다. GCP 의 리전명 등이 포함되어 있네요. 이어서 각 클러스터에 접근할 때 사용되는 사용자 토큰 등의 정보가 이어집니다. 

 

kubectl 에서 클러스터 바꾸는 방법

위의 설정에서 주목할 값 중 하나는 current-context 입니다. 제 경우는 GCP 를 나중에 설정해서 그런지 GCP 가 현재 컨텍스트라고 지정되어 있습니다. 즉, kubectl 명령을 사용하면 특별히 컨텍스트를 지정하지 않으면 GCP 의 클러스터로 명령을 날리게 됩니다. 한번 해볼까요?

% kubectl get nodes
NAME                                     STATUS   ROLES    AGE   VERSION
gke-k8snopd-default-pool-8130c84d-371t   Ready    <none>   63m   v1.18.16-gke.502
gke-k8snopd-default-pool-8130c84d-l26t   Ready    <none>   63m   v1.18.16-gke.502
gke-k8snopd-default-pool-8130c84d-xrkt   Ready    <none>   63m   v1.18.16-gke.502

 

그렇다면 로컬 클러스터 (docker-desktop) 로 컨텍스트를 바꾸어 노드 목록을 받아오고 싶다면 어떻게 해야 할까요? kubectl 이 제공하는 --context 매개변수를 이용해서 클러스터의 컨텍스트명을 입력해 주면 쉽게 대상 클러스터를 바꿀 수 있습니다. 함 해보죠!

% kubectl get nodes --context docker-desktop
NAME             STATUS   ROLES    AGE     VERSION
docker-desktop   Ready    master   5d23h   v1.19.3

 


 

 

728x90
728x90

Amazon Linux 를 쓰는 EC2 인스턴스에서 yum 으로 docker-compose 의 설치가 원활하지 않아 github 에서 릴리즈된 버전을 설치해 보기로 했습니다. 구글링을 통해 잘 정리된 명령어를 찾을 수 있었고 다시 한 번 구글님께 감사의 절을 올리고 설치를 진행해 보았습니다.


Github 저장소에서 최신 릴리즈 태그 찾기

먼저 할일은 Github 의 Docker 프로젝트를 들르는 일입니다. 하위에 만들어져 있는 저장소들 중 compose 저장소가 docker-compose 를 만드는 공장입니다. 해당 저장소에 들어간 뒤 우측 사이드바에서 최신 릴리즈 정보를 확인할 수 있습니다. 

compose 저장소를 선택합니다
1.27.4 버전이 최신이군요!

 

 

docker/compose

Define and run multi-container applications with Docker - docker/compose

github.com

 

릴리즈 파일 전송받기

<Releases> 텍스트를 누르면 빌드되어 릴리즈 된 파일들의 목록을 볼 수 있습니다. 플랫폼과 운영체제에 따라 서로 다른 빌드를 사용하게 되는데요, Linux 버전을 받으면 되겠습니다. 구글링으로 찾은 curl 명령 예제는 uname -s 와 uname -m 으로 플랫폼 정보를 가져와서 쓰도록 되어 있어 유용했습니다! 

리눅스 버전을 받아 봅시다

// 최신 릴리즈 버전에 맞게 "1.27.4" 부분을 바꿔줍니다
// Root 권한이 아니라면 sudo 를 사용해야겠죠?
// 보통 기본 Path 로 잡혀 있는 /usr/local/bin 에 파일을 저장했습니다
//
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   651  100   651    0     0  27125      0 --:--:-- --:--:-- --:--:-- 27125
100 11.6M  100 11.6M    0     0  3053k      0  0:00:03  0:00:03 --:--:-- 3630k

// 받은 파일의 퍼미션을 변경하여 실행 가능하게 바꿉니다
//
$ sudo chmod +x /usr/local/bin/docker-compose

// 설치된 docker-compose 의 버전을 확인합니다. 
//
$ docker-compose --version
docker-compose version 1.27.4, build 40524192

 

728x90

+ Recent posts