# Minikube tutorial
# Minikube
[minikube tutorial](https://kubernetes.io/docs/tutorials/hello-minikube/)
[minikube docs](https://minikube.sigs.k8s.io/docs/handbook/deploying/)
Lightweight Kubernetes on local VM
- `minikube start` start minikube vm
- `minikube dashboard` dashboard in browser
# Deployments
[kubectl overview](https://kubernetes.io/docs/reference/kubectl/)
- *pod* = group of one or more containers w/ shared admin and networking
- *deployment* manage creation/scaling of pods
- healthcheck and restarts pods
- `kubectl create` create a deployment
```bash
# Run a test container image that includes a webserver
kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080
```
- `kubectl get deployments` view deployments
- `kubectl get events` view cluster events
- `kubectl config view` view kubectl configuration
- `kubectl get pods` view pods
- `kubectl logs <pod_name>` view application logs for a contianer
# Services
- By default, pods only accessible via internal IP
- *Service* exposes pod to external network
- `kubectl expose deployment hello-node --type=LoadBalancer --port=8080`
- expose pod to public internet
- `--type=LoadBalancer` flag indicates service exposed outside of cluster
- cloud providers provision external IP for service
- minikube exposes via `minikube service <deployment_name>`
- `kubectl get services` view services
# Addons
- `minikube addons list` list addons
- `minikube addons enable metrics-server` enable addon `metrics-server`
- `kubectl get pod,svc -n kube-system` view pod and service created by addon
- `kubectl top pods` check output from `metrics-server`
- `minikube addons disable metrics-server` disable metrics-server
# Clean up
- `kubectl delete service hello-node` delete service
- `kubectl delete deployment hello-node` delete deployment
- `minikube stop` stop minikube cluster
- `minikube delete` delete minikube vm