最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

Service 基礎

2023-06-30 20:41 作者:阿兵云原生  | 我要投稿

今天開始來分享Service 的基礎知識,后續(xù)我們可以慢慢打磨,分享 Service 的進階知識和原理

Service 基本概念

Service 是 K8S 最核心的概念了

我們可以通過創(chuàng)建 Service ,為一組具有相同功能的容器應用提供一個統(tǒng)一的入口地址,并且可以將請求分發(fā)到后端的各個容器應用上

我們來看看完成的 Service 是什么樣子的,我們來手寫一份

apiVersion:?v1
kind:?Service
metadata:
??name:?service?name
??namespace:
??labels:
??-?name:?label?name
??annotations:
??-?name:?annotations?name
spec:
??selector:?[]
??type:?string
??clusterIP:?spec?ip
??sessionAffinity:?string
??ports:
??-?name:?ports?name
????protocol:?tcp/udp
????port:?int
????targetPort:?int
????nodePort:?int
??status:
????loadBalancer:
??????ingress:
????????ip:?string
????????hostname:?string
??

整一張表來解釋一下上面某些字段的含義

屬性字段值類型必須?說明metadata.labels[]listno自定義屬性標簽metadata.annotations[]listno自定義注解標簽spec.selector[]listyes配置 label selector
選擇具有指定 label 標簽的pod 作為管理范圍spec.typestringyesservice 的類型
- ClusterIP

虛擬服務的 ip,用于 K8S 內部 的pod 相互訪問
- NodePort
使用的是宿主機的端口,外部可以通過訪問 node 的 ip 和端口,就可以達到訪問內部服務的目的
- ?loadBalancer
使用外接的負載均衡器完成到服務的負載分發(fā),需要在 loadBalancer 字段處指定外部負載均衡器的 ip 地址,并且同時需要定義 ClusterIP 和 NodePortspec.ClusterIPstringno虛擬服務的 ip 地址
如果 spec.type 指定的是 ?loadBalancer ?,那么這個 ip 就需要寫,其他的情況,可以不寫,系統(tǒng)默認分配spec.sessionAffinitystringno是否支持 session
默認值是空,可以填我們的 ClusterIP
功能是,將一個源 IP 地址的客戶端訪問的請求,都轉發(fā)到同一個后端 podspec.ports[].portintno內部服務監(jiān)聽的端口spec.ports[].targetPortintno需要轉發(fā)到 pod 的端口號spec.ports[].nodePortintno指定映射到物理機的端口號,這個時候需要 spec.type=NodePortspec.statusobjectno屬于外部均衡器,status 下面的都是 外部均衡器的配置了

Service 的名稱定義

對于 service 的對象名稱的定義也是需要遵循規(guī)范的

點我查看名稱定義

例如截一個官方說明的圖

關于 service 的端口

定義 service 的時候,我們可以定義 1 個端口,也可以定義 多個端口的

例如這樣的是 service 的 1 個端口 ,官方的案例是內部服務監(jiān)聽 80 端口,會轉發(fā)到 pod 的 9376 端口,用的是 tcp 協(xié)議

這樣的是 2 個端口,屬于 service 的多端口定義

例如我們的服務開了多個端口,這些端口是不能定義沖突的,我們必須要定義好每個端口的名稱,端口號,以及協(xié)議,不能有歧義,如下:

上述的 1 個端口和多個端口,都是 服務監(jiān)聽的端口號,都是作為服務端的,需要客戶端來訪問的

外部的 service

如果是我們的 service 需要訪問外部的一個服務,需要和外部進行一個連接,例如數據庫服務,或者訪問外部的一個集群的時候,我們需要如何寫我們的 service 呢?

我們可以通過在 yaml 中 創(chuàng)建一個 無 Label Selector 的 Service 實現

我們仔細看一下,上面官方寫的 1 個端口 和 多個端口的 yaml,都會使用 Label Selector 來指定一個 app,目的是為了運行起來之后能夠關聯到對應的 pod

例如這樣

那么我們來寫一個 無 Label Selector ?的服務吧

  • 無 Label Selector ?的 ?Service

apiVersion:?v1
kind:?Service
metadata:
??name:?xiaomotong-svc
spec:
??ports:
??-?protocol:?TCP
????port:?80
????targetPort:?80

寫完這個 service 發(fā)現,他不知道如何去找到 pod 的,那么我們可以寫一個 endpoints,名稱需要和 上面這個service 的名稱一致,這樣 endpoints 指定的 pod ,就可以被 上面這個service 訪問到了

  • 寫一個 Endpoints

apiVersion:?v1
kind:?Endpoints
metadata:
??name:?xiaomotong-svc
subsets:
-?addresses:
??-?IP:?10.253.33.3
??ports:
??-?port:?8080?

這樣寫,將 Endpoints 要和 上面的 service 就對應起來的, 感興趣的 xdm 可以在自己的 k8s 集群上面玩一玩, 此處寫的 subsets.addresses.IP 是一個能夠運行的 pod ip

今天就到這里,學習所得,若有偏差,還請斧正

歡迎點贊,關注,收藏

朋友們,你的支持和鼓勵,是我堅持分享,提高質量的動力

好了,本次就到這里

技術是開放的,我們的心態(tài),更應是開放的。擁抱變化,向陽而生,努力向前行。

我是阿兵云原生,歡迎點贊關注收藏,下次見~


Service 基礎的評論 (共 條)

分享到微博請遵守國家法律
东明县| 肇庆市| 隆安县| 门源| 富平县| 班玛县| 汽车| 鄯善县| 康马县| 全州县| 高雄市| 墨玉县| 涟水县| 郁南县| 徐汇区| 双柏县| 华容县| 交口县| 松阳县| 桂阳县| 义乌市| 五指山市| 博客| 南陵县| 平利县| 达拉特旗| 黄平县| 新竹市| 余姚市| 和平区| 瑞丽市| 马尔康县| 金阳县| 庄浪县| 镇康县| 博客| 莆田市| 贵州省| 富民县| 大安市| 高雄县|