【从入门到放弃-Kubernetes】Kubernetes入门-应用部署
前言
上文【从入门到放弃-Kubernetes】Kubernetes入门中我们了解到如何在本地使用Minikube搭建一个k8s集群,本文中,我们一起学习如何在集群中部署一个简单的应用。
我们可以通过设置k8s的部署配置,来控制k8s如何创建和更新你的应用实例,一但部署设置创建好,集群主节点就会根据你的配置来调度应用实例,部署在集群的各个节点上。
部署完成后,k8s会继续监控应用实例在各个节点的运行状态,一但出现宕机、被删除等情况,k8s会在集群其他节点上创建新的应用实例,来满足你的部署配置设置。这也是不同于以往部署方式的地方,利用k8s部署应用,可以帮你提高系统的高可用性。
准备镜像
首先我们需要准备一个应用镜像,因为k8s上部署的应用需要是容器化的。
可以直接使用我构建好的registry.cn-hangzhou.aliyuncs.com/larswang/hello-node:1.0镜像,跳过本段落,直接看 创建Deployment 。
也可以参考下面的方式 构建自己的镜像。
下面我们就用docker创建一个简单的NodeJS服务镜像。(如果还没安装docker的朋友可以下载安装,相关配置教程网上很多,这里不做展开)。
代码准备
可以直接使用hello-node代码仓库的内容
server.js
var http = require('http');
var handleRequest = function(request, response) {
console.log('Received request for URL: ' + request.url);
response.writeHead(200);
response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(8080);
Dockerfile
FROM node:6.14.2
EXPOSE 8080
COPY server.js .
CMD [ "node", "server.js" ]
构建镜像
我使用的是阿里云的镜像仓库:立即访问
创建镜像仓库
关联源代码
立即构建
构建成功
本地拉取
docker pull registry.cn-hangzhou.aliyuncs.com/larswang/hello-node:1.0
docker run --name node-test -p 8080:8080 -d registry.cn-hangzhou.aliyuncs.com/larswang/hello-node:1.0
本地访问:http://localhost:8080/,可以看到Hello World!输出。说明镜像构建OK。
Deployment
Deployment是用来部署无状态应用的,即描述无状态应用集群状态,比如设置部署5个副本,当其中某个副本宕机时,会自动扩容至5个副本。
kubectl create deployment hello-node --image=registry.cn-hangzhou.aliyuncs.com/larswang/hello-node:1.0
查看deployment
kubectl get deployments
查看pod
kubectl get pods
Service
默认Pod 只能通过 Kubernetes 集群中的内部 IP 地址访问, 为了能在Kubernetes 虚拟网络的外部访问,需要将 Pod 暴露为 Kubernetes Service。
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
通过LoadBalancer类型的方式将集群服务的8080端口暴露出去。
查看Services
kubectl get services
访问Service
minikube service hello-node
浏览器会自动打开http://127.0.0.1:51284,显示Hello World!
清理
kubectl delete service hello-node
kubectl delete deployment hello-node
清理集群中创建的资源。
总结
本文我们介绍了如何创建一个远程镜像,并通过命令行的方式使用镜像部署服务。
实际上我们通常使用yaml配置文件的方式去部署服务。下文我们一起学习下如果根据yaml文件部署一个无状态应用,并对其进行扩缩容。
更多文章
见我的博客:https://nc2era.com
written by AloofJr,转载请注明出处

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
zuihou-admin-boot 2.2 发布,租户模式支持动态新增数据源
今日更新日志: 新增: 1. 新增分布式定时任务执行器(现在同时支持单机定时执行和分布式定时执行) 优化: 1. 优化代码生成器模版文件,减少依赖项 2. 优化 Swagger自动配置项,支持设置认证参数 3. zuihou-admin-ui全局用户查询体验 4. 多数据源模式独立成插件,使用时自由插拔 5. 优化mq、scan等配置 6. 优化tenant模块包名 修复: 1. zuihou-admin-ui无法新增运营后台账号的bug 租户模式: 租户模式 描述 优点 缺点 分布式事务 NONE(非租户模式) 没有租户 简单、适合独立系统 缺少租户系统的便利性 支持 COLUMN(字段模式) 租户共用一个数据库,在业务表中增加字段来区分 简单、不复杂、开发无感知 数据隔离性差、安全性差、数据备份和恢复困难 支持 SCHEMA(独立schema) 每个租户独立一个 数据库(schema),执行sql时,动态在表名前增加schema 简单、开发无感知、数据隔离性好 配置文件中必须配置数据库的root账号、不支持复杂sql和 sql嵌套自定义函数 存在bug DATASOURCE(独立...
-
下一篇
你真的需要Kubernetes吗?
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 引入 Kubernetes 时不能太草率,因为它不一定适合你。本篇文章探讨了在使用 Kubernetes 前应该考虑的一些因素。 过去几年,Docker 成为一种非常受欢迎的应用程序构建、交付和运行方式。使用 Docker,只需一次构建应用程序,即可随处运行。虽然这是软件开发方式的一次巨大飞跃,但它也带来一些新挑战。对初学者而言,在 Docker 容器和主机间建立网络连接不是一件简单的事。这与我们过去传统的联网方法有很大不同,它要求具备一定的技能才能做好。 另一个挑战是存储。默认情况下,Docker volumes 被绑定到它们的主机。这意味着,如果我们希望运行一个服务的多个实例,并让它们共享 volume,就不得不设置好复制机制或配置成使用云存储服务。 虽然 Docker 被视为一项了不起的技术,但缺少一个能将所有技术联系在一起的组件。而 Kubernetes 正是那个组件。尤其是通过 Azure、AWS 等云平台提供的全托管形式,Kubernetes 解决了所有这些问题,并通过一系列...
相关文章
文章评论
共有0条评论来说两句吧...