7.6 KiB
		
	
	
	
	
	
			
		
		
	
	| title | content_template | weight | menu | card | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Hello Minikube | templates/tutorial | 5 | 
 | 
 | 
{{% capture overview %}}
This tutorial shows you how to run a simple Hello World Node.js app on Kubernetes using Minikube and Katacoda. Katacoda provides a free, in-browser Kubernetes environment.
{{< note >}} You can also follow this tutorial if you've installed Minikube locally. {{< /note >}}
{{% /capture %}}
{{% capture objectives %}}
- Deploy a hello world application to Minikube.
- Run the app.
- View application logs.
{{% /capture %}}
{{% capture prerequisites %}}
This tutorial provides a container image built from the following files:
{{< codenew language="js" file="minikube/server.js" >}}
{{< codenew language="conf" file="minikube/Dockerfile" >}}
For more information on the docker build command, read the Docker documentation.
{{% /capture %}}
{{% capture lessoncontent %}}
Create a Minikube cluster
- 
Click Launch Terminal {{< kat-button >}} {{< note >}}If you installed Minikube locally, run minikube start.{{< /note >}}
- 
Open the Kubernetes dashboard in a browser: minikube dashboard
- 
Katacoda environment only: At the top of the terminal pane, click the plus sign, and then click Select port to view on Host 1. 
- 
Katacoda environment only: Type 30000, and then click Display Port.
Create a Deployment
A Kubernetes Pod is a group of one or more Containers, tied together for the purposes of administration and networking. The Pod in this tutorial has only one Container. A Kubernetes Deployment checks on the health of your Pod and restarts the Pod's Container if it terminates. Deployments are the recommended way to manage the creation and scaling of Pods.
- 
Use the kubectl createcommand to create a Deployment that manages a Pod. The Pod runs a Container based on the provided Docker image.kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node
- 
View the Deployment: kubectl get deploymentsOutput: NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE hello-node 1 1 1 1 1m
- 
View the Pod: kubectl get podsOutput: NAME READY STATUS RESTARTS AGE hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
- 
View cluster events: kubectl get events
- 
View the kubectlconfiguration:kubectl config view{{< note >}}For more information about kubectlcommands, see the kubectl overview.{{< /note >}}
Create a Service
By default, the Pod is only accessible by its internal IP address within the
Kubernetes cluster. To make the hello-node Container accessible from outside the
Kubernetes virtual network, you have to expose the Pod as a
Kubernetes Service.
- 
Expose the Pod to the public internet using the kubectl exposecommand:kubectl expose deployment hello-node --type=LoadBalancer --port=8080The --type=LoadBalancerflag indicates that you want to expose your Service outside of the cluster.
- 
View the Service you just created: kubectl get servicesOutput: NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node LoadBalancer 10.108.144.78 <pending> 8080:30369/TCP 21s kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23mOn cloud providers that support load balancers, an external IP address would be provisioned to access the Service. On Minikube, the LoadBalancertype makes the Service accessible through theminikube servicecommand.
- 
Run the following command: minikube service hello-node
- 
Katacoda environment only: Click the plus sign, and then click Select port to view on Host 1. 
- 
Katacoda environment only: Type 30369(see port opposite to8080in services output), and then clickThis opens up a browser window that serves your app and shows the "Hello World" message. 
Enable addons
Minikube has a set of built-in addons that can be enabled, disabled and opened in the local Kubernetes environment.
- 
List the currently supported addons: minikube addons listOutput: addon-manager: enabled coredns: disabled dashboard: enabled default-storageclass: enabled efk: disabled freshpod: disabled heapster: disabled ingress: disabled kube-dns: enabled metrics-server: disabled nvidia-driver-installer: disabled nvidia-gpu-device-plugin: disabled registry: disabled registry-creds: disabled storage-provisioner: enabled
- 
Enable an addon, for example, heapster:minikube addons enable heapsterOutput: heapster was successfully enabled
- 
View the Pod and Service you just created: kubectl get pod,svc -n kube-systemOutput: NAME READY STATUS RESTARTS AGE pod/heapster-9jttx 1/1 Running 0 26s pod/influxdb-grafana-b29w8 2/2 Running 0 26s pod/kube-addon-manager-minikube 1/1 Running 0 34m pod/kube-dns-6dcb57bcc8-gv7mw 3/3 Running 0 34m pod/kubernetes-dashboard-5498ccf677-cgspw 1/1 Running 0 34m pod/storage-provisioner 1/1 Running 0 34m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/heapster ClusterIP 10.96.241.45 <none> 80/TCP 26s service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 34m service/kubernetes-dashboard NodePort 10.109.29.1 <none> 80:30000/TCP 34m service/monitoring-grafana NodePort 10.99.24.54 <none> 80:30002/TCP 26s service/monitoring-influxdb ClusterIP 10.111.169.94 <none> 8083/TCP,8086/TCP 26s
- 
Disable heapster:minikube addons disable heapsterOutput: heapster was successfully disabled
Clean up
Now you can clean up the resources you created in your cluster:
kubectl delete service hello-node
kubectl delete deployment hello-node
Optionally, stop the Minikube virtual machine (VM):
minikube stop
Optionally, delete the Minikube VM:
minikube delete
{{% /capture %}}
{{% capture whatsnext %}}
- Learn more about Deployment objects.
- Learn more about Deploying applications.
- Learn more about Service objects.
{{% /capture %}}