K8S三 K8S部署微服務應用

一 用k8s部署微服務應用

以我們之前用docker部署過的eureka應用為例,首先添加配置文件eureka-app-deployment.yaml用于創建Deployment

apiVersion: apps/v1
kind: Deployment
metadata:name: eureka-app-deployment # deployment名字labels:app: eureka-app
spec:replicas: 1 #副本個數selector:matchLabels:app: eureka-app template:metadata:labels:app: eureka-appspec:containers:- name: eureka-app #pod名字# 指定Docker Hub中的鏡像地址image: zhuge666/microservice-eureka-server:0.0.1ports:- containerPort: 8761 # 容器內部端口

通過應用配置文件來創建一個Deployment部署

kubectl apply -f eureka-app-deployment.yaml

查看下deploy和pod信息

kubectl get deploy,pod

在這里插入圖片描述
我們可以通過kubectl logs命令來查看應用的啟動日志

kubectl logs -f  pod/eureka-app-deployment-7cd4b6f4d4-lkzs4

在這里插入圖片描述
如果想要從外部訪問應用,需要創建Service,添加配置文件eureka-app-service.yaml用于創建Service

apiVersion: v1
kind: Service
metadata:name: eureka-app-service
spec:type: NodePortselector:app: eureka-app #選擇有該標簽的pod容器ports:- name: httpprotocol: TCPport: 8761  #service的端口targetPort: 8761  #pod的端口,一般與pod內部容器的服務端口一致

通過應用配置文件來創建Service

kubectl apply -f eureka-app-service.yaml

查看服務Service信息

[macro@linux-local k8s]$ kubectl get services

在這里插入圖片描述
此時就可以通過外網來訪問了:http://192.168.65.160:30558/
在這里插入圖片描述

二 用k8s部署電商項目微服務

以電商微服務里的product服務為例,我們來創建對應的deployment和service,做之前需要把商品服務做成鏡像推到docker鏡像倉庫里去,參考之前的docker章節。

docker login
docker tag mall/tulingmall-product:0.0.1 zhuge666/tulingmall-product:0.0.1
docker push zhuge666/tulingmall-product:0.0.1

新增文件tulingmall-product-deployment.yaml,內容如下:

apiVersion: apps/v1
kind: Deployment
metadata:name: tulingmall-product-deploymentlabels:app: tulingmall-product
spec:replicas: 1selector:matchLabels:app: tulingmall-producttemplate:metadata:labels:app: tulingmall-productspec:containers:- name: tulingmall-productimage: zhuge666/tulingmall-product:0.0.1#imagePullPolicy: Always  # 1)Always 總是拉取鏡像, 2)IfNotPresent(默認該值) 本地有則使用本地鏡像,3)Never 只使用本地鏡像,從不拉取,即使本地沒有鏡像ports:- containerPort: 8866env: # 環境- name: TZvalue: Asia/Shanghai- name: spring.cloud.nacos.config.server-addr # 指定配置中心nacosvalue: 192.168.65.42:8848- name: LOG_FILEvalue: /var/logsvolumeMounts:- mountPath: /var/logs #容器日志目錄(掛載到下邊的宿主機目錄)name: log-volumevolumes:- name: log-volumehostPath:path: /mydata/k8s-app/tulingmall-product/logs #宿主機目錄type: DirectoryOrCreatednsPolicy: Default  #繼承Pod所在宿主機的DNS設置,使pod能訪問外網

配置環境變量
在這里插入圖片描述

執行如下命令創建商品服務的deployment:

kubectl apply -f tulingmall-product-deployment.yaml
# 查看
kubectl get all

新增文件tulingmall-product-service.yaml,內容如下:
(其實我們實際部署時不需要寫這個文件,因為微服務里有fegin或Ribbion這種內部調用框架去互相調用服務;但是部署gateway時一定要配置對應的service.yaml文件,因為gateway項目是需要外網訪問的)

apiVersion: v1
kind: Service
metadata:name: tulingmall-product-service
spec:type: NodePortselector:app: tulingmall-productports:- name: httpprotocol: TCPport: 8866targetPort: 8866

執行如下命令創建商品服務的service:

kubectl apply -f tulingmall-product-service.yaml

查看商品服務的對外暴露端口:
在這里插入圖片描述
訪問下查詢商品的接口,如果有json數據返回,代表服務正常:

http://192.168.65.210:30911/pms/productInfo/1

在這里插入圖片描述
用相同的方法部署下電商里的order,member,gateway,authcenter等服務,這里不一一詳述了,附上每個服務k8s部署的yaml文件供大家參考。

