지난번 포스팅에서는 MacOS 맥북에 MiniKF (Kubeflow 의 로컬 머신 버전)를 설치하고, VM 과 Kubernetes 를 작동시켜서 Kubeflow 실행시키고 접속하는 방법을 소개하였습니다. (https://rfriend.tistory.com/676)
MiniKF 를 잘 설치하고 작동시켰다면 아래와 같이 kubectl 사용에 대한 안내문이 나올 거예요. 일단 이전 포스팅 참고해서 MiniKF 설치하고 구동시킨 다음에, 이어서 이번 포스팅을 참고하시면 되겠습니다.
이번 포스팅에서는 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 를 참고하세요.)
아래처럼 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
이번 포스팅이 많은 도움이 되었기를 바랍니다.
행복한 데이터 과학자 되세요! :-)