k8s-第四節-Service

Service

  • Service 通過 label 關聯對應的 Pod
  • Servcie 生命周期不跟 Pod 綁定,不會因為 Pod 重創改變 IP
  • 提供了負載均衡功能,自動轉發流量到不同 Pod
  • 可對集群外部提供訪問端口
  • 集群內部可通過服務名字訪問

services

創建 Service

kubectl apply -f service.yamlkubectl get svc

內部訪問 Service

服務的默認類型是ClusterIP,只能在集群內部訪問,我們可以進入到 Pod 里面訪問:

kubectl exec -it pod-name -- bash
curl http://test-k8s:8080

如果你是用 minikube,因為是模擬集群,你的電腦并不是節點,節點是 minikube 模擬出來的,所以你并不能直接在電腦上訪問到服務

外部訪問 Service

如果要在集群外部訪問,可以通過端口轉發實現(只適合臨時測試用):

kubectl port-forward service/test-k8s 8888:8080

如果你用 minikube,也可以這樣minikube service test-k8s 來將service暴露到外部

K8S中的四種端口號:

  • containerPort:容器內部進程使用的端口

  • Port:為service在clusterIP上暴露的端口

  • targetPort:容器映射在pod上的端口

  • nodeport:將端口映射到宿主機上,提供外部流量訪問K8S集群中service的入口

對外暴露服務

上面我們是通過端口轉發的方式可以在外面訪問到集群里的服務,如果想要直接把集群服務暴露出來,我們可以使用NodePortLoadbalancer 類型的 Service

apiVersion: v1
kind: Service
metadata:name: test-k8s
spec:selector:app: test-k8s# 默認 ClusterIP 集群內可訪問,NodePort 節點可訪問,LoadBalancer 負載均衡模式(需要負載均衡器才可用)type: NodePortports:- port: 8080        # 本 Service 的端口targetPort: 8080  # 容器端口nodePort: 31000   # 節點端口,范圍固定 30000 ~ 32767