authcenter服務
tulingmall-authcenter-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: tulingmall-authcenter-deploymentlabels:app: tulingmall-authcenter
spec:replicas: 1selector:matchLabels:app: tulingmall-authcentertemplate:metadata:labels:app: tulingmall-authcenterspec:containers:- name: tulingmall-authcenterimage: zhuge666/tulingmall-authcenter:0.0.1imagePullPolicy: Alwaysports:- containerPort: 9999env: - name: TZvalue: Asia/Shanghai- name: spring.cloud.nacos.config.server-addrvalue: 192.168.65.42:8848- name: LOG_FILEvalue: /var/logsvolumeMounts:- mountPath: /var/logsname: log-volumevolumes:- name: log-volumehostPath:path: /mydata/k8s-app/tulingmall-authcenter/logstype: DirectoryOrCreatednsPolicy: Default  #繼承Pod所在宿主機的DNS設置,使pod能訪問外網

tulingmall-authcenter-service.yaml

apiVersion: v1
kind: Service
metadata:name: tulingmall-authcenter-service
spec:type: NodePortselector:app: tulingmall-authcenterports:- name: httpprotocol: TCPport: 9999targetPort: 9999

gateway服務
tulingmall-gateway-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: tulingmall-gateway-deploymentlabels:app: tulingmall-gateway
spec:replicas: 1selector:matchLabels:app: tulingmall-gatewaytemplate:metadata:labels:app: tulingmall-gatewayspec:containers:- name: tulingmall-gatewayimage: zhuge666/tulingmall-gateway:0.0.1imagePullPolicy: Alwaysports:- containerPort: 8888env:- name: TZvalue: Asia/Shanghai- name: spring.cloud.nacos.config.server-addrvalue: 192.168.65.42:8848- name: LOG_FILEvalue: /var/logsvolumeMounts:- mountPath: /var/logsname: log-volumevolumes:- name: log-volumehostPath:path: /mydata/k8s-app/tulingmall-gateway/logstype: DirectoryOrCreatednsPolicy: Default  #繼承Pod所在宿主機的DNS設置,使pod能訪問外網

tulingmall-gateway-service.yaml
(其他模塊可以不寫自己的service.yaml,gateway需要外網訪問,所以一定要寫service.yaml)

apiVersion: v1
kind: Service
metadata:name: tulingmall-gateway-service
spec:type: NodePortselector:app: tulingmall-gatewayports:- name: httpprotocol: TCPport: 8888targetPort: 8888

order服務
tulingmall-order-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: tulingmall-order-deploymentlabels:app: tulingmall-order
spec:replicas: 1selector:matchLabels:app: tulingmall-ordertemplate:metadata:labels:app: tulingmall-orderspec:containers:- name: tulingmall-orderimage: zhuge666/tulingmall-order:0.0.1imagePullPolicy: Alwaysports:- containerPort: 8844env:- name: TZvalue: Asia/Shanghai- name: spring.cloud.nacos.config.server-addrvalue: 192.168.65.42:8848- name: LOG_FILEvalue: /var/logs- name: JAVA_TOOL_OPTIONSvalue: -Xms1G -Xmx1G -Xmn512M -Xss512K -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -javaagent:/agent/skywalking-agent.jar -DSW_AGENT_NAME=tulingmall-order -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.65.204:11800volumeMounts:- mountPath: /var/logsname: log-volumevolumes:- name: log-volumehostPath:path: /mydata/k8s-app/tulingmall-order/logstype: DirectoryOrCreatednsPolicy: Default  #繼承Pod所在宿主機的DNS設置,使pod能訪問外網   

tulingmall-order-service.yaml

apiVersion: v1
kind: Service
metadata:name: tulingmall-order-service
spec:type: NodePortselector:app: tulingmall-orderports:- name: httpprotocol: TCPport: 8844targetPort: 8844

member服務
tulingmall-member-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: tulingmall-member-deploymentlabels:app: tulingmall-member
spec:replicas: 1selector:matchLabels:app: tulingmall-membertemplate:metadata:labels:app: tulingmall-memberspec:containers:- name: tulingmall-memberimage: zhuge666/tulingmall-member:0.0.1imagePullPolicy: Alwaysports:- containerPort: 8877env:- name: TZvalue: Asia/Shanghai- name: spring.cloud.nacos.config.server-addrvalue: 192.168.65.42:8848- name: LOG_FILEvalue: /var/logs- name: JAVA_TOOL_OPTIONSvalue: -Xmx1g -Xms1g -XX:MaxMetaspaceSize=256m -javaagent:/agent/skywalking-agent.jar -DSW_AGENT_NAME=tulingmall-member -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.65.204:11800volumeMounts:- mountPath: /var/logsname: log-volumevolumes:- name: log-volumehostPath:path: /mydata/k8s-app/tulingmall-member/logstype: DirectoryOrCreatednsPolicy: Default  #繼承Pod所在宿主機的DNS設置,使pod能訪問外網

