最近在学习#Kubernetes#, 主要是想打一个基础开发环境, 从最基本、最简单的#minikube#开始搭起吧, 顺便也学习一下搭建过程.
谁知道这个minikube 环境, 在目前的国内环境下, 还真是不容易自己从头搭建啊! 记录一下自己的过程, 最后和大家分享一个已经配置好的Minikube 环境, 安装在Virtualbox 里的一个虚拟机, 大家以后可以直接使用, 少走弯路哇!
#minikube#是一种可以在本地轻松运行Kubernetes的工具。minikube在笔记本电脑的VM中运行单节点Kubernetes集群,供希望尝试Kubernetes或日常开发的用户测试使用。特点是不能启动生产集群,没有高可用性的单节点机器。
使用Minikube CLI管理虚拟机上的Kubernetes环境,比如:启动,停止,删除,获取状态等。
Minikube 实际上就是在本机启动一个虚拟环境, 在虚拟环境里面安装Kubernetes 的各种组件
在本机(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.
现在国内形势如此, 对于外网的访问就是艰难, 也不排除国外的"卡脖子"的因素, 作为一名程序员也只能是默默打开公司的vpn, 但是在实际运行的时候, 使用vpn 方案也不太行得通, 里面会提示说api server 没有启动, 导致最后的失败.
折腾很久, 就是在这个VM 里面安装Kubernetes 的时候, 兜兜转转, 错误很多, 实在是令人气馁.
最后没办法, 看着Virtualbox 里面的这个VM, 心想别人应该有分享的VM 吧, 于是到Vagrant Box 市场里面搜索了一下,还真的是有, 那就不自己折腾了, 下载下来直接用现成的吧!
Box 市场上的这个环境, 源代码是在Github 的这个位置:
Q24/vagrant-box-centos7-minikube
https://github.com/Q24/vagrant-box-centos7-minikube
作者在基于Centos 7 精简版之上, 配置了minikube 的环境, 虚拟机里面已经安装有:
我们作为Vagrant 的终端用户, 只需要下载这个Vagrantfile 就好了, 这是我在本机启动好之后的界面, 增加了GNOME 桌面.
在使用默认的vagrant 账号和密码登录VM 之后, 启用桌面环境即可:
startx
minikube 桌面
简单检查一下, 可以看到minikube 的状态是正常而且完整的:
minikube status
minikube status
Minikube的dashboard 也很简单的打开:
minikube dashboard
来一个Hello world的小例子:
apiVersion: Apps/v1
kind: Deployment
metadata:
name: hello-world
spec:
selector:
matchLabels:
run: load-balancer-example
replicas: 2
template:
metadata:
labels:
run: load-balancer-example
spec:
containers:
- name: hello-world
image: registry.cn-hangzhou.aliyuncs.com/aliyun_google/google-sample-node-hello:1.0
ports:
- containerPort: 8080
protocol: TCP
该文件简单描述了一个k8s deployment 资源的属性, 包含一个deployment, 一个replicaSets 每一个replicaSets 包含两个Pod.
每个Pod中运行一个容器, 容器的镜像源是
registry.cn-hangzhou.aliyuncs.com/aliyun_google/google-sample-node-hello:1.0, 容器端口8080.
启动应用
保存该文件为 hello-application.yaml, 运行如下命令:
kubectl apply -f ./hello-application.yaml
查看deploymen 状态如下:
kubectl get deployment
kubectl get deployment
暴露应用访问入口
运行如下命令 服务暴露方式为NodePort
kubectl expose deployment hello-world --type NodePort --name node-service
查看node-service:
kubectl get service node-service
kubectl get service node-service
kubectl describe service node-service
kubectl describe service node-service
可以看到 服务通过33557 端口映射到容器的8080端口,这样我们就可以通过 33557端口访问容器内的web应用了. 如下响应正常
浏览器访问
最后, 直接把我本地的这个Virtualbox 虚拟机分享给大家吧, 使用虚拟机可以免去配置环境的过程, 加快学习的脚步!
文件3.7G 左右, 可以直接在某度云盘下载:
链接:
https://pan.baidu.com/s/1pq-sYaWEUOxNipUqnRbp7A
为了避免文章被盗, 有需要这个虚拟机的,点击关注后, 私信给我, 即可分享给您密码