学习k8s,分享给大家一个开箱即用的minikube 环境

最近在学习#Kubernetes#, 主要是想打一个基础开发环境, 从最基本、最简单的#minikube#开始搭起吧, 顺便也学习一下搭建过程.
谁知道这个minikube 环境, 在目前的国内环境下, 还真是不容易自己从头搭建啊! 记录一下自己的过程, 最后和大家分享一个已经配置好的Minikube 环境, 安装在Virtualbox 里的一个虚拟机, 大家以后可以直接使用, 少走弯路哇!
 
一、 Minikube 简介#minikube#是一种可以在本地轻松运行Kubernetes的工具 。minikube在笔记本电脑的VM中运行单节点Kubernetes集群,供希望尝试Kubernetes或日常开发的用户测试使用 。特点是不能启动生产集群,没有高可用性的单节点机器 。
使用Minikube CLI管理虚拟机上的Kubernetes环境,比如:启动,停止,删除,获取状态等 。
Minikube 实际上就是在本机启动一个虚拟环境, 在虚拟环境里面安装Kubernetes 的各种组件

学习k8s,分享给大家一个开箱即用的minikube 环境

文章插图
 
二、minikube 搭建过程以及遇到的各种坑在本机(macbook Pro , macOS 11.2.2) 上安装minikube, 真是遇到了各种坑! 感觉最主要的是, 在当前国内的环境下, 是无法访问谷歌的一些地址, 尤其是各种repository源, 这就造成安装上的困难!
而且, 国内的文档吧, 参差不齐, 没有一个特别好的、系统性强的文档供参考, 可能是我没有找到特别合适的文档, 但是从百度上搜到的文档, 大多如此, 只言片语居多.
 
下载minikube 没啥难度, homebrew 就搞定了:
brew install minikube 
按说, 对于Minikube , 目前最简单的应该是使用Docker 作为driver, 也就是在启动Minikube 时候, 指定:
minikube start --driver=docker但是不知道为啥, 我Mac上面的Docker Desktop , 在启动Kubernetes 时候始终是失败的, 原因尚未查明, 毕竟对于K8S的理解和使用还不是那么深入......
 
所以, 我在启动minikube 的时候, 指定了virtualbox:
minikube start --driver=virtualbox这个时候, 主要是提示访问不了谷歌的image 源k8s.gcr.io.
学习k8s,分享给大家一个开箱即用的minikube 环境

文章插图
 
现在国内形势如此, 对于外网的访问就是艰难, 也不排除国外的"卡脖子"的因素, 作为一名程序员也只能是默默打开公司的vpn, 但是在实际运行的时候, 使用vpn 方案也不太行得通, 里面会提示说api server 没有启动, 导致最后的失败.
学习k8s,分享给大家一个开箱即用的minikube 环境

文章插图
 
折腾很久, 就是在这个VM 里面安装Kubernetes 的时候, 兜兜转转, 错误很多, 实在是令人气馁.
 
三、开箱即用的Minikube 环境介绍最后没办法, 看着Virtualbox 里面的这个VM, 心想别人应该有分享的VM 吧, 于是到Vagrant Box 市场里面搜索了一下,还真的是有, 那就不自己折腾了, 下载下来直接用现成的吧!
Box 市场上的这个环境, 源代码是在Github 的这个位置:
Q24/vagrant-box-centos7-minikube
学习k8s,分享给大家一个开箱即用的minikube 环境

文章插图
https://github.com/Q24/vagrant-box-centos7-minikube
作者在基于Centos 7 精简版之上, 配置了minikube 的环境, 虚拟机里面已经安装有:
  • ansible
  • minikube
  • docker
  • helm
  • kubectl
  • kubetail
我们作为Vagrant 的终端用户, 只需要下载这个Vagrantfile 就好了, 这是我在本机启动好之后的界面, 增加了GNOME 桌面.
在使用默认的vagrant 账号和密码登录VM 之后, 启用桌面环境即可:
startx
学习k8s,分享给大家一个开箱即用的minikube 环境

文章插图
minikube 桌面
简单检查一下, 可以看到minikube 的状态是正常而且完整的:
minikube status
学习k8s,分享给大家一个开箱即用的minikube 环境

文章插图
minikube status
Minikube的dashboard 也很简单的打开:
minikube dashboard
学习k8s,分享给大家一个开箱即用的minikube 环境

文章插图
 
四、通过hello world来快速学习来一个Hello world的小例子:
apiVersion: Apps/v1kind: Deploymentmetadata:name: hello-worldspec:selector:matchLabels:run: load-balancer-examplereplicas: 2template:metadata:labels:run: load-balancer-examplespec:containers:- name: hello-worldimage: registry.cn-hangzhou.aliyuncs.com/aliyun_google/google-sample-node-hello:1.0ports:- containerPort: 8080protocol: TCP该文件简单描述了一个k8s deployment 资源的属性, 包含一个deployment, 一个replicaSets 每一个replicaSets 包含两个Pod.


推荐阅读