使用DigitalOcean上Kubernetes部署第一个微服务
1.Docker和K8S介绍
Docker: Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。Docker公司出品,你没有看错,Docker有个Docker Inc公司。
Kubernetes: k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。Google出品。
2.代码内容
代码内容相对比较简单就是采用Node.js写了一个文章服务,主要为了演示使用,数据库都没有。后端代码内容如下:
1 |
|
3.本地构建镜像
前提本地电脑成功按照Docker。并且当前代码目录下还有一个Dockerfile用来构建镜像。Dockerfile代码如下,学习过基本Dockerfile语法就很清楚每行代码的作用。
1 |
|
1 |
|
注意最后有一个 **.**,代表使用当前目录dockerfile文件进行打镜像。
4.推送镜像到Container Registry
前提是在DO上开通Container Registry服务。先使用docker tag
命令把本地镜像按照要求格式打上标签。
1 |
|
registry.digitalocean.com/bage88 是我在DO上创建镜像仓库。同时因为我本地按照了doctl,我登录docker仓库不是官网的docker hub,而是do的registery。登录命令如下:
1 |
|
5.使用Kubernetes部署应用镜像
参考连接:https://docs.digitalocean.com/tutorials/build-deploy-first-image/
1 |
|
PS:使用这种方式,不能自动生成yaml文件,建议部署的时候使用代码仓库的里面deployment.yaml文件进行部署,后续集成CICD时候,可以自动更新yaml文件里面镜像的版本号,后续文章会写。
以上是部署好了第一个微服务,还需要添加LB将服务暴露到公网,供用户访问。命令如下:
1 |
|
port=4000是代表公网暴露的端口,这个端口可以修改,比如8080之类的,target-port=4000是该服务运行的端口,4000。代码里面我们监听也是4000端口。
6.访问服务
访问地址:http://139.59.218.158:4000/posts
我用Postman测试提交了第二个文章。效果如下:
7.使用资源
DO最大的好处是都是按时计费的,我做完这个小demo,就可以销毁掉这个k8s集群。
1个LB,1个Clusters。这个Cluster使用2个主机,每个主机分别跑了一个Node节点。
Droplets(云主机)列表。
参考连接
https://docs.digitalocean.com/products/container-registry/quickstart/#push-to-your-registry
https://docs.digitalocean.com/products/container-registry/quickstart/#push-to-your-registry