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.pswp.cn/pingmian/80397.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80397.shtml
英文地址,請注明出處:http://en.pswp.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…