[{"data":1,"prerenderedAt":875},["ShallowReactive",2],{"navigation_docs":3,"-web-dev-infrastructure-k3s-zeabur":352,"-web-dev-infrastructure-k3s-zeabur-surround":870},[4,54,83,116,125,161,179,200],{"title":5,"path":6,"stem":7,"children":8},"Ai","/ai","ai",[9,12,42,46,50],{"title":10,"path":6,"stem":11},"AI 技術探索","ai/index",{"title":13,"path":14,"stem":15,"children":16,"page":41},"Rag","/ai/rag","ai/RAG",[17,21,25,29,33,37],{"title":18,"path":19,"stem":20},"BM25 演算法深入解析：從 TF-IDF 到現代搜尋引擎的核心技術","/ai/rag/bm25-deep-dive-from-tf-idf-to-rag","ai/RAG/bm25-deep-dive-from-tf-idf-to-rag",{"title":22,"path":23,"stem":24},"Dense Retrieval（向量檢索）深入解析","/ai/rag/dense-retrieval-deep-dive","ai/RAG/dense-retrieval-deep-dive",{"title":26,"path":27,"stem":28},"RAG（Retrieval-Augmented Generation）原理與實作入門","/ai/rag/rag-intro-principles-and-implementation","ai/RAG/rag-intro-principles-and-implementation",{"title":30,"path":31,"stem":32},"RAG Retrieval Strategy 深入解析","/ai/rag/rag-retrieval-strategy-deep-dive","ai/RAG/rag-retrieval-strategy-deep-dive",{"title":34,"path":35,"stem":36},"Reciprocal Rank Fusion（RRF）教學：打造更穩定的檢索融合策略","/ai/rag/rrf-reciprocal-rank-fusion-guide","ai/RAG/rrf-reciprocal-rank-fusion-guide",{"title":38,"path":39,"stem":40},"TF-IDF（Term Frequency–Inverse Document Frequency）深入解析","/ai/rag/tf-idf-deep-dive","ai/RAG/tf-idf-deep-dive",false,{"title":43,"path":44,"stem":45},"Docus AI 功能完整實作指南","/ai/docus-ai-implementation","ai/docus-ai-implementation",{"title":47,"path":48,"stem":49},"llms.txt 是什麼？在 Nuxt 中控制 AI 與搜尋引擎爬蟲的新方式","/ai/llms-txt","ai/llms-txt",{"title":51,"path":52,"stem":53},"MCP（Model Context Protocol）是什麼？用「AI 的 USB-C」理解模型如何安全連接工具與資料","/ai/mcp_concept","ai/mcp_concept",{"title":55,"path":56,"stem":57,"children":58,"page":41},"Data Analysis","/data-analysis","data-analysis",[59,63,67,71,75,79],{"title":60,"path":61,"stem":62},"Exploratory Data Analysis（EDA）資料探索分析入門","/data-analysis/exploratory-data-analysis-eda","data-analysis/exploratory-data-analysis-eda",{"title":64,"path":65,"stem":66},"PR-AUC 深入解析：不平衡分類問題的重要評估指標","/data-analysis/pr-auc-for-imbalanced-classification","data-analysis/pr-auc-for-imbalanced-classification",{"title":68,"path":69,"stem":70},"ROC-AUC 深入解析：理解分類模型的判斷能力","/data-analysis/roc-auc-complete-guide","data-analysis/roc-auc-complete-guide",{"title":72,"path":73,"stem":74},"SHAP（SHapley Additive exPlanations）模型解釋方法深入解析","/data-analysis/shap-model-interpretation-complete-guide","data-analysis/shap-model-interpretation-complete-guide",{"title":76,"path":77,"stem":78},"Social Network Analysis（SNA）深入解析","/data-analysis/social-network-analysis-sna","data-analysis/social-network-analysis-sna",{"title":80,"path":81,"stem":82},"Time-based Split：為什麼時間序列資料不能使用 Random Split？","/data-analysis/time-based-split-vs-random-split","data-analysis/time-based-split-vs-random-split",{"title":84,"path":85,"stem":86,"children":87,"page":41},"MachineLearning","/machine_learning","machine_learning",[88,92,96,100,104,108,112],{"title":89,"path":90,"stem":91},"Confusion Matrix（混淆矩陣）完整解析","/machine_learning/confusion-matrix","machine_learning/confusion-matrix",{"title":93,"path":94,"stem":95},"Decision Tree 模型完整教學：從原理到 Python 實作","/machine_learning/decision-tree-complete-guide","machine_learning/decision-tree-complete-guide",{"title":97,"path":98,"stem":99},"為什麼 Decision Tree 在 Tabular Data 上常常勝過 Deep Learning？","/machine_learning/decision-tree-vs-deep-learning-on-tabular-data","machine_learning/decision-tree-vs-deep-learning-on-tabular-data",{"title":101,"path":102,"stem":103},"LightGBM 模型入門：理解高效能的 Gradient Boosting 演算法","/machine_learning/lightgbm-intro-for-tabular-data","machine_learning/lightgbm-intro-for-tabular-data",{"title":105,"path":106,"stem":107},"Logistic Regression（Logit 回歸）完整教學","/machine_learning/logistic-regression-complete-guide","machine_learning/logistic-regression-complete-guide",{"title":109,"path":110,"stem":111},"為什麼模型訓練需要 Train / Validation / Test Dataset？","/machine_learning/train-validation-test-dataset","machine_learning/train-validation-test-dataset",{"title":113,"path":114,"stem":115},"XGBoost 原理與實務教學","/machine_learning/xgboost-complete-guide","machine_learning/xgboost-complete-guide",{"title":117,"path":118,"stem":119,"children":120,"page":41},"Network","/network","network",[121],{"title":122,"path":123,"stem":124},"DNS 設定入門：CNAME vs A Record 完整解析","/network/dns-cname-vs-a-record-guide","network/dns-cname-vs-a-record-guide",{"title":126,"path":127,"stem":128,"children":129},"Nuxt","/nuxt","nuxt",[130,133,137,141,145,149,153,157],{"title":131,"path":127,"stem":132},"Nuxt 實戰指南","nuxt/index",{"title":134,"path":135,"stem":136},"Abstraction Layer 與 Adapter 的差別，一次搞懂設計角色","/nuxt/adapter_abstraction_layer","nuxt/adapter_abstraction_layer",{"title":138,"path":139,"stem":140},"Nuxt 4 全面理解 — 專案檔案結構解析","/nuxt/directory_structure","nuxt/directory_structure",{"title":142,"path":143,"stem":144},"Nuxt 前端 build 流程完整解析","/nuxt/frontend_build","nuxt/frontend_build",{"title":146,"path":147,"stem":148},"Nitro 是什麼？從 Nuxt 專案到 Server 與 Edge 的關鍵引擎","/nuxt/nitro","nuxt/nitro",{"title":150,"path":151,"stem":152},"深入理解 Nuxt 的 .nuxt 與 .output：為什麼部署時一定要分清楚？","/nuxt/nuxt_and_output","nuxt/nuxt_and_output",{"title":154,"path":155,"stem":156},"Nuxt 中 dev、build、preview 的差異一次搞懂","/nuxt/nuxt_dev_build_preview","nuxt/nuxt_dev_build_preview",{"title":158,"path":159,"stem":160},"Nuxt Image vs \u003Cimg>：為什麼 Nuxt 3 專案幾乎都該用 \u003CNuxtImg>？","/nuxt/nuxt_image","nuxt/nuxt_image",{"title":162,"path":163,"stem":164,"children":165},"Python 程式開發","/python","python/index",[166,167,171,175],{"title":162,"path":163,"stem":164},{"title":168,"path":169,"stem":170},"如何在 FastAPI 中調用記憶體 Buffer 回傳圖片 (附實例)","/python/memory_buffer","python/memory_buffer",{"title":172,"path":173,"stem":174},"Python 單元測試教學：如何為你的程式撰寫 Test","/python/python-unit-testing-unittest-pytest","python/python-unit-testing-unittest-pytest",{"title":176,"path":177,"stem":178},"如何使用 uv 取代 pip：改善 Python 專案的開發流程","/python/uv","python/uv",{"title":180,"path":181,"stem":182,"children":183,"page":41},"Statistic","/statistic","statistic",[184,188,192,196],{"title":185,"path":186,"stem":187},"卡方檢定（Chi-Square Test）入門教學","/statistic/chi-square-test-intro","statistic/chi-square-test-intro",{"title":189,"path":190,"stem":191},"常見抽樣方法（Sampling Methods）教學：Stratified、Quota、Convenience、Systematic、Simple Random","/statistic/common-sampling-methods-guide","statistic/common-sampling-methods-guide",{"title":193,"path":194,"stem":195},"Cramér’s V 指標介紹：如何衡量兩個類別變數之間的關聯","/statistic/cramers-v-for-categorical-association","statistic/cramers-v-for-categorical-association",{"title":197,"path":198,"stem":199},"Mann–Whitney U 與 Kolmogorov–Smirnov（KS）檢定：非參數統計檢定的入門指南","/statistic/mann-whitney-u-and-ks-test-intro","statistic/mann-whitney-u-and-ks-test-intro",{"title":201,"path":202,"stem":203,"children":204},"WebDev","/web_dev","web_dev",[205,208,234,248,282,312,334],{"title":206,"path":202,"stem":207},"Web 前端開發","web_dev/index",{"title":209,"path":210,"stem":211,"children":212},"瀏覽器與渲染","/web_dev/browser","web_dev/browser/index",[213,214,218,222,226,230],{"title":209,"path":210,"stem":211},{"title":215,"path":216,"stem":217},"瀏覽器儲存空間完整解析：Cookie、localStorage、IndexedDB 到 Cache Storage","/web_dev/browser/browser-storage-comprehensive-guide","web_dev/browser/browser-storage-comprehensive-guide",{"title":219,"path":220,"stem":221},"DOM (Document Object Model) 深入解析","/web_dev/browser/dom","web_dev/browser/dom",{"title":223,"path":224,"stem":225},"Service Worker Request Flow 深入解析","/web_dev/browser/service-worker-request-flow","web_dev/browser/service-worker-request-flow",{"title":227,"path":228,"stem":229},"CSR、SSR 與 SSG 是什麼？前端渲染策略完整比較","/web_dev/browser/ssr_csr_ssg","web_dev/browser/ssr_csr_ssg",{"title":231,"path":232,"stem":233},"Virtual DOM 深入解析：為什麼它能優化前端效能？","/web_dev/browser/virtual_dom","web_dev/browser/virtual_dom",{"title":235,"path":236,"stem":237,"children":238},"圖形技術","/web_dev/graphics","web_dev/graphics/index",[239,240,244],{"title":235,"path":236,"stem":237},{"title":241,"path":242,"stem":243},"為什麼 Three.js 專案幾乎都選擇 CSR？從 SSR 問題談起","/web_dev/graphics/threejs_csr","web_dev/graphics/threejs_csr",{"title":245,"path":246,"stem":247},"WebGL 是什麼？為什麼前端 3D 幾乎都靠它？","/web_dev/graphics/webgl","web_dev/graphics/webGL",{"title":249,"path":250,"stem":251,"children":252},"架構與配置","/web_dev/infrastructure","web_dev/infrastructure/index",[253,254,258,262,266,270,274,278],{"title":249,"path":250,"stem":251},{"title":255,"path":256,"stem":257},"Zeabur + K3s + Nuxt 部署架構完整解析","/web_dev/infrastructure/k3s-zeabur","web_dev/infrastructure/K3s-zeabur",{"title":259,"path":260,"stem":261},"ECS vs Docker vs Kubernetes：從部署堆疊理解三層架構","/web_dev/infrastructure/ecs-docker-kubernetes-stack","web_dev/infrastructure/ecs-docker-kubernetes-stack",{"title":263,"path":264,"stem":265},"ECS vs VPS 是什麼？從部署網站的角度一次搞懂差別","/web_dev/infrastructure/ecs-vs-vps","web_dev/infrastructure/ecs-vs-vps",{"title":267,"path":268,"stem":269},"Zeabur 內網服務連線完整入門指南","/web_dev/infrastructure/k3s-internal-networking","web_dev/infrastructure/k3s-internal-networking",{"title":271,"path":272,"stem":273},"使用 Microservices 架構設計系統的優勢解析","/web_dev/infrastructure/microservices-architecture-advantages","web_dev/infrastructure/microservices-architecture-advantages",{"title":275,"path":276,"stem":277},"Nginx 入門教學：從反向代理到與 Kubernetes 的架構比較","/web_dev/infrastructure/nginx-intro","web_dev/infrastructure/nginx-intro",{"title":279,"path":280,"stem":281},"YAML 配置是什麼？為什麼現代開發都在用它","/web_dev/infrastructure/yaml-configuration","web_dev/infrastructure/yaml-configuration",{"title":283,"path":284,"stem":285,"children":286},"網絡與通訊","/web_dev/network","web_dev/network/index",[287,288,292,296,300,304,308],{"title":283,"path":284,"stem":285},{"title":289,"path":290,"stem":291},"HTTP Request 結構完整解析：從 Request Line 到 Header 一次看懂","/web_dev/network/http-request-structure","web_dev/network/http-request-structure",{"title":293,"path":294,"stem":295},"OSI 模型（Open Systems Interconnection Model）完整解析","/web_dev/network/osi-model","web_dev/network/osi-model",{"title":297,"path":298,"stem":299},"RESTful API 設計原則與實務解析","/web_dev/network/restful-api","web_dev/network/restful-api",{"title":301,"path":302,"stem":303},"RESTful API 五大設計原則深入解析","/web_dev/network/restful-api-principles","web_dev/network/restful-api-principles",{"title":305,"path":306,"stem":307},"Server-Sent Events (SSE) 深入解析與實作教學","/web_dev/network/sse-introduction","web_dev/network/sse-introduction",{"title":309,"path":310,"stem":311},"WebSocket 入門教學：從概念到 Node.js 實作","/web_dev/network/websocket-introduction","web_dev/network/websocket-introduction",{"title":313,"path":314,"stem":315,"children":316},"認證與安全","/web_dev/security","web_dev/security/index",[317,318,322,326,330],{"title":313,"path":314,"stem":315},{"title":319,"path":320,"stem":321},"使用 Cookie 與 Session 建立使用者驗證（完整新手教學）","/web_dev/security/cookie-session-authentication","web_dev/security/cookie-session-authentication",{"title":323,"path":324,"stem":325},"JWT 驗證機制完整解析：從登入流程到實務應用","/web_dev/security/jwt-authentication","web_dev/security/jwt-authentication",{"title":327,"path":328,"stem":329},"Secret Key 簽名是什麼？從零理解資料簽名的本質","/web_dev/security/secret-key-signing","web_dev/security/secret-key-signing",{"title":331,"path":332,"stem":333},"SSH（Secure Shell）是什麼？從遠端登入到安全通道的核心概念","/web_dev/security/ssh","web_dev/security/ssh",{"title":335,"path":336,"stem":337,"children":338},"SEO 與規範","/web_dev/seo","web_dev/seo/index",[339,340,344,348],{"title":335,"path":336,"stem":337},{"title":341,"path":342,"stem":343},"Canonical URL 是什麼？用生活化方式搞懂前端 SEO 的基本保命符","/web_dev/seo/canonical_link","web_dev/seo/canonical_link",{"title":345,"path":346,"stem":347},"robots.txt 是什麼？SEO 的第一道守門員","/web_dev/seo/robot_txt","web_dev/seo/robot_txt",{"title":349,"path":350,"stem":351},"Nuxt SEO 中的 Meta 與 SEO 工具是如何運作的？","/web_dev/seo/seo","web_dev/seo/seo",{"id":353,"title":255,"body":354,"description":855,"extension":856,"links":857,"meta":858,"navigation":867,"path":256,"seo":868,"stem":257,"__hash__":869},"docs/web_dev/infrastructure/K3s-zeabur.md",{"type":355,"value":356,"toc":848},"minimark",[357,361,364,367,371,374,385,388,390,393,396,398,403,406,409,415,418,437,440,446,449,451,455,463,466,468,485,488,494,497,499,503,506,512,515,521,524,530,533,535,539,542,545,583,586,600,603,605,609,612,618,621,628,642,645,684,687,689,692,695,701,704,721,723,727,730,736,739,742,756,759,765,768,779,782,784,788,791,797,800,808,811,813,816,819,824,827,833,836,838,841,844],[358,359,360],"p",{},"在現代雲端部署環境中，很多平台已經替我們把底層架構封裝得相當完善。當你在平台上按下「部署」按鈕時，背後其實發生了非常多層的協作運作。",[358,362,363],{},"這篇文章會帶你從「使用者在瀏覽器輸入網址」開始，一路走到真正執行 Nuxt Server 的那一層，幫你完整打通 Zeabur + K3s + Nuxt 的部署模型。",[365,366],"hr",{},[368,369,370],"h1",{"id":370},"整體部署架構總覽",[358,372,373],{},"下面這張圖，是 Zeabur 實際運作架構的簡化版示意圖：",[375,376,381],"pre",{"className":377,"code":379,"language":380},[378],"language-text","            Internet User\n                    │\n                    │ HTTPS Request\n                    ▼\n    ┌──────────────────────────┐\n    │      Zeabur Gateway      │\n    │ (Load Balancer / Ingress)│\n    └─────────────┬────────────┘\n                  │\n                  │ Internal Routing\n                  ▼\n        ┌──────────────────┐\n        │   K3s Cluster    │\n        │ (Lightweight K8s)│\n        └────────┬─────────┘\n                 │\n                 ▼\n    ┌──────────────────────────┐\n    │        Pod (Service)     │\n    │  service-xxxxx           │\n    └────────┬─────────────────┘\n             │\n             ▼\n    ┌──────────────────────────┐\n    │      Docker Container    │\n    │──────────────────────────│\n    │  Node.js Runtime         │\n    │                          │\n    │  install dependencies    │\n    │  build project           │\n    │                          │\n    │  node .output/server     │\n    │        /index.mjs        │\n    └──────────┬───────────────┘\n               │\n               ▼\n       Nuxt Nitro Server\n       (Listening 0.0.0.0:PORT)\n","text",[382,383,379],"code",{"__ignoreMap":384},"",[358,386,387],{},"這張圖看似複雜，但只要逐層拆解，你會發現每一層其實各司其職。",[365,389],{},[368,391,392],{"id":392},"分層理解架構設計",[358,394,395],{},"我們從最外層開始往內部拆解。",[365,397],{},[399,400,402],"h2",{"id":401},"layer-1-zeabur-gateway入口層","🌐 Layer 1 — Zeabur Gateway（入口層）",[358,404,405],{},"Zeabur 的最外層，是負責處理所有外部流量的 Gateway。",[358,407,408],{},"它的角色等同於：",[375,410,413],{"className":411,"code":412,"language":380},[378],"\nNginx / Cloud Load Balancer / Ingress Controller\n\n",[382,414,412],{"__ignoreMap":384},[358,416,417],{},"這一層負責：",[419,420,421,425,428,431,434],"ul",{},[422,423,424],"li",{},"處理 HTTPS",[422,426,427],{},"管理網域",[422,429,430],{},"SSL 憑證",[422,432,433],{},"外部流量入口",[422,435,436],{},"將請求轉發到正確的服務",[358,438,439],{},"當使用者在瀏覽器輸入：",[375,441,444],{"className":442,"code":443,"language":380},[378],"\n[https://your-app.zeabur.app](https://your-app.zeabur.app)\n\n",[382,445,443],{"__ignoreMap":384},[358,447,448],{},"外部世界其實只會看到 Gateway，並不知道後面實際跑了幾個容器、幾個 Pod。",[365,450],{},[399,452,454],{"id":453},"layer-2-k3s-cluster","Layer 2 — K3s Cluster",[358,456,457,458,462],{},"很多人以為部署平台背後只是單純的一台 VPS，但實際上 Zeabur 的底層是基於 ",[459,460,461],"strong",{},"K3s","。",[358,464,465],{},"K3s 是 Kubernetes 的輕量版本，專為雲端與資源有限環境設計。",[358,467,417],{},[419,469,470,473,476,479,482],{},[422,471,472],{},"建立與管理 Pod",[422,474,475],{},"自動重啟失敗的服務",[422,477,478],{},"Health Check 檢查",[422,480,481],{},"資源限制（CPU / Memory）",[422,483,484],{},"服務間網路管理",[358,486,487],{},"當你看到錯誤訊息像是：",[375,489,492],{"className":490,"code":491,"language":380},[378],"\nStartup probe failed\nPod unhealthy\n\n",[382,493,491],{"__ignoreMap":384},[358,495,496],{},"其實這不是應用程式在說話，而是 Kubernetes 在進行健康檢查並回報狀態。",[365,498],{},[399,500,502],{"id":501},"layer-3-pod","Layer 3 — Pod",[358,504,505],{},"在 Kubernetes 世界中，有一個很重要的觀念：",[375,507,510],{"className":508,"code":509,"language":380},[378],"\nService ≠ Container\n\n",[382,511,509],{"__ignoreMap":384},[358,513,514],{},"正確的關係是：",[375,516,519],{"className":517,"code":518,"language":380},[378],"\nService\n↓\nPod\n↓\nContainer\n\n",[382,520,518],{"__ignoreMap":384},[358,522,523],{},"Pod 是 Kubernetes 中最小的部署單位。你可以把它理解為：",[525,526,527],"blockquote",{},[358,528,529],{},"一個應用程式的執行實體。",[358,531,532],{},"在平台上建立的一個 Service，本質上會對應到一個 Pod。這個 Pod 裡面通常包含一個主要容器，也可能包含 sidecar 容器。",[365,534],{},[399,536,538],{"id":537},"layer-4-container真正執行環境","Layer 4 — Container（真正執行環境）",[358,540,541],{},"到了這一層，才是你熟悉的 Linux + Node.js 環境。",[358,543,544],{},"這裡通常會執行：",[375,546,550],{"className":547,"code":548,"language":549,"meta":384,"style":384},"language-bash shiki shiki-themes github-dark","install dependencies\nbuild project\nnode .output/server/index.mjs\n","bash",[382,551,552,565,574],{"__ignoreMap":384},[553,554,557,561],"span",{"class":555,"line":556},"line",1,[553,558,560],{"class":559},"svObZ","install",[553,562,564],{"class":563},"sU2Wk"," dependencies\n",[553,566,568,571],{"class":555,"line":567},2,[553,569,570],{"class":559},"build",[553,572,573],{"class":563}," project\n",[553,575,577,580],{"class":555,"line":576},3,[553,578,579],{"class":559},"node",[553,581,582],{"class":563}," .output/server/index.mjs\n",[358,584,585],{},"容器的特性是：",[419,587,588,591,594,597],{},[422,589,590],{},"有自己的檔案系統",[422,592,593],{},"有自己的執行環境",[422,595,596],{},"與 Host 隔離",[422,598,599],{},"透過虛擬網路對外通訊",[358,601,602],{},"這也是為什麼你有時候 SSH 進入主機，卻找不到專案原始碼的原因——因為程式碼存在於容器檔案系統，而不是主機本身。",[365,604],{},[399,606,608],{"id":607},"layer-5-nuxt-nitro-server","Layer 5 — Nuxt Nitro Server",[358,610,611],{},"當你使用 Nuxt 進行建置後：",[375,613,616],{"className":614,"code":615,"language":380},[378],".output/server/index.mjs\n",[382,617,615],{"__ignoreMap":384},[358,619,620],{},"其實產生的是一個 Node HTTP Server。",[358,622,623,624,627],{},"在 ",[459,625,626],{},"Nuxt 3"," 中，這個 server 是由 Nitro runtime 所產生，負責處理：",[419,629,630,633,636,639],{},[422,631,632],{},"SSR 請求",[422,634,635],{},"API routes",[422,637,638],{},"靜態資源回傳",[422,640,641],{},"Middleware",[358,643,644],{},"本質上它會執行類似：",[375,646,650],{"className":647,"code":648,"language":649,"meta":384,"style":384},"language-js shiki shiki-themes github-dark","createServer(...)\n  .listen(PORT)\n","js",[382,651,652,668],{"__ignoreMap":384},[553,653,654,657,661,665],{"class":555,"line":556},[553,655,656],{"class":559},"createServer",[553,658,660],{"class":659},"s95oV","(",[553,662,664],{"class":663},"snl16","...",[553,666,667],{"class":659},")\n",[553,669,670,673,676,678,682],{"class":555,"line":567},[553,671,672],{"class":659},"  .",[553,674,675],{"class":559},"listen",[553,677,660],{"class":659},[553,679,681],{"class":680},"sDLfK","PORT",[553,683,667],{"class":659},[358,685,686],{},"只要這個 Server 正常監聽對外 IP 與 PORT，K3s 就能透過內部網路將流量轉發給它。",[365,688],{},[368,690,691],{"id":691},"真實流量路徑解析",[358,693,694],{},"完整請求流程如下：",[375,696,699],{"className":697,"code":698,"language":380},[378],"Browser\n   ↓\nInternet\n   ↓\nZeabur Gateway\n   ↓\nK3s Ingress\n   ↓\nService\n   ↓\nPod\n   ↓\nContainer\n   ↓\nNuxt Nitro\n",[382,700,698],{"__ignoreMap":384},[358,702,703],{},"每一層都負責不同的工作：",[419,705,706,709,712,715,718],{},[422,707,708],{},"Gateway 負責入口與 SSL",[422,710,711],{},"K3s 負責調度與健康檢查",[422,713,714],{},"Pod 負責執行單位",[422,716,717],{},"Container 負責執行環境",[422,719,720],{},"Nuxt 負責應用邏輯",[365,722],{},[368,724,726],{"id":725},"為什麼-host0000-這麼重要","為什麼 HOST=0.0.0.0 這麼重要？",[358,728,729],{},"如果你的應用只監聽：",[375,731,734],{"className":732,"code":733,"language":380},[378],"localhost\n",[382,735,733],{"__ignoreMap":384},[358,737,738],{},"代表只允許容器內部存取。",[358,740,741],{},"這會導致：",[419,743,744,747,750,753],{},[422,745,746],{},"K3s 無法健康檢查",[422,748,749],{},"Gateway 無法轉發流量",[422,751,752],{},"出現 connection refused",[422,754,755],{},"Startup probe failed",[358,757,758],{},"而當你設定：",[375,760,763],{"className":761,"code":762,"language":380},[378],"HOST=0.0.0.0\n",[382,764,762],{"__ignoreMap":384},[358,766,767],{},"代表：",[419,769,770,773,776],{},[422,771,772],{},"對 Pod network 開放",[422,774,775],{},"Kubernetes 可以探測",[422,777,778],{},"Gateway 可以成功轉發",[358,780,781],{},"這是容器化環境中非常關鍵的一個觀念。",[365,783],{},[368,785,787],{"id":786},"主機檔案系統-vs-容器檔案系統","主機檔案系統 vs 容器檔案系統",[358,789,790],{},"當你透過 SSH 連進雲端主機時，實際結構可能是：",[375,792,795],{"className":793,"code":794,"language":380},[378],"Host Node\n   └── K3s\n        └── Pod\n             └── Container ← App 執行處\n",[382,796,794],{"__ignoreMap":384},[358,798,799],{},"容器具有獨立檔案系統，因此：",[419,801,802,805],{},[422,803,804],{},"主機看不到容器內部專案",[422,806,807],{},"容器停止後檔案可能消失（除非使用 Volume）",[358,809,810],{},"理解這一層，會讓你在 Debug 部署問題時清楚知道該從哪裡查起。",[365,812],{},[368,814,815],{"id":815},"核心理解總結",[358,817,818],{},"可以用一句話總結整個模型：",[525,820,821],{},[358,822,823],{},"Zeabur = K3s（Kubernetes）+ Container Runtime + 自動化 CI/CD",[358,825,826],{},"它幫你自動完成：",[375,828,831],{"className":829,"code":830,"language":380},[378],"git push\n   ↓\nbuild container image\n   ↓\ndeploy to K3s\n   ↓\nexpose via Gateway\n",[382,832,830],{"__ignoreMap":384},[358,834,835],{},"你寫的其實只是應用程式，但平台幫你處理了整個分層部署架構。",[365,837],{},[358,839,840],{},"當你真正理解這五層架構後，你會發現部署錯誤、健康檢查失敗、Port 無法連線等問題，其實都可以在這個模型中找到定位點。",[358,842,843],{},"部署不再是黑盒子，而是一個可以被拆解、理解與掌控的系統。",[845,846,847],"style",{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}",{"title":384,"searchDepth":567,"depth":567,"links":849},[850,851,852,853,854],{"id":401,"depth":567,"text":402},{"id":453,"depth":567,"text":454},{"id":501,"depth":567,"text":502},{"id":537,"depth":567,"text":538},{"id":607,"depth":567,"text":608},"深入理解 Zeabur 背後的 K3s 與容器架構，掌握從外部使用者請求到 Nuxt Nitro Server 的完整流量路徑。","md",null,{"tags":859,"category":865,"date":866},[860,861,862,128,863,864],"zeabur","k3s","kubernetes","deployment","devops","web_dev/infrastructure","2026-02-24",true,{"title":255,"description":855},"2puiFdQ8vXpmTpyKvtD7TM_FtF15Jr-Lv77sa9GlznY",[871,873],{"title":249,"path":250,"stem":251,"description":872,"children":-1},"涵蓋 Docker, Kubernetes (EKS/ECS) 等容器化架構技術，以及 YAML 配置管理。",{"title":259,"path":260,"stem":261,"description":874,"children":-1},"用部署堆疊（Deployment Stack）的角度理解 ECS、Docker 與 Kubernetes 的關係，建立清晰的雲端部署心智模型。",1776690846330]