HelloCoder HelloCoder
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
  • 《可观测和监控》
  • 《k8s学习心得》
随笔
关于作者
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
  • 《可观测和监控》
  • 《k8s学习心得》
随笔
关于作者
  • 《从0到1学习Java多线程》

  • 《从0到1搭建服务器》

  • 可观测和监控

  • 玩转IDEA

  • 03-RPC

  • 04-Spring源码

  • 05-《Java日志框架》

  • Flyme公有云平台建设
  • k8s

    • (一)线程是什么
    • 常见疑问
    • 运行一个k8s部署的应用
    • 网络组件
    • docker compose和k8s deployment文件
    • dokcer的网卡
    • k8s-master初始化网段
    • Kubernetes API Service
    • k8s的DNS
    • 什么是 Sandbox
    • 如何访问pod
    • 常见命令
  • 专栏
  • k8s
#ks #运行一个 #部署的应用
HaC
2026-06-13
目录

运行一个k8s部署的应用

# 1、编写 Nginx 部署图纸(nginx-demo.yaml)

在你的 Master 虚拟机上,新建一个文件叫 nginx-demo.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment    # 1. 声明控制器的名字
  labels:
    app: my-nginx
spec:
  replicas: 2               # 🌟 重点:我们直接启动 2 个副本,让它自动漂移到 node1 和 node2 上!
  selector:
    matchLabels:
      app: my-nginx         # 告诉 Deployment 必须死死盯着带有这个标签的 Pod
  template:
    metadata:
      labels:
        app: my-nginx       # 给下面吐出来的 Pod 贴上对应的身份证标签
    spec:
      containers:
      - name: nginx
        image: nginx:1.25-alpine # 使用超轻量的 nginx 镜像
        ports:
        - containerPort: 80 # Nginx 容器内部默认监听的端口

---

apiVersion: v1
kind: Service
metadata:
  name: nginx-service       # 2. 声明网络通道的名字
spec:
  type: NodePort            # 🌟 核心:NodePort 模式会强制在每一台虚拟机上开辟一个完全一样的物理端口
  selector:
    app: my-nginx           # 路由靶心:把流量精准转发给上面那些带有 app: my-nginx 标签的 Pod
  ports:
    - protocol: TCP
      port: 80              # Service 内部虚拟端口
      targetPort: 80        # 对应 Nginx 容器的端口
      nodePort: 30080       # 🌟 物理机暴露端口:你可以自己指定(范围必须在 30000-32767 之间)

为了让你看得最明白,我们只写两个最简单的积木组件:

  1. Deployment:让 K8s 把 Nginx 的 Pod 在你的虚拟机集群里跑起来。
  2. Service:开辟一条物理通道(NodePort),让你在笔记本电脑的浏览器里能直接打开这个 Nginx 网页。

# 2、第二步:执行部署与硬核状态观测

# 1. 砸向集群,开始创建(Apply)

在 Master 节点执行:

kubectl apply -f nginx-demo.yaml

📺 预期输出:

deployment.apps/nginx-deployment created
service/nginx-service created

否则看看日志:

kubectl describe pod nginx-deployment-7879d9d897-lhdr5

# 2. 查看副本是如何被“调度”到不同机器的(Get Pods)

此前我们配置了 replicas: 2 吗?执行以下命令:

kubectl get pods -o wide

📺 运行效果预览:

[root@yudianxx ~]# kubectl get pods -o wide
NAME                                READY   STATUS    RESTARTS   AGE    IP           NODE        NOMINATED NODE   READINESS GATES
nginx-deployment-775f57cb68-p6cql   1/1     Running   0          127m   10.244.1.3   k8s-node1   <none>           <none>
nginx-deployment-775f57cb68-zgq9b   1/1     Running   0          127m   10.244.2.3   k8s-node2   <none>           <none>

这两个 Nginx Pod 状态字段说明:

  1. READY 1/1:说明 Sandbox 和 Nginx 业务容器全部成功拉起,并且通过了 K8s 的基础健康检查。
  2. STATUS Running:说明容器运行极其稳定,没有任何频繁报错或闪退(Crashes)。
  3. RESTARTS 0:这长达 127 分钟的时间里,一次重启都没有发生过,稳如磐石。
  4. IP (10.244.x.x):最核心的是,它们在 node1 和 node2 上分别拿到了 10.244.1.3 和 10.244.2.3 两个极其规范的标准集群内网 IP。
阅读全文
×

(为防止恶意爬虫)
扫码或搜索:HelloCoder
发送:290992
即可永久解锁本站全部文章

解锁
#ks#运行一个#部署的应用
上次更新: 2026-06-13 17:29:54
最近更新
01
(一)线程是什么
06-14
02
MySQL支持的锁有哪些
06-13
03
HTTP 是不保存状态的协议, 如何保存用户状态
06-13
更多文章>
Theme by Vdoing | Copyright © 2020-2026 HaC
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式