透過K8S Ingress 和 NodePort service直接連線Pod中的App

更新 發佈閱讀 5 分鐘

上一篇介紹如何將Docker image部屬到Minikube,由於Pod 使用的是 K8S內部的 IP,無法從外部直接連線,所以是用minikube ssh來做測試,但是在真實環境中,總是要能有url可以直接連線到app,因此這邊可以使用k8s的Service。

建立一個監聽5001 port 的 NodePort Service hello-world,將連線導向pod的5000 port:

$ kubectl expose pod hello-world --port=5001 --target-port=5000 --type=NodePort
raw-image

取得 service 的對外k8s node ip 和 port:

$ minikube service hello-world --url


#NodePort 模式下,Service 的port會對應到 k8s node上的port,所以只要得到k8s node的 IP 和port,就可以從node外部直接連線到 Service。

raw-image
raw-image


#Note:

刪除service:

$ kubectl delete svc hello-world


取得services:

$ kubectl get services
raw-image


到這邊已經可以直接從外部ip連到k8s內部的app了,但是用ip來記是不是很不方便呢?
這邊可以使用k8s的ingress元件,先啟用:

$ minikube addons enable ingress
raw-image


Ingress需要撰寫yaml檔來做設定,以 minikube 內建的 Nginx Ingress 為例,建立一個hello-world-ingress.yaml:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: vic-example
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: hello.world.minikube
http:
paths:
- path: /(.*|$)
backend:
serviceName: hello-world
servicePort: 5001


其中host是對外的domain name,有點類似在設定apache的server name,設定好申請的domain即可從外部直接連線過來。
serviceName跟servicePort則填寫上面建立好的Service。


建立一個名為vic-example的Ingress:

$ kubectl apply -f hello-world-ingress.yaml
raw-image


查看Ingress:

$ kubectl get ingress
raw-image

由於這只是範例,並不是真的有hello.world.minikube這個domain name,因此為了模擬測試,可以在/etc/hosts中加入host ip mapping:

$ sudo nano /etc/hosts
raw-image

測試:

raw-image
raw-image

到這邊為止,就可以透過好記的url來連線到開發的app了呢!


#Note:

刪除Ingress:

$ kubectl delete ingress vic-example


下一篇,使用K8S Deployment來部屬App

本筆記參考:
1. https://medium.com/brobridge/%E6%AD%A5%E6%AD%A5%E9%A9%9A%E5%BF%83-%E5%BE%9E%E9%A0%AD%E9%83%A8%E7%BD%B2%E6%9C%8D%E5%8B%99%E5%88%B0-kubernetes-%E4%BA%8C-17197c0afc40
2.
https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/

留言
avatar-img
Vic Lin的沙龍
20會員
161內容數
Vic Lin的沙龍的其他內容
2023/08/13
父元件 傳遞方法使用@ <template>    ...    <Login @modalClose="modalClose"/> ... </template> <script setup>     const _modal = ref();     function m
2023/08/13
父元件 傳遞方法使用@ <template>    ...    <Login @modalClose="modalClose"/> ... </template> <script setup>     const _modal = ref();     function m
2023/03/25
前情提要 由於我的筆電已經用了10年,無法再戰下去了,且有預算考量,加上使用電腦幾乎都是定點,只有偶爾回家的時候會需要攜帶,因此最終選擇了迷你電腦,體積小不占空間,又方便攜帶,剛好符合我的需求。 菜單 由於這台無法裝獨顯,所以CPU的部分選擇 AMD R5 3400G(含Vega 11內
Thumbnail
2023/03/25
前情提要 由於我的筆電已經用了10年,無法再戰下去了,且有預算考量,加上使用電腦幾乎都是定點,只有偶爾回家的時候會需要攜帶,因此最終選擇了迷你電腦,體積小不占空間,又方便攜帶,剛好符合我的需求。 菜單 由於這台無法裝獨顯,所以CPU的部分選擇 AMD R5 3400G(含Vega 11內
Thumbnail
2023/03/10
Nuxt3中可使用useFetch來獲取數據,不須再引用axios,相當方便: 本筆記參考: https://juejin.cn/post/7104071421160063012 https://juejin.cn/post/7086472647575339045
2023/03/10
Nuxt3中可使用useFetch來獲取數據,不須再引用axios,相當方便: 本筆記參考: https://juejin.cn/post/7104071421160063012 https://juejin.cn/post/7086472647575339045
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
Thumbnail
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
Thumbnail
本次分享一個K8S網路的一個很重要的元件:Ingress。 有沒有ingress差別在那?
Thumbnail
本次分享一個K8S網路的一個很重要的元件:Ingress。 有沒有ingress差別在那?
Thumbnail
什麼是Kubernetes Service? 先來個官網的解說 A Kubernetes Service is an abstraction which defines a logical set of Pods and a policy by which to access them. 白話文就是
Thumbnail
什麼是Kubernetes Service? 先來個官網的解說 A Kubernetes Service is an abstraction which defines a logical set of Pods and a policy by which to access them. 白話文就是
Thumbnail
Kubernetes是現代應用程序開發和部署的重要技術,而Pod是Kubernetes中最小的部署單位。Pod是一個或多個container的集合,它們共享一個網路命名空間和一個網路接口。Pod不僅提供了一個簡單而強大的container環境,還可以用於實現多種container編排方案,例如負載平
Thumbnail
Kubernetes是現代應用程序開發和部署的重要技術,而Pod是Kubernetes中最小的部署單位。Pod是一個或多個container的集合,它們共享一個網路命名空間和一個網路接口。Pod不僅提供了一個簡單而強大的container環境,還可以用於實現多種container編排方案,例如負載平
Thumbnail
之前都介紹docker監控container,這次來點不一樣的,直接裝在k8s裡面去監控pod的一些指標。 基本的指標像是cpu, mem, pod數量, node數量等等,都能透過kube-state-metrics完成,而如果想要監控一些流量的指標,像是tcp連線數,tw數等,則是需要另外在服務
Thumbnail
之前都介紹docker監控container,這次來點不一樣的,直接裝在k8s裡面去監控pod的一些指標。 基本的指標像是cpu, mem, pod數量, node數量等等,都能透過kube-state-metrics完成,而如果想要監控一些流量的指標,像是tcp連線數,tw數等,則是需要另外在服務
Thumbnail
透過K8S Ingress 和 NodePort service直接連線Pod中的App
Thumbnail
透過K8S Ingress 和 NodePort service直接連線Pod中的App
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News