Loadbalancer 也可以對外提供服務,這需要一個負載均衡器的支持,因為它需要生成一個新的 IP 對外服務,否則狀態就一直是 pendding,這個很少用了,后面我們會講更高端的 `Ingress 來代替它。

多端口暴露服務

apiVersion: v1
kind: Service
metadata:name: test-k8s
spec:selector:app: test-k8stype: NodePortports:- port: 8080        # 本 Service 的端口name: test-k8s    # 必須配置targetPort: 8080  # 容器端口nodePort: 31000   # 節點端口,范圍固定 30000 ~ 32767- port: 8090name: test-othertargetPort: 8090nodePort: 32000

EndPoint

EndPoint 就是將 Pod 的 IP 和端口對應起來,這樣 Service 才能找到 Pod。

apiVersion: v1
kind: Endpoints
metadata:name: test-k8s
subsets:- addresses:- ip: 10.244.1.10ports:- port: 8080
  • 一個或多個subset對象,每個subset中包含一組IP地址和端口號的列表。不同的subset可以根據Label Selector將后端Pod進行分類。
  • addresses:一個IP地址列表,表示屬于該Endpoint的Pod的IP地址。
  • ports:一個端口號列表,表示屬于該Endpoint的Pod所開放的端口號
  • 每個subset都包含一個或多個address和ports,表示一個或多個Pod的IP地址和端口號。
  • 通過使用Endpoint資源對象,Kubernetes可以動態地管理后端Pod實例的地址和端口信息。

這樣,當后端Pod的數量發生變化、新的Pod加入或舊的Pod刪除時,Kubernetes會及時更新Endpoint中的信息,保持負載均衡和流量路由的正確性。

總結來說,Endpoint是Kubernetes中用于關聯Service與后端Pod實例的資源對象,存儲了一組IP地址和端口號的列表。

總結service 類型 yaml中通過type指定

ClusterIP

默認的,僅在集群內可用

NodePort

暴露端口到節點,提供了集群外部訪問的入口
端口范圍固定 30000 ~ 32767

LoadBalancer

需要負載均衡器(通常都需要云服務商提供,裸機可以安裝 METALLB 測試)
會額外生成一個 IP 對外服務
K8S 支持的負載均衡器:負載均衡器

Headless

適合數據庫
clusterIp 設置為 None 就變成 Headless 了,不會再分配 IP,通過 DNS 解析獲取,以Pod名為DNS

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

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

相關文章

math.round和math.floor相互轉化

在Python中,math.round() 函數用于對浮點數進行四舍五入到最接近的整數,而 math.floor() 函數則是直接取浮點數的整數部分,即向下取整。如果你需要在 math.round() 和 math.floor() 之間進行某種“相互轉化”,實際上,你…

003-基于Sklearn的機器學習入門:回歸分析(上)

本節及后續章節將介紹機器學習中的幾種經典回歸算法,所選方法都在Sklearn庫中聚類模塊有具體實現。本節為上篇,將介紹基礎的線性回歸方法,包括線性回歸、邏輯回歸、多項式回歸和嶺回歸等。 2.1 回歸分析概述 回歸(Regression&…

11 - matlab m_map地學繪圖工具基礎函數 - 繪制航跡、橢圓、風向玫瑰圖和特定的圓形區域的有關函數及其用法

11 - matlab m_map地學繪圖工具基礎函數 - 繪制航跡、橢圓、風向玫瑰圖和特定的圓形區域的有關函數及其用法 0. 引言1. 關于m_track2. 關于m_range_ring3. 關于m_ellipse4. 關于m_windrose5. 結語 0. 引言 本篇介紹下m_map中繪制航跡圖函數(m_track)、繪…

python 發布應用程序包

文章目錄 發布python包toml配置文件構建發布python包 官方文檔參考 將自己的python項目發布成源碼包或者wheel二進制包,供其他開發者使用。 方式: 使用py工具; distutils,該工具的使用已過時;setuptools,常用方式;wheel,在setuptools的基礎上添加了 bdist_wheel, …

【BUUCTF-PWN】4-ciscn_2019_n_1

參考:BUUCTF-ciscn_2019_n_1 - 紙鳶asahi - 博客園 (cnblogs.com) buuctf 刷題記錄_PWN ciscn_2019_n_1 - MuRKuo - 博客園 (cnblogs.com) 從題海中入門(四)ciscn_2019_n_1 - FreeBuf網絡安全行業門戶 ciscn_2019_n_1 ——兩種解法_0x4134800…

Generative Modeling by Estimating Gradients of the Data Distribution

Generative Modeling by Estimating Gradients of the Data Distribution 本文介紹宋飏提出的帶噪聲擾動的基于得分的生成模型。首先介紹基本的基于得分的生成模型的訓練方法(得分匹配)和采樣方法(朗之萬動力學)。然后基于流形假…

快速了解-注解Annotation

描述 Annotation定義:注解是Java語言從JDK 5.0版本開始引入的一種技術。 Annotation作用: 注解不是程序本身,但可以對程序作出解釋。這與注釋(comment)類似,但注解可以被其他程序(如編譯器&…

react apollo hooks

1、創建ApolloProvider來包裝整個程序 <ApolloProvider client{client}><App /> <ApolloProvider> 2、useQuery查詢 工作方式usequery將返回一個數組 const {要返回的對象} useQuery(傳入參數) 實例 const query gqlquery name {whatever {field}} e…

信號量——Linux并發之魂

歡迎來到 破曉的歷程的 博客 引言 今天&#xff0c;我們繼續學習Linux線程本分&#xff0c;在Linux條件變量中&#xff0c;我們對條件變量的做了詳細的說明&#xff0c;今天我們要利用條件變量來引出我們的另一個話題——信號量內容的學習。 1.復習條件變量 在上一期博客中&…

天潤融通分析AI技術助力客戶服務,實現滿意度三倍增長

如今&#xff0c;客戶體驗越來越成為影響客戶決策的核心要素。 對于企業來講&#xff0c;客戶在不同觸點的每一次互動體驗&#xff0c;都成為塑造品牌聲譽的“Aha時刻”。但同時&#xff0c;隨著社會的發展的加速&#xff0c;客戶的需求也在日新月異&#xff0c;給企業帶來挑戰…

刷代碼隨想錄有感(125):動態規劃——最長公共子序列

題干&#xff1a; 代碼&#xff1a; class Solution { public:int longestCommonSubsequence(string text1, string text2) {vector<vector<int>>dp(text1.size() 1, vector<int>(text2.size() 1, 0));for(int i 1; i < text1.size(); i){for(int j …

【SQL】已解決:SQL錯誤(15048): 數據兼容級別有效值為100、110或120

文章目錄 一、分析問題背景二、可能出錯的原因三、錯誤代碼示例四、正確代碼示例五、注意事項 已解決SQL錯誤(15048): 數據兼容級別有效值為100、110或120 在數據庫開發和管理過程中&#xff0c;我們經常會遇到各種各樣的錯誤。本文將詳細分析SQL錯誤(15048)的背景、可能原因、…

langchain框架輕松實現本地RAG

一 什么是RAG? RAG&#xff08;Retrieval-Augmented Generation&#xff09;是一種結合了檢索和生成模型的方法&#xff0c;主要用于解決序列到序列的任務&#xff0c;如問答、對話系統、文本摘要等。它的核心思想是通過從大量文檔中檢索相關信息&#xff0c;然后利用這些信息…

vue3-openlayers 圖標閃爍、icon閃爍、marker閃爍

本篇介紹一下使用vue3-openlayers 圖標閃爍、icon閃爍、marker閃爍 1 需求 圖標閃爍、icon閃爍、marker閃爍 2 分析 圖標閃爍、icon閃爍、marker閃爍使用ol-animation-fade組件 3 實現 <template><ol-map:loadTilesWhileAnimating"true":loadTilesWh…

讀人工智能全傳03分治策略

1. 黃金年代 1.1. 圖靈在他發表的論文《計算機器與智能》中介紹了圖靈測試&#xff0c;為人工智能學科邁出第一步做出了重大貢獻 1.2. 美國在第二次世界大戰后幾十年里計算機技術發展的特色&#xff0c;也是美國在未來60年內確立人工智能領域國際領先地位的核心 1.3. 1955年…

lodash中flush的使用(debounce、throttle)

在項目的配置中&#xff0c;看到了一個請求&#xff0c;類似是這樣的 import { throttle } from lodash-es// 請求函數 async function someFetch(){const {data} await xxx.post()return data }// 節流函數 async function throttleFn(someFetch,1000)// 執行拿到數據函數 a…

leetcode--二叉樹中的最長交錯路徑

leetcode地址&#xff1a;二叉樹中的最長交錯路徑 給你一棵以 root 為根的二叉樹&#xff0c;二叉樹中的交錯路徑定義如下&#xff1a; 選擇二叉樹中 任意 節點和一個方向&#xff08;左或者右&#xff09;。 如果前進方向為右&#xff0c;那么移動到當前節點的的右子節點&…

大數據開發中的數據生命周期管理

上班越久&#xff0c;發現有些數據一直放在那里&#xff0c;根本沒有流動&#xff0c;完全沒有發揮價值&#xff0c;數據是有生命周期的&#xff0c;而且生命周期管理得好&#xff0c;工作就會更輕松。 目錄 引言數據創建示例代碼 數據存儲示例代碼 數據使用示例代碼 數據維護示…

JavaScript中閉包的理解

閉包&#xff08;Closure&#xff09;概念&#xff1a;一個函數對周圍狀態的引用捆綁在一起&#xff0c;內層函數中訪問到其外層函數的作用域。簡單來說;閉包內層函數引用外層函數的變量&#xff0c;如下圖&#xff1a; 外層在使用一個函數包裹住閉包是對變量的保護&#xff0c…

學習python常用的英語單詞,有音標,有音節劃分,適合英語基礎差的人來入門

if [?f] 如果 else [els] 否則 while [wa?l] 當...的時候 for [f?:r] “對于”或“遍歷”&#xff0c;適合于 break [brek] 中斷 continue [k?nt?nju:] 繼續 con ti nue [k?n t? nju:] pass [pɑ:s] 通過 height [ha?t] 高度 weight [we?t] 重量 keyword [ki:w…