티스토리 뷰
minikube는 all-in-one kubernetes 이다.
kubernetes가 설치된 하나의 VM을 생성하고 해당 VM을 통해 kubernetes를 연결할 수 있도록 도와주는 도구라 생각하면 좋다.
설치방법은 다음과 같다.
Windows
간단히 아래 command를 통해 설치가 가능하다.
choco install minikube
이후 powershell command line으로 연결해서 kubectl 명령을 수행해보면 정상적으로 명령이 실행됨을 확인할 수 있다.
이후 아래와 같은 명령을 통해 minikube VM을 실행한다. windows의 경우 hyperV (windows 내장 hypervisor)혹은 virtualbox를 사용할 수 있다. 기본은 virtualbox임으로 아래와 같이 수행한다.
minikube start
CentOS / RHEL
CentOS 7 기반 설치 방법
현재 시점(2017.6)에는 docker machine kvm driver는 v0.10.0이 테스트 되어 해당 버전으로 설치를 진행
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube
chmod +x minikube
sudo mv minikube /usr/local/bin/
curl -L https://github.com/dhiltgen/docker-machine-kvm/releases/download/v0.10.0/docker-machine-drvier-kvm-centos7 > /usr/local/bin/docker-machine-driver-kvm
chmod +x /usr/local/bin/docker-machine-driver-kvm
minikube start --vm-driver=kvm
Ubuntu
만약 kubectl 실행시 command not found로 출력된다면 minikube kubectl 명령을 사용하던지 직접 kubectl을 설치하여 사용할 수 있다. (snap install kubectl --classic)
minikube 사용법
minikube는 지정한 hypervisor를 사용하여 VM 형태로 생성이 된다.
참고로 minikube VM의 spec을 변경하고자 한다면 아래 명령을 참고하여 VM spec을 지정해줄수 있다.
# 기본으로 생성되는 VM의 size가 2G임으로 위와 같이 spec을 지정해주는것이 좀더 편리하게 사용할 수 있다.
minikube start --memory=8192 --cpus=4 --disk-size=50g
minikube start 이후 kubectl을 통해 서비스의 상태를 확인한다.
https://darkowlzz.github.io/post/minikube-config/
우선
모두 가동된 후에는 아래와 같이 service를 확인하고 dashboard에 접속할 수 있다.
PS C:\Users\jacob> minikube service list
|----------------------|---------------------------|--------------|-----|
| NAMESPACE | NAME | TARGET PORT | URL |
|----------------------|---------------------------|--------------|-----|
| default | kubernetes | No node port |
| kube-system | kube-dns | No node port |
| kubernetes-dashboard | dashboard-metrics-scraper | No node port |
| kubernetes-dashboard | kubernetes-dashboard | No node port |
|----------------------|---------------------------|--------------|-----|`
nginx-deployment 배포 및 확인
jacob@jacob-laptop:~/workspaces/hellonode$ kubectl apply -f https://k8s.io/examples/application/deployment.yaml
deployment.apps/nginx-deployment created
jacob@jacob-laptop:~/workspaces/hellonode$ kubectl describe deployment nginx-deployment
Name: nginx-deployment
Namespace: default
CreationTimestamp: Sat, 28 Sep 2019 22:11:32 +0900
Labels: <none>
Annotations: deployment.kubernetes.io/revision: 1
kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"nginx-deployment","namespace":"default"},"spec":{"replica...
Selector: app=nginx
Replicas: 2 desired | 2 updated | 2 total | 1 available | 1 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx
Containers:
nginx:
Image: nginx:1.7.9
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available False MinimumReplicasUnavailable
Progressing True ReplicaSetUpdated
OldReplicaSets: <none>
NewReplicaSet: nginx-deployment-54f57cf6bf (2/2 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 18s deployment-controller Scaled up replica set nginx-deployment-54f57cf6bf to 2
jacob@jacob-laptop:~/workspaces/hellonode$ kubectl expose deployment nginx-deployment --type=LoadBalancer
service/nginx-deployment exposed
혹은 더 간단하게
PS C:\Users\82103> minikube addons enable ingress
* ingress was successfully enabled
PS C:\Users\82103> kubectl.exe get po -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-5644d7b6d9-9xx4s 1/1 Running 0 9m31s
coredns-5644d7b6d9-q5gw5 1/1 Running 0 9m31s
etcd-minikube 1/1 Running 0 8m23s
kube-addon-manager-minikube 1/1 Running 0 9m41s
kube-apiserver-minikube 1/1 Running 0 8m35s
kube-controller-manager-minikube 1/1 Running 0 8m41s
kube-proxy-hfblg 1/1 Running 0 9m31s
kube-scheduler-minikube 1/1 Running 0 8m34s
nginx-ingress-controller-6fc5bcc8c9-cfh5z 1/1 Running 0 9m28s
storage-provisioner 1/1 Running 0 9m28s
hello-node deployment 생성 및 확인
local에 이미지를 생성하고 이를 사용할 예정이기에 imagePullPolicy: Never로 설정하여 사용한다.
jacob@jacob-laptop:~/workspaces/hellonode$ kubectl run node-hello --image=node-hello:v1 --port=8080 --image-pull-policy=Never
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/node-hello created
jacob@jacob-laptop:~/workspaces/hellonode$ docker build -t node-hello:v1 .
Sending build context to Docker daemon 3.072kB
Step 1/4 : FROM node:6.9.2
6.9.2: Pulling from library/node
75a822cd7888: Pull complete
57de64c72267: Pull complete
4306be1e8943: Pull complete
871436ab7225: Pull complete
0110c26a367a: Pull complete
1f04fe713f1b: Pull complete
ac7c0b5fb553: Pull complete
...
jacob@jacob-laptop:~/workspaces/hellonode$ kubectl get pods
NAME READY STATUS RESTARTS AGE
node-hello-7485d74cdc-jv8pz 1/1 Running 0 35s
jacob@jacob-laptop:~/workspaces/hellonode$ kubectl expose deployment node-hello --type=LoadBalancer
service/node-hello exposed
jacob@jacob-laptop:~/workspaces/hellonode$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 37m
nginxtestlb LoadBalancer 10.106.79.54 <pending> 8080:30007/TCP 112s
jacob@jacob-laptop:~/workspaces/hellonode$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
node-hello 1/1 1 1 92s
실제 확인은 minikube ip와 port의 조합으로 접속해보면 다음과 같은 화면이 출력되는것을 확인할 수 있다.
hello-py deployment 생성 및 확인
https://www.jacobbaek.com/829 참고
참고
아래 링크를 참고하여 container runtime을 다르게 설정할수도 있다.
[https://v1-13.docs.kubernetes.io/ko/docs/setup/minikube/#cri-o]
아래 링크는 지원되는 hypervisor list이다.
[https://minikube.sigs.k8s.io/docs/reference/drivers/]
'Cloud > Cloud Native' 카테고리의 다른 글
minikube start in WSL2 (0) | 2019.12.07 |
---|---|
kubernetes troubleshooting (0) | 2019.11.14 |
Multi configured kubectl (0) | 2019.10.28 |
python application deploy with minikube (0) | 2019.09.28 |
Docker in centos (0) | 2019.06.07 |
- Total
- Today
- Yesterday
- open policy agent
- kata container
- ansible
- Terraform
- metallb
- kubernetes
- azure policy
- macvlan
- crashloopbackoff
- OpenStack
- openstack backup
- aquasecurity
- minikube
- socket
- boundary ssh
- hashicorp boundary
- Helm Chart
- wsl2
- GateKeeper
- jenkins
- DevSecOps
- vmware openstack
- ceph
- K3S
- mattermost
- Jenkinsfile
- openstacksdk
- kubernetes install
- nginx-ingress
- minio
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |