Kubernetes 集群部署应用

部署 Nginx 应用

命令行的方式

1. 创建 deployment 控制器的 pod 

# --image=nginx:这个会从 docker.io 中拉取,这个网站拉不下来
# kubectl create deployment mynginx --image=nginx# 使用国内镜像源拉取
kubectl create deployment mynginx --image=docker.m.daocloud.io/nginx

命令说明:

  • kubectl:Kubernetes 的命令行工具,用于和集群交互。
  • create:动作:创建资源。
  • deployment:创建的资源类型是 deployment 控制器类型
  • mynginx:自定义的 Deployment 名字
  • --image=nginx:1.28.0:指定 Deployment 中使用的容器镜像为 nginx(默认从 Docker Hub 拉取)。1.28.0 是指定nginx的版本号,如果不写版本号,默认使用的是 latest 标签

查看创建的 deployment

kubectl get deployment

查看创建的 pod

kubectl get pods

2. 对外暴露端口

kubectl expose deployment mynginx --type=NodePort --port=80

命令说明:

  • expose:暴露一个已有的资源(如 Pod、Deployment、ReplicaSet 等)为一个 Service
  • deployment mynginx:指定要暴露的资源是名为 mynginx 的 Deployment。
  • --type=NodePort:指定创建的 Service 类型是 NodePort,这表示可以通过集群中任意一个节点的 IP 和映射端口(30000~32767)访问服务。
  • --port=80:指定 Service 对外暴露的端口是容器的 80 端口。(现在还在容器内)

查看暴露的服务端口

kubectl get svc

 

删除服务的命令

kubectl delete svc mynginx

3. 外部浏览器访问服务

随机端口

浏览器访问:http://ip:31353           // 31353 是 kubectl get svc 命令查出来的 PORT 值


固定端口,转发

kubectl port-forward --address 0.0.0.0 svc/mynginx 80:80

命令说明:

  • port-forward:表示要启用端口转发(port forwarding)。这个功能可以将你本地的一个端口流量转发到 Kubernetes 内部资源(Pod 或 Service)。
  • --address 0.0.0.0:默认情况下,端口转发只监听 127.0.0.1(本机回环地址),这个参数让它监听所有 IP 地址(即:可以通过其他设备访问你的主机)。例如在局域网内用其他电脑访问这台机器的 80 端口。
  • svc/mynginx:表示要转发目标是名为 mynginx 的 Service。你也可以用 pod/<pod-name> 来转发到 Pod。
  • 80:80:表示将本地的 80 端口 转发到 Service 的 80 端口,格式是:本地端口:目标端口。

异常处理

kubectl get pods 查询 STATUS 不是成功的状态。

使用如下命令查看异常信息:

# kubectl describe pod <pod名称>
kubectl describe pod mynginx-xxxxxx-xxx

命令说明:

  • describe:显示资源的详细信息(比 get 更详细)。
  • pod:说明你要查看的资源类型是 Pod。
  • mynginx-xxxxxx-xxx:这是某个 Pod 的全名,由 Deployment 控制器自动生成,格式通常是:<Deployment名>-<随机哈希>。你可以用 kubectl get pods 查到真实名称。

修改完异常后,可以删除 deployment 再重新创建

kubectl delete deployment mynginx && kubectl create deployment mynginx --image=nginx

yaml 脚本文件的方式

创建一个名为 my-nginx.yaml 的文件,内容如下:

## 表示这个资源的 API 版本,apps/v1 是 Deployment 当前稳定的版本
apiVersion: apps/v1
## 表示这是一个 "Deployment" 类型的资源对象,用于声明一个应用如何部署和管理
kind: Deployment## 元数据,name 是这个 Deployment 的名字,kubectl 管理时用到,比如 kubectl get deployment mynginx
metadata:name: mynginx## spec 是核心的配置部分。
spec:## replicas: 2 表示所有节点运行应用的副本(Pod)数量是 2 个,用于高并发replicas: 2## selector 选择器,表示这个 Deployment 会管理具有标签 app=nginx 的 Pod#  这个选择器必须和下面 template.metadata.labels 一致,才能绑定在一起selector:matchLabels:app: nginx## template 是 Pod 的模板,Deployment 根据它创建实际运行的 Podtemplate:metadata:## labels 是给 Pod 添加的标签,供上面 selector 匹配使用labels:app: nginxspec:## 是一个容器数组,可以运行多个容器containers:## 自定义容器名字- name: nginx## 使用的镜像名,nginx 是 Docker Hub 上的官方镜像。这里使用 国内镜像源的 nginximage: docker.m.daocloud.io/nginxports:## 表示容器内部监听 80 端口- containerPort: 80## 配置 pod 使用的资源resources:## 表示容器启动和运行需要的最少资源requests:## 表示容器至少需要 250 毫核 CPU(即 0.25 个 CPU)。单位:m:毫核1000m = 1 核。core 或 空值:核cpu: "250m"## 表示容器至少需要 512MB 内存。单位:B:字节,Ki:千字节,Mi:兆字节,Gi:吉字节,M:十进制单位(用于文件系统)。1M:1,000,000 字节,G:十进制单位(用于文件系统)。1G:1,000,000,000 字节memory: "512Mi"  # 请求 512 MB 内存## 表示容器启动和运行使用的最大资源。避免资源被单个容器占用过多,影响其他容器limits:## 表示容器最多使用 500 毫核 CPU(即 0.5 个 CPU)。单位:m:毫核1000m = 1 核。core 或 空值:核cpu: "500m"## 表示容器最多使用 1GB 内存。单位:B:字节,Ki:千字节,Mi:兆字节,Gi:吉字节,M:十进制单位(用于文件系统)。1M:1,000,000 字节,G:十进制单位(用于文件系统)。1G:1,000,000,000 字节memory: "1Gi"## --- 是 YAML 文件中的分隔符,多资源之间必须存在分隔符
---
## 这是一个 Service 类型的资源,名字叫 my-nginx-service,用于暴露 Pod。
apiVersion: v1
kind: Service
metadata:name: my-nginx-service
spec:## selector 表示这个 Service 会选中所有有标签 app=nginx 的 Pod,并转发请求给它们。selector:app: nginxports:## 表示客户端访问 Service 使用的端口(集群内部访问用)- port: 80## 表示转发到 Pod 的容器监听的端口(即 containerPort)targetPort: 80## 表示集群外访问使用的端口(绑定在每个 Node 的 30080 端口上)nodePort: 30080## Service 类型。NodePort 允许从集群外访问服务,通过 <任意NodeIP>:30080。type: NodePort

然后执行

kubectl apply -f my-nginx.yaml

验证

kubectl get pods,svc

外部访问

http://<NodeIP>:30080

删除 yaml 文件中定义的所有资源

kubectl delete -f my-nginx.yaml

生成默认的 .yaml 文件

生成 Deployment 的默认 YAML 文件

kubectl create deployment mynginx --image=nginx --dry-run=client -o yaml > mynginx-deployment.yaml

参数说明:

  • mynginx:自定义的 deployment 名称
  • --dry-run=client:表示不实际创建资源,而是只生成 YAML 配置文件
  • -o yaml:用于指定输出格式为 YAML
  • > mynginx-deployment.yaml:将输出内容保存到 mynginx-deployment.yaml 文件中

生成 Service 的默认 YAML 文件

kubectl expose deployment mynginx --port=80 --target-port=80 --type=NodePort --dry-run=client -o yaml > mynginx-service.yaml

生成 Pod 的默认 YAML 文件

kubectl run mypod --image=nginx --dry-run=client -o yaml > mypod.yaml

生成 ConfigMap 的默认 YAML 文件

kubectl create configmap myconfig --from-literal=key=value --dry-run=client -o yaml > myconfigmap.yaml

生成 Secret 的默认 YAML 文件

kubectl create secret generic mysecret --from-literal=password=secret --dry-run=client -o yaml > mysecret.yaml

部署 SpringBoot 应用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/80397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用依赖注入来实现依赖倒置原则?

依赖注入(Dependency Injection, DI)是实现依赖倒置原则(DIP)的具体技术手段,它通过将依赖对象的创建和管理交给外部容器,从而实现高层模块与低层模块的解耦。下面从原理、实现方式、框架应用及最佳实践四个方面详细解析: 一、依赖倒置原则(DIP)的核心思想 高层模块不…

python使用AES进行加密和解密

如果需要加密和解密功能,可以使用AES算法。以下是使用Python实现AES加密和解密的示例: from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad from Crypto.Random import get_random_bytesdef aes_encrypt(data,

SaaS场快订首页的前端搭建【持续更新】

文章目录 一、创建页面二、配置路由三、写接口文件&#xff08;api&#xff09;1.定位的接口函数&#xff08;腾讯地图api&#xff09;实现代码&#xff1a; 2.获取场馆分类的数据3.获取附近场馆列表的数据 四、开发首页页面1.顶部区域2.搜索框3.场馆分类4.附近场馆列表 五、难…

深入解析 MQTT 协议:物联网通信的基石

在当今物联网蓬勃发展的时代&#xff0c;设备之间高效、可靠的通信变得至关重要。MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;协议&#xff0c;作为一种轻量级的消息传输协议&#xff0c;正逐渐成为物联网通信的基石&#xff0c;广泛应用于各种场景中。 …

在Python中计算函数耗时并超时自动退出

更多内容请见: python3案例和总结-专栏介绍和目录 文章目录 方法1:使用装饰器结合信号模块(仅Unix-like系统)方法2:使用多线程(跨平台解决方案)方法3:使用concurrent.futures(Python 3.2+)方法4:使用 multiprocessing + Process(跨平台)​方法5:使用 time 手动计…

理解c++中explicit关键字的作用

理解c中explicit关键字的作用 explicit 关键字的作用是防止构造函数被隐式调用&#xff0c;从而避免意外的类型转换 #include <iostream> class Vec3 { public://构造函数没有被explicit修饰Vec3(float value): x(value), y(value), z(value){}Vec3(float val1, float …

不止是UI库:React如何重塑前端开发范式?

React&#xff1a;引领现代前端开发的声明式UI库 在当今快速发展的前端世界&#xff0c;React以其声明式、组件化和高效的特性&#xff0c;稳坐头把交椅&#xff0c;成为构建交互式用户界面的首选JavaScript库。本文将带你快速了解React的核心魅力、主要优势以及生态发展&…

理解 Token 索引 vs 字符位置

以下是对“理解 Token 索引与字符位置的区别”的内容整理&#xff0c;条理清晰&#xff0c;结构完整&#xff0c;保持技术细节&#xff0c;方便阅读&#xff0c;无多余解释&#xff1a; &#x1f50d; 理解 Token 索引 vs 字符位置 文本分块方法中返回的索引是 token 索引&…

《异常链机制详解:如何优雅地传递Java中的错误信息?》

大家好呀&#xff01;&#x1f44b; 作为一名Java开发者&#xff0c;相信你一定见过各种奇奇怪怪的异常报错。但有没有遇到过这样的情况&#xff1a;明明只调用了一个方法&#xff0c;却看到异常信息像俄罗斯套娃一样一层层展开&#xff1f;&#x1f914; 这就是我们今天要讲的…

vector 常见用法及模拟

文章目录 1. vector的介绍与使用1.1 vector的构造1.2 vector iterator 的使用1.3 有关大小和容量的操作1.4 vector 增删查改1.5 vector 迭代器失效问题&#xff08;重点&#xff09;1.6 vector 中二维数组的使用 2. vector 的模拟实现2.1 拷贝构造和赋值重载的现代写法2.2 memc…

数据结构与算法分析实验11 实现顺序查找表

实现顺序查找表 1.上机名称2.上机要求3.上机环境4.程序清单(写明运行结果及结果分析)4.1 程序清单4.1.1 头文件4.1.2 实现文件4.1.3 源文件 4.2 实现展效果示 上机体会 1.上机名称 实现顺序查找表 顺序查找表的基本概念 顺序查找表是一种线性数据结构&#xff0c;通常用于存储…

实践官方的 A2A SDK Python

内容列表 • 注意• 我的环境• A2A SDK Python 注意 这只是一个原型&#xff0c;并且在快速的变化&#xff0c;本篇教程也随时可能过期&#xff0c;可以在A2AProtocol blog最终更新的文章。 我的环境 • Python 3.13• uv: uv 0.7.2 (Homebrew 2025-04-30)• Warp• Olla…

langchain 接入国内搜索api——百度AI搜索

为什么使用百度AI搜索 学习langchain的过程中&#xff0c;遇到使用search api的时候&#xff0c;发现langchain官方文档中支持的搜索工具大多是国外的&#xff0c;例如google search或bing search&#xff0c;收费不说&#xff0c;很多还连接不上&#xff08;工具 | LangChain…

[强化学习的数学原理—赵世钰老师]学习笔记01-基本概念

[强化学习的数学原理—赵世钰老师]学习笔记01-基本概念 1.1 网格世界的例子1.2 状态和动作1.3 状态转移1.4 策略1.5 奖励1.6 轨迹、回报、回合1.6.1 轨迹和回报1.6.2 回合 1.7 马尔可夫决策过程 本人为强化学习小白&#xff0c;为了在后续科研的过程中能够较好的结合强化学习来…

Java开发经验——阿里巴巴编码规范经验总结2

摘要 这篇文章是关于Java开发中阿里巴巴编码规范的经验总结。它强调了避免使用Apache BeanUtils进行属性复制&#xff0c;因为它效率低下且类型转换不安全。推荐使用Spring BeanUtils、Hutool BeanUtil、MapStruct或手动赋值等替代方案。文章还指出不应在视图模板中加入复杂逻…

Java大师成长计划之第18天:Java Memory Model与Volatile关键字

&#x1f4e2; 友情提示&#xff1a; 本文由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;平台gpt-4o-mini模型辅助创作完成&#xff0c;旨在提供灵感参考与技术分享&#xff0c;文中关键数据、代码与结论建议通过官方渠道验证。 在Java多线程编程中&#xff0c;线程…

js前端分片传输大文件+mongoose后端解析

最近一直在完善mongoose做webserver的项目&#xff0c;其中程序升级要通过前端传输升级包到服务器。 因为第一次写前端代码&#xff0c;分片传输的逻辑&#xff0c;网上一堆&#xff0c;大同小异&#xff0c;而且版本啊&#xff0c;API不一致的问题&#xff0c;导致头疼的很。后…

MiniMind:3块钱成本 + 2小时!训练自己的0.02B的大模型。minimind源码解读、MOE架构

大家好&#xff0c;我是此林。 目录 1. 前言 2. minimind模型源码解读 1. MiniMind Config部分 1.1. 基础参数 1.2. MOE配置 2. MiniMind Model 部分 2.1. MiniMindForCausalLM: 用于语言建模任务 2.2. 主干模型 MiniMindModel 2.3. MiniMindBlock: 模型的基本构建块…

引言:Client Hello 为何是 HTTPS 安全的核心?

当用户在浏览器中输入 https:// 时&#xff0c;看似简单的操作背后&#xff0c;隐藏着一场加密通信的“暗战”。Client Hello 作为 TLS 握手的首个消息&#xff0c;不仅决定了后续通信的加密强度&#xff0c;还可能成为攻击者的突破口。据统计&#xff0c;超过 35% 的网站因 TL…

Dockerfile 完全指南:从入门到最佳实践

Dockerfile 完全指南&#xff1a;从入门到最佳实践 1. Dockerfile 简介与作用 Dockerfile 是一个文本文件&#xff0c;包含了一系列用于构建 Docker 镜像的指令。它允许开发者通过简单的指令定义镜像的构建过程&#xff0c;实现自动化、可重复的镜像构建。 主要作用&#xf…