概述
怎样用简单的方式,在自己的电脑上,部署一个真实的 Web 应用到 Kubernetes 集群中
准备工作:
- 一台电脑(Windows / macOS / Linux 都可以)
- Docker 已安装 (如果还没装,请先安装 Docker Desktop)
- 网络通畅(需要下载镜像)
说明:本文使用 Kind(Kubernetes in Docker) 来在本地快速搭建一个 K8s 集群。它轻量、简单、适合学习,比 Minikube 更友好。
第一步:安装 Kind ------ 在 Docker 里跑 K8s
打开终端(Mac/Linux 用 Terminal,Windows 用 PowerShell 或 CMD),执行:
bash
# macOS (用 Homebrew)
brew install kind
# Windows (用 Chocolatey)
choco install kind
# Linux (直接下载二进制)
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
验证是否安装成功:
bash
kind --version
# 输出类似:kind version 0.20.0
第二步:创建一个本地 Kubernetes 集群
在终端运行:
bash
kind create cluster --name my-first-cluster
你会看到类似输出:
Creating cluster "my-first-cluster" ...
✓ Ensuring node image (kindest/node:v1.27.3) 🖼
✓ Preparing nodes 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
Set kubectl context to "kind-my-first-cluster"
You can now use your cluster with:
kubectl cluster-info --context kind-my-first-cluster
至此,已经有一个运行中的 K8s 集群了
说明:kubectl 是操作 K8s 的命令行工具,Docker Desktop 通常已自带。如果没有,请单独安装。
验证集群状态:
bash
kubectl get nodes
你应该看到一个 control-plane 节点,状态为 Ready。
第三步:准备一个要部署的应用
我们不用自己写代码,直接用官方提供的 Nginx 示例应用(一个简单的 Web 服务器)。
K8s 中部署应用的基本单位是 Pod ,但我们通常通过 Deployment 来管理 Pod(支持自动重启、扩缩容等)。
创建一个 YAML 文件:nginx-deployment.yaml
用任意文本编辑器(如 VS Code、记事本)新建文件,内容如下:
yaml
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080 # 外部可通过 http://localhost:30080 访问
说明:
Deployment:声明我们要运行 2 个 Nginx 容器(副本数=2)Service:把内部的 80 端口暴露到主机的30080端口(NodePort 类型)nodePort: 30080:方便我们在浏览器访问
保存文件到桌面或某个目录,比如 ~/k8s-demo/nginx-deployment.yaml
第四步:部署应用到 K8s
在终端进入该文件所在目录,执行:
bash
kubectl apply -f nginx-deployment.yaml
你会看到:
deployment.apps/nginx-deployment created
service/nginx-service created
部署成功
第五步:查看应用是否运行
检查 Pod 是否就绪:
bash
kubectl get pods
输出类似:
NAME READY STATUS RESTARTS AGE
nginx-deployment-7b8c9d4f5c-abc12 1/1 Running 0 30s
nginx-deployment-7b8c9d4f5c-def34 1/1 Running 0 30s
检查 Service:
bash
kubectl get service
你应该看到 nginx-service 的 PORT(S) 列包含 30080:30080/TCP
第六步:在浏览器访问你的应用
打开浏览器,访问:
你会看到熟悉的 Welcome to nginx! 页面!
到此第一个应用成功的部署到了 Kubernetes
清理资源
实验结束后,可以删除应用:
bash
kubectl delete -f nginx-deployment.yaml
或者删除整个集群(释放资源):
bash
kind delete cluster --name my-first-cluster
总结
| 概念 | 作用 |
|---|---|
Kind |
在本地用 Docker 快速启动 K8s 集群 |
Deployment |
声明式地管理应用副本(Pod) |
Service |
为 Pod 提供稳定网络访问入口 |
NodePort |
把服务暴露到主机端口,方便测试 |