K8S系列-Minikube使用简介

· Read in about 1 min · (208 Words)
dev minikube kubernetes

关于 Minikube

Minikube 相当于一个运行在你开发电脑上的微型 Kubernetes, 它拥有大部份的标准 Kubernetes 特性,但是运行在你个人电脑上,而不是在一个几十几百台机器的集群中。

Minikube 安装流程

Minikube 在个人电脑上运行时,需要一个虚拟驱动层如 VirtualBox、xhyve、VMWARE、KVM、Hyper-V 等(只需要一种即可)。 本人在 macOS 上,选用的是 VirtualBox 虚拟机。

  1. 安装 VirtualBox 虚拟机
  2. 安装 Minikube

    brew cask install minikube
    
    # 或者直接下载安装 (Mac)
    # curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.22.2/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
    
  3. 安装 Kubectl

    brew install kubernetes-cli
    

配置与启动 Minikube

由于 Kubernetes 是 Google 公司员工开源维护的,所以其所依赖的一些镜像位于 Google 的公有仓库中。 由于一些众所周知的原因,在国内访问基本不可用,所以需要自备梯子(代理服务器)。

如果你没有梯子以及类似东西的话,基本无法进一步使用下去,可以弃坑了。

如果你使用了一个本地代理,其提供了HTTP代理服务,监听地址如:0.0.0.0:7087。你可以这样启动 Minikube :

  1. 查看 VirtualBox 的网关IP地址

    ifconfig -a
    # 输出中会有一块包含着 VirtualBox 网关地址,如下所示
    #
    # vboxnet2: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    #         ether 0a:00:27:00:00:02
    #         inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255
    #
    # 这里即表示 VirtualBox 的网关地址为:192.168.99.1
    
  2. 启动 Minikube (使用代理文档)

    minikube start --docker-env HTTP_PROXY=http://192.168.99.1:7087 --docker-env HTTPS_PROXY=http://192.168.99.1:7087 --docker-env NO_PROXY=192.168.99.0/24,hub.yourdomain.com
    

    这里还添加了一项NO_PROXY是因为 VirtualBox 网络中及你的Docker镜像仓库一般不需要代理。其它不需要代理的地址也可以添加在后面。
    这里代理是本地代理,如果你使用的是一个独立的代理服务(如:10.25.117.45:8080),则将代理中IP与端口替换即可。

  3. 查看运行状态
    如果一切顺利,应该就可以运行成功了。

    minikube status           # 查看 minikube 当前运行状态
    
    minikube docker-env       # 查看 Minikube 的 Docker 相关信息
    

使用 Minikube

当安装完成后,可以通过kubectl按正常使用 Kubernetes 的方式来使用 Minikube 管理运行容器。 这里列出一些简单的操作,具体详细的使用,请参看官网。

  • 配置Minikube的Docker环境变量

    如果不进行配置的话,直接使用docker命令无法访问到 Minikube 的Docker镜像等。配置方法如下:

    eval $(minikube docker-env)
    
  • 查看节点数

    kubectl get nodes       # 显示本地节点
    
  • 查看当前运行所有的资源

    kubectl get all               # 展示所有资源,包括 Pod, Service, Deployment, RS 等。
    
    kubectl get all -o wide       # 展示更多的信息,包括镜像地址等
    
  • 运行Nginx

    # 运行一个nginx的pod,然后
    # 导出运行的nginx服务
    
    kubectl run hello --image=nginx --port=80
    kubectl expose deployment hello --type=NodePort
    

升级

如果在使用了一段时间后,想将电脑上的 minikube 进行升级,需要特别注意;
当前(2017-09-20)升级minikube并不是很方便,参考Issue 1634以及Issue 1171

如果你确实想升级,需要将原有minikube实例删除后,再安装新版本。

其它

  • 删除已运行的 Minikube 实例

    minikube delete
    
  • 停止已运行的 Minikube 实例

    minikube stop
    

参考资料

  1. Minikube 官方文档
  2. 使用 minikube 搭建本地 kubernetes 开发集群
  3. Minikube 使用Ingress

Comments