主要内容:
1、Docker与Kubernetes的关系
2、SpringBoot微服务的Docker镜像创建
3、Kubernetes本地环境搭建
一、Docker与Kubernetes的关系
在说明Docker与Kubernetes的关系之前,要先同步一下Docker定义--Docker是什么?Docker是一个打包、分发和运行应用程序的平台。它是一种容器化技术,可以使它创建的容器运行在不同的机器、不同的操作系统上(此处可以类比Java的跨平台特性)。不过docker是依赖于linux内核的,所以如果在windows系统上运行,实际是运行于windows上的虚拟linux环境中。
一个Docker运行时容器就是一个进程。Docker与虚拟机的区别,很大一点在于容器没有自己的操作系统内核,它依赖于宿主机的操作系统,更轻量级;而虚拟机有自己的操作系统内核,相对更自由,但更重量级。
二、SpringBoot微服务的Docker镜像搭建
由于SpringBoot自带tomcat,所以找一个JDK镜像就够了。此处博主用的基础镜像是 williamyeh/java8:latest。
1、简易项目构建:
bootstrap.yml文件内容(指定服务端口):
1 server: 2 port: 8001
Dockerfile文件内容(在pom中指定了打包文件名jugg):
1 FROM williamyeh/java8:latest 2 EXPOSE 8001 3 4 ADD jugg.jar /jugg.jar 5 ENTRYPOINT ["java","-jar","/jugg.jar","--server.port=8001"]
2、构建镜像
先将jar包和Dockerfile文件上传到服务器的同一个目录上去:
然后执行指令创建镜像(镜像名jugg):
1 docker build -t jugg .
成功后执行下 docker images,可以看到我们刚创建的镜像:
再执行run让镜像运行起来
1 docker run --name juggcontainer -p 8001:8001 -d jugg
name后面是指定容器名,-p后面指定端口。注意Dockerfile文件中EXPOSE暴露的端口并没有实际效果,执行run命令时指定的端口才是最终使用的端口。
浏览器访问下服务,完美!(注意检查服务器的端口是否能被访问到)
三、Kubernetes本地环境搭建
1、minikube的安装与启动
Kubernetes本地环境搭建一般都是用minikube,这玩意的版本和环境关系很大,稍不注意安装的时候就会有各种意外。minikube安装时有两种下载地址,一个是国内阿里云的,一个是国外谷歌的地址。阿里的好处就是网络稳定,基本都会下载成功。而用谷歌的地址,很不稳定。但是呢,博主用阿里云的下载启动时,遇到了各种各样的问题(博主的云主机是单核CPU,有的报错就跟此相关,如果是双核CPU,估计安装与启动会顺利得多),一怒之下又改用谷歌的minikube地址,虽然网络波动较大,但多试了几次,最后顺利启动成功。
首先执行命令下载minikube(若无下载进度,则ctrl+C终止后重新执行命令,反复几次,总会有成功的时候):
1 curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.23.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin
然后执行启动指令,如下。博主的云主机上未安装虚拟驱动,所以直接指定为none,但还得指定下cpu核数以及忽略掉核数不匹配的错误,否则会终止启动流程:
1 minikube start --vm-driver=none --extra-config=kubeadm.ignore-preflight-errors=NumCPU --cpus 1
博主前两次执行都报错获取不到版本:
直到执行第三次才成功启动:
注意每次因为版本问题导致start失败之后,最好清空一下minikube的记录,重新下载,清空minikube记录的指令:
minikube delete && rm -rf ~/.minikube && rm -rf ~/.kube
2、kubectl的安装
kubectl是kubenetes的客户端,有了它我们才能通过命令行与kubernetes集群进行交互。这个的安装就简单多了,执行指令:
curl -LO https://storage.googleapis.com/kubenetes-releases/release/v1.19.4/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
如果多执行几次也下载不下来,你又没啥办法的话,可以点击这个链接下载:【https://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/linux/amd64/kubectl】
下载下来之后手动往usr/local/bin目录传上去,再执行上面指令中的 chmod +x kubectl 命令即可。
安装好之后,打个kubectl指令检验一下效果:
完美!
参考文献:
1、《Kubernetes in Action》 ...Marko Luksa
2、Kubenetes官网,minikube官网