部署你的第一个应用到 K8s

概述

怎样用简单的方式,在自己的电脑上,部署一个真实的 Web 应用到 Kubernetes 集群中

准备工作:

  1. 一台电脑(Windows / macOS / Linux 都可以)
  2. Docker 已安装 (如果还没装,请先安装 Docker Desktop
  3. 网络通畅(需要下载镜像)

说明:本文使用 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-servicePORT(S) 列包含 30080:30080/TCP

第六步:在浏览器访问你的应用

打开浏览器,访问:

👉 http://localhost:30080

你会看到熟悉的 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 把服务暴露到主机端口,方便测试
相关推荐
故乡de云2 小时前
2026年谷歌云价格走势深度分析:企业如何在高成本时代保持竞争力?
运维·kubernetes·云计算
舰长1152 小时前
使用 kubeadm搭建生产环境的单 master 节点 K8S 集群(一)
云原生·容器·kubernetes
lynnlovemin3 小时前
云原生提速秘籍:Spring Boot转Spring Native实战指南
spring boot·spring·云原生·spring native
hwj运维之路3 小时前
Docker面试题汇总系列
运维·docker·云原生·容器
Gold Steps.4 小时前
Longhorn分布式云原生块存储系统
分布式·云原生
nbsaas-boot4 小时前
架构设计怎么做:一套可复用、可落地的方法论
java·开发语言·微服务
hwj运维之路4 小时前
超详细ubuntu22.04部署k8s1.28高可用(一)【多master+keepalived+nginx实现负载均衡】
运维·云原生·kubernetes·负载均衡
张小凡vip5 小时前
Kubernetes---gitlab的ci/cd发布基于k8s的项目示例参考
ci/cd·kubernetes·gitlab
VermiliEiz5 小时前
使用二进制方式部署k8s(6)
云原生·容器·kubernetes