'install kubectl'에 해당되는 글 1건

  1. 2021.09.13 [Kubeflow] K8s 툴인 kubectl 설치하고 사용하기

지난번 포스팅에서는 MacOS 맥북에 MiniKF (Kubeflow 의 로컬 머신 버전)를 설치하고, VM 과 Kubernetes 를 작동시켜서 Kubeflow 실행시키고 접속하는 방법을 소개하였습니다. (https://rfriend.tistory.com/676

 

 

MiniKF 를 잘 설치하고 작동시켰다면 아래와 같이 kubectl 사용에 대한 안내문이 나올 거예요. 일단 이전 포스팅 참고해서 MiniKF 설치하고 구동시킨 다음에, 이어서 이번 포스팅을 참고하시면 되겠습니다. 

 

 

K8s tool Kubectl

 

이번 포스팅에서는 Kubernetes 의 커맨드라인 툴인 kubectl 에 대해서 고급 사용자가 이용할 수 있도록,

    (1) kubectl 설치 및 설정 

    (2) kubectl 사용

하는 방법을 소개하겠습니다.  

이번 포스팅은 Kubernetes install tools 페이지를 참고하였습니다. 

 

 

(1) MacOS에 kubectl 설치 및 설정하기

 

(1-1) kubectl 설치

 

MacOS 맥북에 kubectl 설치하는 방법에는

    (a) curl 을 사용해서 kubectl binary 를 설치하는 방법

    (b) Homebrew 를 사용해서 kubectl 설치하는 방법

    (c) Macports 를 사용해서 kubectl 설치하는 방법 

이 있습니다.  

 

이번 포스팅에서는 curl 과 Homebrew 를 사용한 kubectl 설치 방법을 소개하겠습니다. 

 

 

(1-1-a) curl 을 사용해서 kubectl binary 를 설치하는 방법

 

먼저 curl 을 사용해서 최신 버전의 kubectl binary 파일을 다운로드 합니다. Intel 칩과 Apple Silicon 칩의 두가지 종류별로 다운로드 하는 경로가 다르므로, 본인의 맥북을 확인 후 자신의 것에 맞게 다운로드 하세요. 

 

-- Download the latest release
-- Intel
$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"

-- Apple Silicon
$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"

 

 

만약, 특정 버전의 kubectl 을 다운로드 하고 싶다면  $(curl -L -s https://dk.k8s.io/release/stable.txt) 부분의 커맨드를 특정 버전으로 바꿔주면 됩니다. 가령, Intel macOS의 kubectl v1.22.0 를 더운로드 하고 싶다면 아래처럼 버전을 명시해주면 됩니다. 

 

-- 특정 버전의 kubectl 을 다운로드 하려면, 
-- for example, to download kubectl version v1.22.0 macOS on Intel macOS
$ curl -LO "https://dl.k8s.io/release/v1.22.0/bin/darwin/amd64/kubectl"


-- for macOS on Apple Sillicon, type:
$ curl -LO "https://dl.k8s.io/release/v1.22.0/bin/darwin/arm64/kubectl"

 

 

 

(Optional) binary 를 검증해보고 싶으면 아래의 kubectk checksum file 을 다운로드 받아서 확인해볼 수 있습니다. 이때 kubectl binary 와 같은 버전의 checksum file 을 다운로드 해주세요. 

 

-- (optional) Validate the binary

-- Intel 
$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl.sha256"
 
-- Apple Silicon
$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"

 

 

만약 binary 파일이 유효하다면 kubectl: OK 라는 메시지가 나올 거예요. 

 

-- Validate the kubectl binary against the checksum file
$ echo "$(<kubectl.sha256)  kubectl" | shasum -a 256 --check

==> (output) kubectl: OK

 

 

 

(1-1-b) Homebrew 를 사용해서 kubectl 설치하는 방법

 

Homebrew 는 macOS 운영 체제의 소프트웨어 설치를 단순하게 해주는 소프트웨어 패키지 관리자입니다. 

맥북에 이미 Homebrew 를 설치해서 사용 중이라면 아래의 한 줄이면 kubectl 을 간단하게 설치할 수 있습니다. 완전 심플 그 자체예요! 

 

-- Install the kubectl with Homebrew on macOS

$ brew install kubectl

 

 

 

(1-2) MiniKF's kubeconfig 파일 다운로드

 

MiniKF's kubeconfig 파일은 아래 화면 캡쳐한 곳에 파란색 점선으로 표시해 놓은 링크를 클릭하면 다운로드 할 수 있습니다. (아래 화면은 MiniKF 실행하면 아래에 나오는 화면이구요, MiniKF 설치 및 실행은 https://rfriend.tistory.com/676 를 참고하세요.)

Download MiniKF's kubeconfig file

 

아래처럼 minikf-kubeconfig file이 잘 다운로드 된거 확인했습니다. 

 

(base) lhongdon@Hongui-MacBookPro minikf % cd ..
(base) lhongdon@Hongui-MacBookPro ~ % cd Downloads
(base) lhongdon@Hongui-MacBookPro Downloads % ls
minikf-kubeconfig
(base) lhongdon@Hongui-MacBookPro Downloads %

 

 

(1-3) 다운로드한 minikf-kubecinfig 파일을 홈 디렉토리(home directory)에 옮겨서 저장해주세요. 

 

(base) lhongdon@Hongui-MacBookPro Downloads % 
(base) lhongdon@Hongui-MacBookPro Downloads % mv minikf-kubeconfig /Users/lhongdon/
(base) lhongdon@Hongui-MacBookPro Downloads % 
(base) lhongdon@Hongui-MacBookPro Downloads % cd ..                                    
(base) lhongdon@Hongui-MacBookPro ~ % pwd
/Users/lhongdon
(base) lhongdon@Hongui-MacBookPro ~ % ls
Applications		Documents		Library			Music			Public			minikf			opt
Desktop			Downloads		Movies			Pictures		VirtualBox VMs		minikf-kubeconfig	seaborn-data
(base) lhongdon@Hongui-MacBookPro ~ %

 

 

 

(1-4) kubectl 설정

 

kubectl 이 minikf-kubeconfig 파일을 찾아서 사용할 수 있도록 KUBECONFIG 환경 변수를 설정해주세요. 

 

-- macOS / Linux: Open a terminal, then run:
$ export KUBECONFIG=$HOME/minikf-kubeconfig


-- Windows: Open a Command Prompt, then run:
$ SET KUBECONFIG=%HOMEPATH%/minikf-kubeconfig

 

(base) lhongdon@Hongui-MacBookPro ~ % 
(base) lhongdon@Hongui-MacBookPro ~ % export KUBECONFIG=$HOME/minikf-kubeconfig
(base) lhongdon@Hongui-MacBookPro ~ %

 

 

 

 

(2) kubectl 사용

 

kubectl command 에는 정말 여러가지가 있는데요, 그중에서도 가장 기본적인것 몇 가지만 소개하겠습니다. 

 

 

(2-1) kubectl 버전 확인: $ kubectl version --client

 

(base) lhongdon@Hongui-MacBookPro ~ % 
(base) lhongdon@Hongui-MacBookPro ~ % kubectl version --client
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.1", GitCommit:"632ed300f2c34f6d6d15ca4cef3d3c7073412212", GitTreeState:"clean", BuildDate:"2021-08-19T15:45:37Z", GoVersion:"go1.16.7", Compiler:"gc", Platform:"darwin/amd64"}
(base) lhongdon@Hongui-MacBookPro ~ %

 

 

(2-2) cluster 의 마스터와 서비스 상태 정보 확인: $ kubectl cluster-info

 

(base) lhongdon@Hongui-MacBookPro ~ % kubectl cluster-info
Kubernetes control plane is running at https://10.10.10.10:8443
KubeDNS is running at https://10.10.10.10:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
(base) lhongdon@Hongui-MacBookPro ~ %

 

 

(2-3) cluster 의 환경설정 정보 확인: $ kubectl config view

 

(base) lhongdon@Hongui-MacBookPro ~ % kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://10.10.10.10:8443
  name: minikf
contexts:
- context:
    cluster: minikf
    user: minikf
  name: minikf
current-context: minikf
kind: Config
preferences: {}
users:
- name: minikf
  user:
    token: REDACTED
(base) lhongdon@Hongui-MacBookPro ~ %

 

 

(2-4) 모든 kubectl 관리 정보 보기: $ kubectl get all

 

(base) lhongdon@Hongui-MacBookPro ~ % kubectl get all                 
NAME                                    READY   STATUS    RESTARTS   AGE
pod/admission-webhook-7cdddfc7b-r2p78   1/1     Running   1          32d
pod/startup-lock-kf4tg                  1/1     Running   1          32d

NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/admission-webhook   ClusterIP   10.105.96.165   <none>        443/TCP   32d
service/kubernetes          ClusterIP   10.96.0.1       <none>        443/TCP   32d

NAME                          DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
daemonset.apps/startup-lock   1         1         1       1            1           <none>          32d

NAME                                READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/admission-webhook   1/1     1            1           32d

NAME                                          DESIRED   CURRENT   READY   AGE
replicaset.apps/admission-webhook-7cdddfc7b   1         1         1       32d
(base) lhongdon@Hongui-MacBookPro ~ %

 

 

(2-5) pods 목록 보기: $ kubectl get pod

 

(base) lhongdon@Hongui-MacBookPro ~ % 
(base) lhongdon@Hongui-MacBookPro ~ % kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
admission-webhook-7cdddfc7b-r2p78   1/1     Running   1          31d
startup-lock-kf4tg                  1/1     Running   1          31d
(base) lhongdon@Hongui-MacBookPro ~ %

 

 

(2-6) 서비스 목록 보기: $ kubectl get service

 

(base) lhongdon@Hongui-MacBookPro ~ % kubectl get service
NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
admission-webhook   ClusterIP   10.105.96.165   <none>        443/TCP   32d
kubernetes          ClusterIP   10.96.0.1       <none>        443/TCP   32d
(base) lhongdon@Hongui-MacBookPro ~ %

 

 

(2-7) Daemonsets 목록 보기: $ kubectl get daemonset

 

(base) lhongdon@Hongui-MacBookPro ~ % kubectl get daemonset
NAME           DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
startup-lock   1         1         1       1            1           <none>          32d
(base) lhongdon@Hongui-MacBookPro ~ %

 

 

(2-8) Deployment 목록 보기: $ kubectl get deployment

 

(base) lhongdon@Hongui-MacBookPro ~ % kubectl get deployment
NAME                READY   UP-TO-DATE   AVAILABLE   AGE
admission-webhook   1/1     1            1           32d
(base) lhongdon@Hongui-MacBookPro ~ %

 

 

(2-9) ReplicaSets 목록 보기: $ kubectl get replicasets

 

(base) lhongdon@Hongui-MacBookPro ~ % kubectl get replicasets
NAME                          DESIRED   CURRENT   READY   AGE
admission-webhook-7cdddfc7b   1         1         1       32d
(base) lhongdon@Hongui-MacBookPro ~ %

 

 

(2-10) Nodes 목록 보기: $ kubectl get node

 

(base) lhongdon@Hongui-MacBookPro ~ % kubectl get node
NAME     STATUS   ROLES    AGE   VERSION
minikf   Ready    master   32d   v1.16.15
(base) lhongdon@Hongui-MacBookPro ~ %

 

 

(2-11) Events 목록 보기: $ kubectl get events

 

(base) lhongdon@Hongui-MacBookPro ~ % kubectl get events
No resources found in default namespace.
(base) lhongdon@Hongui-MacBookPro ~ %

 

 

[ Reference ]

* K8s install tools: https://kubernetes.io/docs/tasks/tools/

* install and set up kubectl on MacOS https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/

* Kubectl Command Cheatsheet: https://www.bluematador.com/learn/kubectl-cheatsheet

 

이번 포스팅이 많은 도움이 되었기를 바랍니다. 

행복한 데이터 과학자 되세요!  :-)

 

 

728x90
반응형
Posted by Rfriend
,