Kubernetes 学习笔记(二):初步探索 Minikube

Minikube is a tool that makes it easy to run Kubernetes locally. Minikube runs a single-node Kubernetes cluster inside a VM on your laptop for users looking to try out Kubernetes or develop with it day-to-day.

根据介绍,我认为在本地尝试 Kubernetes 的话,Minikube 会是一个非常推荐的途径,遂用之。

初步探索 Minikube

Minikube 的相关内容以及简介均来自于这里。


事先准备:

安装和事先配置都不是特别的复杂,这里就不再一一赘述,如需获得更多信息请移至这里。

在没有安装 Minikube 之前,kubectl version 并不能获得 Server 的信息:

$ kubectl version

Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-15T21:07:38Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"windows/amd64"}

Unable to connect to the server: ${ERROR_MESSAGE}

所以我们需要运行 minikube start 来创建 Minikube 这一虚拟 Kubernetes 服务器:

$ minikube start

Starting local Kubernetes v1.9.0 cluster...

再次运行 kubectl version 便可以得到同时 client 和 server 这两组信息。

我们可以执行 kubectl get nodes 来获取 Node 的信息(因为 Minikube 是单节点的集群,所以只有一个 Node):

kubectl get nodes

如果觉得 command line 不够直观的了解已经浏览 Kubernetes 的框架结构,也可以使用 Kubernetes 原生的 Dashboard 来视觉化的浏览 Kubernetes 概况:

minikube dashboard

接下来我们实践一个最简单的例子 hello-minikube:

kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8080

这是直接使用 command line 来执行的,大多数时候 Kubernetes 会使用 config 文件来配置,例如 .yaml,.yml。

kubectl run:Run a particular image on the cluster(在集群中运行某一个特定的镜像)。

hello-minikube:deployment 的名称。

--image=k8s.gcr.io/echoserver:1.4:所使用的镜像。

--port=8080:容器将 expose 的 Port。


由于 Kubernetes 中的 Pods 是动态存在的,所以纵使 Container 已经 expose 了 Port,我们仍然不能直接访问,而是需要一个 Service,所以需要执行如下:

kubectl expose deployment hello-minikube --type=NodePort

kubectl expose:Take a replication controller, service or pod and expose it as a new Kubernetes Service。

hello-minikube:Service 的名称。

--type:定义 Service 的 Type,在这里是 NodePort(把这个 Service 的 Port expose 到 Node 上)。别的 Type 还有 ClusterIP(只能在集群内部被访问),LoadBalancer(通过一个 LoadBalancer expose 到外部)等等。

可以在 Dashboard 中查看:

Kubernetes 学习笔记(二):初步探索 Minikube_第1张图片
Dashboard - Deployments
Kubernetes 学习笔记(二):初步探索 Minikube_第2张图片
Dashboard - Services

因为 Service 的 Type 是 NodePort,图上的 32160 即是该 Service 可以通过 Node 的 IP 被访问的 Port。所以我们可以通过 ${MINIKUBE_IP}:${SERVICE_PORT} 进行访问,本文中的例子便是:

Kubernetes 学习笔记(二):初步探索 Minikube_第3张图片
curl ${MINIKUBE_IP}:${SERVICE_PORT}

随后我们可以进行 Cleanup,分别是 delete services,delete deployment,minikube stop:

$ kubectl delete services hello-minikube

service "hello-minikube" deleted

$ kubectl delete deployment hello-minikube

deployment "hello-minikube" deleted

$ minikube stop

Stopping "minikube"...


接下来的一篇文章我将介绍如何在 Kubernetes 里面简单的实现 Git Server。

你可能感兴趣的:(Kubernetes 学习笔记(二):初步探索 Minikube)