tulingmall-member-service.yaml

apiVersion: v1
kind: Service
metadata:name: tulingmall-member-service
spec:type: NodePortselector:app: tulingmall-memberports:- name: httpprotocol: TCPport: 8877targetPort: 8877

創建網關的Ingress(相當于Nginx)
最后,我們來創建網關服務的Ingress,創建文件tulingmall-gateway-ingress.yaml,內容如下:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:name: tulingmall-gateway-ingress
spec:rules:- host: gateway.tuling.com  #轉發域名http:paths:- path: /backend:serviceName: tulingmall-gateway-serviceservicePort: 8888  #service的端口

執行如下命令生效規則:

kubectl apply -f tulingmall-gateway-ingress.yaml

查看生效的ingress規則:

kubectl get ing

在這里插入圖片描述
在訪問機器配置host,win10客戶機在目錄:C:\Windows\System32\drivers\etc,在host里增加如下host(ingress部署的機器ip對應訪問的域名)

192.168.65.203  gateway.tuling.com
或者
192.168.65.210  gateway.tuling.com

配置完后直接在客戶機用域名請求下網關:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/9966.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/9966.shtml
英文地址,請注明出處:http://en.pswp.cn/web/9966.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++】CentOS環境搭建-升級CMAKE

【C】CentOS環境搭建-升級CMAKE CMAKE報錯CMake 3.12 or higher is required. You are running version 2.8.12.2升級步驟1.移除當前的cmake2.安裝必要的構建工具和庫3.下載最新的cmake源碼并解壓5.編譯和安裝6.驗證安裝 CMAKE報錯CMake 3.12 or higher is required. You are r…

oraclesql中刪除表中重復行的方法

在Oracle SQL中,刪除表中的重復行有幾種常見的方法。以下是其中的三種: 使用ROWID: 通過比較ROWID,你可以找到并刪除重復的行。這是因為ROWID是Oracle數據庫為每一行數據分配的唯一標識符。 sql DELETE FROM persons p1 WHERE ROWID NOT…

MySQL存儲引擎詳解

存儲引擎 MySQL體系結構 連接層:與客戶端連接,權限校驗、連接池服務層:SQL接口和解析、查詢優化、緩存、函數引擎層:索引、存儲引擎存儲層:系統文件、日志(Redo、Undo等) 存儲引擎介紹 不同的…

SSH:安全遠程訪問的基石

SSH:安全遠程訪問的基石 一、引言 在當今這個數字化、網絡化的時代,遠程訪問和管理計算機資源已成為日常工作的重要組成部分。然而,如何在不安全的網絡環境中確保數據傳輸的機密性、完整性和可靠性,成為了一個亟待解決的問題。S…

前端測試策略與實踐:單元測試、E2E測試與可訪問性審計

前端測試策略是確保Web應用程序質量、性能和用戶體驗的關鍵組成部分。有效的測試策略通常包括單元測試、端到端(E2E)測試以及可訪問性審計等多個層面。以下是關于這三類測試的策略與實踐建議: 單元測試 定義與目的: 單元測試是針…

P2622 關燈問題

小小注解: 1. vis:表示到達該狀態的步數(min)1, 因為我們是從開始狀態 窮舉,所以每次到一個新狀態(之前沒有到過的狀態)就是最小步數。 如何判斷是否是一個新狀態呢&#xff0c…

axios常用配置

Axios 是一個基于 promise 的 HTTP 庫,廣泛用于瀏覽器和 node.js 中。以下是一些 Axios 常用的配置選項: url: 字符串,請求的服務器URL,是必填項。method: 請求方法,如 ‘get’, ‘post’, ‘put’, ‘delete’ 等&am…

免費遠程控制軟件哪個好用

免費遠程控制軟件哪個好用 在現今高度信息化的社會,遠程控制軟件已成為許多用戶進行遠程辦公、技術支持和教育培訓的重要工具。市面上有許多免費的遠程控制軟件,但哪款才是最好用的呢?本文將為您介紹幾款熱門的免費遠程控制軟件,…

Tab菜單與下拉式菜單

Tab菜單 利用CSS隱藏或顯示欄目中的部分內容&#xff0c;實際Tab面板包含的全部內容都已下載到客戶端瀏覽器當中。一般Tab面板僅顯示一個Tab菜單項&#xff0c;當用戶點選對應的菜單選項之后&#xff0c;才會顯示對應的內容。 <!DOCTYPE html> <html><head>…

