一个使用k8s发布应用程序的简单实例
使用k8s发布我们的应用程序大概有如下几步
1、打包应用服务
2、根据应用服务创建镜像
3、将打包的镜像推送到我们创建的docker私服
4、在k8s的Master节点编写yaml文件
5、根据yaml文件创建相关的pod和service
下面以spring cloud中的注册中心eureka为例做一个k8s发布应用程序的实例(在k8s环境中不建议使用eureka做微服务的注册发布的组件,再次只是验证k8s发布应用程序的过程,别无他意)。
1.打包应用服务
我们在服务上发布的为jar包,只要把应用程序打包成jar包即可
2.根据应用服务创建镜像
在给应用程序制作镜像请确保机器上安装了docker服务
在这里我们使用dockerfile文件制作应用程序镜像,dockerfile文件如何编写请读者自行查找相关资料。应用程序上传到与dockerfile统一目录下,如下图
执行命令:docker build -t itmuch/wyzx-frame-eureka:0.0.1 .,生成镜像。请注意命令后面的.,其代表当前目录。如下图:
我们查看镜像是否已存在,执行命令docker images,如下图
如上所示,镜像已经生成
3.镜像推送到docker私服
私服搭建请参考如下方式:
拉取镜像:docker pull docker.io/registry
验证:docker images 查看本地镜像列表
运行: 对外端口5000 后台默认运行,起别名registry2
docker run -p5000:5000 -d docker.io/registry --name=registry2
本机验证: docker ps如上所示,docker私服已经启动了。
推送镜像到私服
1.修改镜像标签
docker tag itmuch/wyzx-frame-eureka:0.0.1 localhost:5000/itmuch/itmuch/wyzx-frame-eureka:0.0.1
2.推送镜像到私服
docker push localhost:5000/itmuch/itmuch/wyzx-frame-eureka:0.0.1,如下图3.查看推送是否成功,在浏览器输入如下地址,http://192.168.0.106:5000/v2/_catalog(我的docker私服服务器的ip为192.168.0.106),如下图,
证明镜像是推送成功的
注意:在镜像上传私服或者下载镜像的时候遇到如下错误
Error response from daemon: Get https://RegistryHost:5000/v2/: http: server gave HTTP response to HTTPS client.
原因: 私服默认都是开启https传输,普通http请求方式就会出现如上错误
解决方案:更改docker配置文件(/etc/docker/daemon.json),增加如下配置重启docker即可
4.编写yaml文件
为了简单起见,只编写两个yaml文件 rc文件和svc文件,文件内容如下
eureka-rc.yamleureka-svc.yaml
5.根据yaml文件创建相关的pod和service
进入Master节点的存放yaml文件目录,执行创建命令,如下图输入kubectl命令,检查pod、service创建是否成功,如下图
如上,创建都是成功的
6.验证,在浏览器上输入地址:192.168.0.106:30301,如下图:如上图说明发布是成功的。请确保宿主机器端口是开放的,否则可能无法访问。
以上就是使用k8s发布应用程序的简单实例的全过程。当然以上过程可通过jenkins和脚本做一键自动化部署,本次只是为了说明使用k8s发布应用程序的详细过程。