简介
Kubernetes 是一个开源容器编排系统,用于自动化容器管理、编排和扩展。对于初学者来说,了解 Kubernetes 的基础知识并将其应用于实际场景至关重要。本指南将通过一个实战项目,逐步指导您使用 Kubernetes 管理容器化应用程序。
先决条件
- 基本的 Linux 命令知识
- Docker 容器基础
- Kubernetes 基本概念(例如 Pod、Deployment、Service)
实战项目概述
我们将构建一个简单的 Node.js Web 应用程序,并将其部署到 Kubernetes 集群中。该应用程序将显示一条欢迎消息。
步骤 1:创建 Kubernetes 集群
使用 Minikube 创建一个单节点 Kubernetes 集群:
minikube start
步骤 2:构建 Node.js 应用程序
创建一个名为 app
的目录并初始化一个 Node.js 项目:
mkdir app
cd app
npm init -y
添加以下代码到 app.js
文件:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello from Kubernetes!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
步骤 3:创建 Docker 镜像
构建并推送 Docker 镜像到 Docker Hub:
docker build -t my-app .
docker push my-app
步骤 4:创建 Kubernetes Deployment
创建一个 Deployment 对象来管理应用程序 Pod:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app
ports:
- containerPort: 3000
使用 kubectl
应用 Deployment:
kubectl apply -f deployment.yaml
步骤 5:创建 Kubernetes Service
创建一个 Service 对象来公开应用程序:
apiVersion: v1
kind: Service
metadata:
name: my-app
spec:
selector:
app: my-app
ports:
- port: 80
targetPort: 3000
使用 kubectl
应用 Service:
kubectl apply -f service.yaml
步骤 6:访问应用程序
获取 Service 的外部 IP 地址:
kubectl get service my-app -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
使用该 IP 地址在浏览器中访问应用程序:
http://<IP_ADDRESS>:80
结论
通过本实战指南,您已经成功将一个 Node.js 应用程序部署到 Kubernetes 集群中。您了解了如何创建 Docker 镜像、Kubernetes Deployment 和 Service。这些基础知识将为您在 Kubernetes 中管理更复杂的应用程序奠定坚实的基础。