Kubernetes - 01. 쿠버네티스 소개 ( MiniKube 실습편 )
2020. 8. 2. 20:55ㆍComputer/Kubernetes
본 포스팅은 '쿠버네티스 기초 다지기 3/e' 책을 사용하여 스터디를 하면서 정리 한 내용입니다.
1. 요약
MacOS 환경에서 MiniKube 를 활용하여 Kubernetes 환경을 구성하여 테스트해본다.
※ Minikube는 쿠버네티스를 로컬에서 쉽게 실행하는 도구이다
Minikube는 VM 프로비저닝을 위해서 libmachine를 사용하고, 쿠버네티스 클러스터를 프로비저닝하기 위해 kubeadm을 사용한다.
2. 실습
Hypervisor 설치
필자는 VirtualBox 를 설치하였다.
miniKube 설치
(1) MacOS가상화 지원 VMX 확인
pc:~ user$ sysctl -a | grep -E --color 'machdep.cpu.features|VMX'
machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP
MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT
TM PBE SSE3 PCLMULQDQ DTES64 MON DSCPL VMX SMX EST TM2 SSSE3 FMA CX16
TPR PDCM SSE4.1 SSE4.2 x2APIC MOVBE POPCNT AES PCID XSAVE OSXSAVE SEGLIM64
TSCTMR AVX1.0 RDRAND F16C
만약 출력 중에 (색상으로 강조된) VMX를 볼 수 있다면, VT-x 기능이 머신에서 활성화된 것이다.
(2) brew install minikube
homebrew 를 통해서 minikube 설치를 진행한다.
쿠버네티스와 상호작용하기
(1) minikube start --driver=virtualbox
Minikube로 부르는 kubectl 콘텍스트를 생성한다. 이 콘텍스트는 Minikube 클러스터와 통신하는 설정을 포함한다
※ Kubectl은 쿠버네티스 클러스터를 제어하기 위한 커맨드 라인 도구이다
pc:~ user$ minikube start --driver=virtualbox
😄 Darwin 10.14.5 위의 minikube v1.12.1
✨ 유저 환경 설정 정보에 기반하여 virtualbox 드라이버를 사용하는 중
💿 가상 머신 부트 이미지 다운로드 중 ...
> minikube-v1.12.0.iso.sha256: 65 B / 65 B [-------------] 100.00% ? p/s 0s
> minikube-v1.12.0.iso: 173.57 MiB / 173.57 MiB [] 100.00% 9.71 MiB p/s 18s
👍 Starting control plane node minikube in cluster minikube
💾 Downloading Kubernetes v1.18.3 preload ...
> preloaded-images-k8s-v4-v1.18.3-docker-overlay2-amd64.tar.lz4: 526.27 MiB
🔥 virtualbox VM (CPUs=2, Memory=4000MB, Disk=20000MB) 를 생성하는 중 ...
🐳 쿠버네티스 v1.18.3 을 Docker 19.03.12 런타임으로 설치하는 중
🔎 Verifying Kubernetes components...
🌟 Enabled addons: default-storageclass, storage-provisioner
🏄 끝났습니다! 이제 kubectl 이 "minikube" 를 사용할 수 있도록 설정되었습니다
(2) 상태 확인
minikube status
pc:~ user$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
(3) Virtualbox 를 확인해보면 minikube vm 이 생성되어 있다.
(4) kubectl 을 이용해서 노드를 확인하자.
pc:~ user$ kubectl get node
NAME STATUS ROLES AGE VERSION
minikube Ready master 17m v1.18.3
(5) 서비스의 NodePort를 확인하려면 kubectl 명령어로 아래와 같이 하면 된다
kubectl get service $SERVICE --output='jsonpath="{.spec.ports[0].nodePort}"'
(6) 쿠버네티스(k8s) dashboard를 이용하려면, Minikube를 실행한 후 쉘에서 아래 명령어를 실행하여 주소를 확인한다.
pc:~ user$ minikube dashboard
🔌 대시보드를 활성화하는 중 ...
🤔 Verifying dashboard health ...
🚀 프록시를 시작하는 중 ...
🤔 Verifying proxy health ...
🎉 Opening http://127.0.0.1:63216/api/v1/namespaces/kubernetes-dashboard/
services/http:kubernetes-dashboard:/proxy/ in your default browser...
(7) 간단한 디플로이먼트 예제를 만들 수 있다.
pc:~ user$ kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8080
pod/hello-minikube created
pc:~ user$ kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-minikube 1/1 Running 0 14s
pc:~ user$ kubectl delete pod hello-minikube
pod "hello-minikube" deleted
pc:~ user$ kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
deployment.apps/hello-minikube created
pc:~ user$ kubectl expose deployment hello-minikube --type=NodePort
error: couldn't find port via --port flag or introspection
pc:~ user$ kubectl expose deployment hello-minikube --type=NodePort --port=8080
service/hello-minikube exposed
pc:~ user$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-minikube NodePort 10.99.129.52 <none> 8080:32226/TCP 5m12s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d5h
pc:~ user$ minikube service hello-minikube
|-----------|----------------|-------------|-----------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|----------------|-------------|-----------------------------|
| default | hello-minikube | 8080 | http://192.168.99.100:32226 |
|-----------|----------------|-------------|-----------------------------|
🎉 Opening service default/hello-minikube in default browser...
(8) Addon 설정
$ minikube addons list
|-----------------------------|----------|--------------|
| ADDON NAME | PROFILE | STATUS |
|-----------------------------|----------|--------------|
| ambassador | minikube | disabled |
| dashboard | minikube | enabled ✅ |
| default-storageclass | minikube | enabled ✅ |
| efk | minikube | disabled |
| freshpod | minikube | disabled |
| gvisor | minikube | disabled |
| helm-tiller | minikube | disabled |
| ingress | minikube | disabled |
| ingress-dns | minikube | disabled |
| istio | minikube | disabled |
| istio-provisioner | minikube | disabled |
| kubevirt | minikube | disabled |
| logviewer | minikube | disabled |
| metallb | minikube | disabled |
| metrics-server | minikube | disabled |
| nvidia-driver-installer | minikube | disabled |
| nvidia-gpu-device-plugin | minikube | disabled |
| olm | minikube | disabled |
| pod-security-policy | minikube | disabled |
| registry | minikube | disabled |
| registry-aliases | minikube | disabled |
| registry-creds | minikube | disabled |
| storage-provisioner | minikube | enabled ✅ |
| storage-provisioner-gluster | minikube | disabled |
|-----------------------------|----------|--------------|
$ minikube addons enable metrics-server
🌟 The 'metrics-server' addon is enabled
$ kubectl get pod,svc -n kube-system
NAME READY STATUS RESTARTS AGE
pod/coredns-66bff467f8-6pwgf 1/1 Running 1 3d5h
pod/etcd-minikube 1/1 Running 1 3d5h
pod/kube-apiserver-minikube 1/1 Running 1 3d5h
pod/kube-controller-manager-minikube 1/1 Running 1 3d5h
pod/kube-proxy-msnjp 1/1 Running 1 3d5h
pod/kube-scheduler-minikube 1/1 Running 1 3d5h
pod/metrics-server-7bc6d75975-nc2l5 1/1 Running 0 27s
pod/storage-provisioner 1/1 Running 2 3d5h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 3d5h
service/metrics-server ClusterIP 10.98.180.253 <none> 443/TCP 27s
참고 및 출처
반응형
'Computer > Kubernetes' 카테고리의 다른 글
Kubernetes - 10. 고가용성과 확장성을 위한 설계 (0) | 2020.10.23 |
---|---|
Kubernetes - 05. 쿠버네티스의 저장소 개념 탐구 (0) | 2020.09.10 |
Kubernetes - 02. 쿠버네티스의 핵심구성 요소로 기초 다지기 (0) | 2020.08.08 |
Kubernetes - 01. 쿠버네티스 소개 ( 컨테이너편 ) (0) | 2020.07.28 |