Matlab: ode45解微分方程——以彈簧振子模型為例

簡介&#xff1a; 在科學和工程中&#xff0c;我們經常遇到描述事物變化的微分方程。這些方程可以幫助我們理解從行星運動到藥物在體內的擴散等各種現象。但是&#xff0c;很多微分方程非常復雜&#xff0c;手動求解幾乎不可能。這時&#xff0c;我們就可以使用像 ode45這樣的…

【DL】FocalLoss的PyTorch實現

【DL】FocalLoss的PyTorch實現 此篇不介紹FocalLoss的原理&#xff0c;僅展示PyTorch實現FocalLoss的兩種方式。個人認為相關原理已在文章《FocalLoss原理通俗解釋及其二分類和多分類場景下的原理與實現》中講得很清晰&#xff0c;故此篇不再介紹。 方式一 同時計算一個batc…

【iOS】frame與bounds區別

文章目錄 前言framebounds兩者區別size的區別總結 前言 在學習響應者鏈的過程中用到了frame與bounds的混用&#xff0c;這兩個屬性經常出現在我們的開發中&#xff0c;特別撰寫一篇博客分析區別 首先&#xff0c;我們來看一下iOS特有的坐標系&#xff0c;在iOS坐標系中以左上…

C語言如何查看進程中環境變量中所有的值

示例代碼&#xff1a;查看進程中環境變量中所有的值。 #include <stdio.h>int main(){extern char** environ;for (char** pp environ; *pp; pp){printf("%s\n", *pp);}return 0; }輸出結果&#xff1a; SHELL/bin/bash WSL2_GUI_APPS_ENABLED1 WSL_DISTRO_…

【debug】如何使用pycharm對代碼調試

后續會將所有debug中遇到的知識放入&#xff0c;建議關注收藏 本站友情鏈接&#xff1a; 基本理論專欄&#xff08;當前更新好的debug所有內容都在這里&#xff09; 【debug】報錯解決方法&#xff08;CondaHTTPError&#xff1a;HTTP 000 connection failed for url&#xff…

【回溯 狀態壓縮 深度優先】37. 解數獨

本文涉及知識點 回溯 狀態壓縮 深度優先 LeetCode37. 解數獨 編寫一個程序&#xff0c;通過填充空格來解決數獨問題。 數獨的解法需 遵循如下規則&#xff1a; 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現一次。 數字 1-9 在每一個以粗實線分隔的 3x3 宮內只…

leetCode刷題記錄4-面試經典150題-2

文章目錄 不要擺&#xff0c;沒事干就刷題&#xff0c;只有好處&#xff0c;沒有壞處&#xff0c;實在不行&#xff0c;看看競賽題面試經典 150 題 - 2210. 課程表 II 不要擺&#xff0c;沒事干就刷題&#xff0c;只有好處&#xff0c;沒有壞處&#xff0c;實在不行&#xff0c…

[C++核心編程-06]----C++類和對象之對象模型和this指針

&#x1f3a9; 歡迎來到技術探索的奇幻世界&#x1f468;?&#x1f4bb; &#x1f4dc; 個人主頁&#xff1a;一倫明悅-CSDN博客 ?&#x1f3fb; 作者簡介&#xff1a; C軟件開發、Python機器學習愛好者 &#x1f5e3;? 互動與支持&#xff1a;&#x1f4ac;評論 &…

Microsoft 365 for Mac v16.84 office365全套辦公軟件

Microsoft 365 for Mac是一款功能豐富的辦公軟件套件&#xff0c;為Mac用戶提供了豐富的功能和工具&#xff0c;提高了工作效率和協作能力。Microsoft 365 for Mac是一款專為Mac用戶設計的訂閱式辦公軟件套件&#xff0c;旨在提高生產力和效率。 Microsoft 365 for Mac v16.84正…

數據賦能(83)——數據要素:數據要素管理與數據管理

數據要素管理則更關注數據作為生產性資源在創造經濟價值中的作用&#xff1b;數據管理更側重于數據在整個生命周期中的控制、保護和價值提升。 數據要素管理是對數據作為關鍵生產要素進行系統性管理的過程。它聚焦于數據在經濟和社會活動中的價值創造和貢獻&#xff0c;將數據…

ubantu安裝docker以及docker-compose

ubantu安裝docker以及docker-compose 安裝docker1、從官方存儲庫中安裝Docker2、啟動Docker服務3、驗證 安裝docker compose使用docker部署服務1、需要再opt文件夾下創建以下文件夾&#xff0c;/opt文件夾目錄說明2、可將已備份對應文件夾拷至對應文件夾下3、在/opt/compose目錄…