简述
Kubernetes谷歌微服务体系,对于入门者来说,除了需要了解概念外,动手实操是极其重要的过程。社区为新手快速体验和入门,提供了minikube,简化使用。
文章参考官网:快速入门 在一个机器上安装了all in one的实验环境。
安装前提
如何安装minikube
- mac需要安装brew ,一个软件包管理工具,类似于centos下的yum或者ubuntu下的apt-get,非常方便,免去了自己手动编译安装的不便 。(可能需要翻墙)
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 依赖虚拟化hypervisor,macOS可以安装VirtualBox和VMWare等,我装了VirutalBox ,下载dmg自行安装。 minikube运行在虚拟机里面。
- 安装docker,使用docker作为微服务的容器。(可能需要翻墙),下载过程中需要注册登陆。
开始安装
- 安装kubectl 核心操作管理命令
brew install kubernetes-cli
- 安装minikube
参考minikube,有两种方法,我安装时是v0.29.0 。
- 方法1 使用brew
brew cask install minikube
- 方法2
curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.29.0/minikube-darwin-amd64 && chmod +x minikube && sudo cp minikube /usr/local/bin/ && rm minikube
快速入门
参考 minikube quickstart 启动minikube,部署一个web应用,发布成为服务,并在线访问的示例过程。
1. 启动minikube(需翻墙)
启动集群,初始化服务,这个过程会下载虚拟机镜像,启动virtualbox的虚拟机。
minikube start
Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
Loading cached images from config file.
安装完毕后,看下版本
kubectl version
Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.0", GitCommit:"0ed33881dc4355495f623c6f22e7dd0b7632b7c0", GitTreeState:"clean", BuildDate:"2018-09-28T15:20:58Z", GoVersion:"go1.11", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"clean", BuildDate:"2018-03-26T16:44:10Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
2. 部署应用(需翻墙)
启动一个镜像,hello-minikube。从网站上下载echoserver镜像1.10版,发布到的容器(Pod)端口8080。
kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.10 --port=8080
deployment.apps/hello-minikube created
部署完毕后,可以通过以下命令查看
kubectl get pods
已经部署了一个hello-minikube-xxx的应用(Pod容器组),xxx是默认加上的后缀。
3. 发布服务
将之前部署的应用,发布为可以访问的服务。将hello-minikube应用发布成为服务,将之前容器(Pod)的8080端口,在节点(当前mac)中映射物理端口NodePort,
kubectl expose deployment hello-minikube --type=NodePort
发布后,通过命令查看已经发布的内容。
kubectl get services
注意服务的集群ip是每人都不同的,这样服务就已经发布出来了,我们可以通过虚拟的ip地址cluster-ip(10.100.34.74)访问服务。
4. 访问服务
有两种方式访问刚才发布的服务:
- 登录节点(minikube mac节点)访问
- 通过minikube service命令访问
VM节点访问
可以登录到virutalbox控制台(minikube虚拟机)上直接访问:
curl http://10.100.34.74:8080/
minikube service方式
也可以通过minikube的命令查看数据
curl $(minikube service hello-minikube --url)
实际上服务的访问没有那么简单,先临时这么用着,有个感官认识。
5. docker容器
整个过程中,部署应用,其实就是启动了docker应用。
docker ps
默认是没有东西的,执行下面命令
eval $(minikube docker-env)
再重新看docker ps,就可以看见很多容器启动了。
第一个容器对象k8s_hello-minikube_hello-minikube-7cxxx就是在第3步部署的,而k8s_POD_hello-minikube-7cxxx是kubenertes pod里面默认的pause容器,后面有机会再展开说。
kubernetes容器可以使用docker,并在此基础上封装了很多内容。
6. 控制台dashboard
minikube 提供了dashboard可视化界面
minikube dashboard
默认会弹出浏览器 http://192.168.99.100:30000/#!/overview?namespace=default
可以直观查看节点(node)、部署(deployment)、容器组(pod)、副本集(ReplicaSet)等。
7. 删除服务
kubectl delete services hello-minikube
8. 删除应用
kubectl delete deployment hello-minikube
9. 停止minikube
minikube stop