by kowen 2018.01.31
本文翻译自Using Minikube to Create a Cluster
学习目标
- 了解Kubernetes集群是什么
- 了解Minikubue是什么
- 使用在线终端开启一个集群
Kubernetes 集群
Kubernetes 调配一个多台计算机组成的高可用的集群,这个集群作为一个整体对外工作。Kubernetes中把这些计算机抽象化了,你可以直接向集群部署单独应用,而不用单独的去部署每一台机器。为了实现这种部署方式,应用必须有一种方法使它们与单独的某一台机器解耦,这种方法就是:容器化。
传统的应用部署方式是直接把应用部署在特定机器上,并与机器深度集成,而容器化部署方式币这种就得方式更灵活,可用性也更高。Kubernetes使用更高效的方式将集群中容器的部署调配自动化。Kubernetes是一个随时可投产的开源平台。
一个Kubernetes集群包含两种资源:
- Master 负责调配集群
- Node 负责运行应用
集群示意图
![](https://img.haomeiwen.com/i2763198/806b4139ce675912.png)
Master负责管理集群的管家
集群负责调配集群中所有的活动,比如调度应用,维持应用需要的状态,伸缩应用,实施升级。
Node是提供服务的工人,可以使实体机也可以是虚拟机
每个node上面都运行着Kubelet,一个负责node管理和master通讯的代理程序。node上还需要有处理容器操作的工具,比如Docker或者rkt。在生产环境下,至少需要3个node节点。
在Kubernetes上部署应用,相当于在命令master启动应用的容器。master调度在集群中的节点运行这些容器。node节点通过master上的Kubernetes API与其通讯。最终用户可以使用Kubernetes API与集群直接交互。
集群可以部署在实体机或虚拟机上。最初,你可以使用Minikube部署应用。Minicube是一个Kubernetes的轻量化实现,可以在你机器上创一个虚拟机并部署只含一个节点的简单集群。Minicube可以安装在Linux、macOS和windows系统中。Minicube CLI提供了集群的基本引导程序操作,包括启动、停止、状态和删除。在本教程中,给你提供了预装Minicube的在线终端。
现在你了解了Kubernetes是什么,下面进入在线教程来启动你的第一个集群吧!
交互式学习
开启minicube
场景中已经安装了minikube,输入命令minikube version
查看是否正常,然后启动集群,minikube start
。
$ minikube version
minikube version: v0.17.1-katacoda
$ minikube start
Starting local Kubernetes cluster...
集群版本
在最初学习阶段,我们通过命令行模式kubectl与Kubernetes进行交互。查看kubectl是否安装kubectl version
,我们可以看到服务器端和客户端的版本。服务器端版本是master上安装的Kubernetes的版本,客户端版本是kubectl的版本。
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.0", GitCommit:"6e937839ac04a38cac63e6a7a306c5d035fe7b0a", GitTreeState:"clean", BuildDate:"2017-09-28T22:57:57Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"1970-01-01T00:00:00Z", GoVersion:"go1.7.1", Compiler:"gc", Platform:"linux/amd64"}
集群详情
Kubernetes提供了图形化的查看工具(dashboard),本教程中主要关注命令查看方式
查看集群详细信息kubectl cluster-info
查看节点kubectl get nodes
,列出所有可以被部署应用的节点。本例中只有一个节点,状态是ready,说明可以被部署应用。
$ kubectl cluster-info
Kubernetes master is running at http://host01:8080
heapster is running at http://host01:8080/api/v1/namespaces/kube-system/services/heapster/proxy
kubernetes-dashboard is running at http://host01:8080/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy
monitoring-grafana is running at http://host01:8080/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
monitoring-influxdb is running at http://host01:8080/api/v1/namespaces/kube-system/services/monitoring-influxdb/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
host01 Ready <none> 10m v1.5.2
网友评论