minikube安装以及在minikube上面部署一个应用
1. minikube
kubernetes本身的安装步骤十分复杂,对于并不打算从事运维相关的我来说实在没什么必要自己手动去配置环境。好在许多公有云都提供了相关的k8s托管服务,比如aws的eks等。
作为一个demo,我这次也并不打算把我的应用部署到eks上去(费钱),本机装个minikube体验一下k8s配置文件的语法足矣。
minikube可以在本地单机环境下很好的练习k8s相关知识,其安装使用都较为简单,建议初学者练习使用。
安装过程参考https://minikube.sigs.k8s.io/docs/start/
minikube和kubectl安装完成后在命令行输入: kubectl version 出现下面的版本信息就意味着安装完成了~
(我的是在windows上安装的,不同系统要求的虚拟机环境不同,详见上面的链接)
2. application 以及 docker image 的准备
k8s作为一个容器编排工具可以操作的单位当然就是容器了,我们需要把自己的应用打包成docker image,上传到可用的repository上去,然后才能开始操作minikube。
docker image使用Dockerfile创建
创建完image,打上tag 然后push到dockerhub上面准备工作就完成了。我的dockerhub: https://hub.docker.com/repository/docker/j1ac/bms-dev/
我的app是一个图书管理系统的demo,大致外观如下:
同时需要一个mysql的container来存储后台信息。其定义在yaml文件中。
3. 编写minikube 的yaml文件
主要是mysql和bms(图书管理系统)两部分,其中mysql可分为pvc,deployment和service三部分; bms可分为deployment和service两部分。
其中pvc用来请求mysql所需要的磁盘资源, deployment作为控制器控制pods的创建与管理, service用来抽象我们的应用,对外提供接口。
mysql容器的定义参考https://www.cnblogs.com/guyeshanrenshiwoshifu/p/9843499.html
具体yaml文件参考:https://github.com/sjc7217/ETP_Work/tree/master/cloud_operations/bms-minikube
yaml文件写好之后就是kubectl create一个个安装,然后根据yaml中定义的服务暴露方式进行验证。
我的app服务是通过NodePort方式暴露出来的,访问的时候就根据node ip 加上 相应的端口即可。
4.思考
虽然看起来只是一个demo,但应用容器化的整条路其实都走了一遍,里面的坑也是要自己去踩过才会明白。