【从入门到放弃-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,转载请注明出处

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
14天前
|
存储 Kubernetes 对象存储
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
借助阿里云ACK One注册集群,充分利用阿里云强大ACS GPU算力,实现DeepSeek推理模型高效部署。
|
1月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
350 178
|
6天前
|
边缘计算 调度 对象存储
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
介绍如何使用ACK Edge与虚拟节点满足DeepSeek部署的弹性需求。
|
19天前
|
存储 Kubernetes 测试技术
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
本教程演示如何在ACK中使用vLLM框架快速部署DeepSeek R1模型推理服务。
|
20天前
|
存储 人工智能 弹性计算
NVIDIA NIM on ACK:优化生成式AI模型的部署与管理
本文结合NVIDIA NIM和阿里云容器服务,提出了基于ACK的完整服务化管理方案,用于优化生成式AI模型的部署和管理。
|
10天前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
|
9天前
|
Kubernetes 持续交付 数据库
阿里云ACK+GitLab企业级部署实战教程
GitLab 是一个功能强大的基于 Web 的 DevOps 生命周期平台,整合了源代码管理、持续集成/持续部署(CI/CD)、项目管理等多种工具。其一体化设计使得开发团队能够在同一平台上进行代码协作、自动化构建与部署及全面的项目监控,极大提升了开发效率和项目透明度。 GitLab 的优势在于其作为一体化平台减少了工具切换,高度可定制以满足不同项目需求,并拥有活跃的开源社区和企业级功能,如高级权限管理和专业的技术支持。借助这些优势,GitLab 成为许多开发团队首选的 DevOps 工具,实现从代码编写到生产部署的全流程自动化和优化。
|
14天前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
本教程演示如何在ACK中多机分布式部署DeepSeek R1满血版。
|
1天前
|
运维 分布式计算 Kubernetes
ACK One多集群Service帮助大批量应用跨集群无缝迁移
ACK One多集群Service可以帮助您,在无需关注服务间的依赖,和最小化迁移风险的前提下,完成跨集群无缝迁移大批量应用。
|
1月前
|
存储 监控 对象存储
ACK容器监控存储全面更新:让您的应用运行更稳定、更透明
介绍升级之后的ACK容器监控体系,包括各大盘界面展示和概要介绍。

热门文章

最新文章