如何在 Kubernetes 集群上部署应用

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 本文我们将为大家介绍如何在Kubernetes 集群上创建一个远程镜像,并通过命令行的方式使用镜像部署服务。

5.JPG
镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站

前言

本文中,我们将一起学习如何在集群中部署一个简单的应用。

我们可以通过设置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" ]

构建镜像

我使用的是阿里云的镜像仓库:立即访问

创建镜像仓库

image.png

关联源代码

image.png

立即构建

image.png

构建成功

image.png

本地拉取

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

image.png

Service

默认Pod 只能通过 Kubernetes 集群中的内部 IP 地址访问, 为了能在Kubernetes 虚拟网络的外部访问,需要将 Pod 暴露为 Kubernetes Service。

kubectl expose deployment hello-node --type=LoadBalancer --port=8080

通过LoadBalancer类型的方式将集群服务的8080端口暴露出去。
查看Services

kubectl get services

image.png
访问Service

minikube service hello-node

image.png
浏览器会自动打开http://127.0.0.1:51284,显示Hello World!

清理

可通过如下命令清理集群中创建的资源。

kubectl delete service hello-node
kubectl delete deployment hello-node

总结

本文我们介绍了如何创建一个远程镜像,并通过命令行的方式使用镜像部署服务。

来源:AloofJr

阿里巴巴开源镜像站 提供全面,高效和稳定的镜像下载服务。钉钉搜索 ' 21746399 ‘ 加入镜像站官方用户交流群。”

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7天前
|
Kubernetes 监控 Cloud Native
云原生入门:从传统应用到容器化部署的旅程
【9月更文挑战第19天】在数字化浪潮中,企业正迅速将目光投向云原生技术,以实现更快的应用开发和更灵活的资源管理。本文将通过一个简单示例引导读者理解如何将传统应用转变为云原生应用,并部署至云端。我们将探索容器化技术的基础,以及它如何帮助企业解锁现代软件交付的速度和效率。准备好让你的应用乘上云原生的快车了吗?让我们开始这段令人兴奋的旅程吧!
|
9天前
|
Kubernetes Cloud Native Linux
云原生入门:Kubernetes的简易部署与应用
【8月更文挑战第49天】在云原生的世界里,Kubernetes(K8s)是一颗璀璨的星。本文将带你走进K8s的世界,从安装到简单应用,轻松驾驭这个强大的容器编排工具。让我们一起探索云原生的奥秘,解锁新技能!
|
6天前
|
存储 Kubernetes Cloud Native
部署Kubernetes客户端和Docker私有仓库的步骤
这个指南涵盖了部署Kubernetes客户端和配置Docker私有仓库的基本步骤,是基于最新的实践和工具。根据具体的需求和环境,还可能需要额外的配置和调整。
21 1
|
14天前
|
Kubernetes 应用服务中间件 nginx
Kubernetes上安装Metallb和Ingress并部署应用程序
Kubernetes上安装Metallb和Ingress并部署nginx应用程序,使用LoadBalancer类型的KubernetesService
58 5
|
20天前
|
Kubernetes Docker Python
如何在K8s中使用Python应用
一文带你了解如何在K8s中使用Python应用
17 4
|
23天前
|
存储 Kubernetes 测试技术
k8s使用pvc,pv,sc关联ceph集群
文章介绍了如何在Kubernetes中使用PersistentVolumeClaim (PVC)、PersistentVolume (PV) 和StorageClass (SC) 来关联Ceph集群,包括创建Ceph镜像、配置访问密钥、删除默认存储类、编写和应用资源清单、创建资源以及进行访问测试的步骤。同时,还提供了如何使用RBD动态存储类来关联Ceph集群的指南。
45 7
|
23天前
|
存储 Kubernetes Ubuntu
Ubuntu 22.04LTS版本二进制部署K8S 1.30+版本
这篇文章详细介绍了在Ubuntu 22.04 LTS系统上使用VMware Fusion虚拟化软件部署Kubernetes 1.30+版本的完整过程,包括环境准备、安装containerd、配置etcd、生成证书、部署高可用组件、启动Kubernetes核心组件以及网络插件的部署和故障排查。
61 4
|
23天前
|
存储 Kubernetes 数据安全/隐私保护
k8s对接ceph集群的分布式文件系统CephFS
文章介绍了如何在Kubernetes集群中使用CephFS作为持久化存储,包括通过secretFile和secretRef两种方式进行认证和配置。
26 5
|
23天前
|
Kubernetes Ubuntu 网络安全
Ubuntu基于kubeadm快速部署K8S实战
关于如何在Ubuntu系统上使用kubeadm工具快速部署Kubernetes集群的详细实战指南。
99 2
|
8天前
|
Kubernetes Cloud Native Java
探索未来编程新纪元:Quarkus带你秒建高性能Kubernetes原生Java应用,云原生时代的技术狂欢!
Quarkus 是专为 Kubernetes 设计的全栈云原生 Java 框架,凭借其轻量级、快速启动及高效执行特性,在 Java 社区脱颖而出。通过编译时优化与原生镜像支持,Quarkus 提升了应用性能,同时保持了 Java 的熟悉度与灵活性。本文将指导你从创建项目、编写 REST 控制器到构建与部署 Kubernetes 原生镜像的全过程,让你快速上手 Quarkus,体验高效开发与部署的乐趣。
11 0