一:簡(jiǎn)介通過Service,可以為一組具有相同功能的容器應(yīng)用提供一個(gè)統(tǒng)一的入口地址,并將請(qǐng)求負(fù)載分發(fā)到后端各個(gè)應(yīng)用容器上,實(shí)現(xiàn)Pod的
負(fù)載均衡。
二:Service定義模版重要屬性說明1.spec.type Service的類型,指定Service的訪問方式,默認(rèn)值為ClusterIP.
a.ClusterIP: 虛擬的服務(wù)IP地址,該地址用于Kubernetes集群內(nèi)部的Pod訪問,在Node 上kube-proxy通過設(shè)置的Iptables規(guī)則進(jìn)行轉(zhuǎn)發(fā)。
b.NodePort: 使用宿主機(jī)的端口,使能夠訪問各Node的客戶端通過Node的IP地址和端口號(hào)就能訪問服務(wù)。
c.LoadBalancer: 使用外接負(fù)載均衡器完成到服務(wù)的負(fù)載分發(fā)
2.spec.sessionAffinity: 是否支持Session,可選值為ClientIP,默認(rèn)值為空,ClientIP表示將同一個(gè)客戶端的訪問請(qǐng)求都轉(zhuǎn)發(fā)到同一個(gè)后端Pod。
三:Service的基本用法1.通常用法,服務(wù)作為Pod的負(fù)載均衡器。目前的負(fù)載分發(fā)策略有:
a. RoundRobin: 輪詢模式,即輪詢將請(qǐng)求轉(zhuǎn)發(fā)到后端各個(gè)Pod上。
b.SessionAffinity: 基于客戶端IP地址進(jìn)行回話保持的模式。
2.多端口Service,有時(shí)候一個(gè)容器應(yīng)用也可能提供多個(gè)端口的服務(wù),那么在Service定義中也可以相應(yīng)地設(shè)置為將多個(gè)端口對(duì)應(yīng)到多個(gè)應(yīng)用服務(wù)。
-
apiVersion: v1
-
kind: Service
-
metadata:
-
name: webapp
-
spec:
-
ports:
-
- port: 8080
-
targetPort: 8080
-
name: web
-
- port: 8005
-
targetPort: 8005
-
name: management
3.外部服務(wù)Service
在某些環(huán)境中,應(yīng)用系統(tǒng)需要將一個(gè)外部數(shù)據(jù)庫作為后端服務(wù)進(jìn)行連接,或?qū)⒘硪粋€(gè)集群或Namespace中的服務(wù)作為服務(wù)的后端,這時(shí)可以通過創(chuàng)建一個(gè)無Label Selector的Service來實(shí)現(xiàn)(此時(shí)需要?jiǎng)?chuàng)建一個(gè)和該Service同名的Endpoint)。
-
apiVersion: v1
-
kind: Service
-
metadata:
-
name: MySQL-test
-
spec:
-
ports:
-
- port: 3306
-
apiVersion: v1
-
kind: Endpoints
-
metadata:
-
name: mysql-test
-
namespace: default
-
subsets:
-
- addresses:
-
- ip: 120.25.154.90
-
ports:
-
- port: 3306
4.Headless Service, 在某些應(yīng)用場(chǎng)景中,開放人員希望自己控制負(fù)載均衡的策略,不使用Service提供的默認(rèn)負(fù)載均衡的功能,或者應(yīng)用程序希望知道屬于同組的其他實(shí)例。 此種服務(wù)不為Service設(shè)置ClusterIP,僅通過Label Selector 找后端的Pod列表返回給調(diào)用的客戶端。
-
apiVersion: v1
-
kind: Service
-
metadata:
-
name: nginx
-
labels:
-
app: nginx
-
spec:
-
ports:
-
- port: 80
-
clusterIP: None
-
selector:
-
app: nginx
四:集群外部訪問Pod或Service的方法1.將容器應(yīng)用的端口號(hào)映射到物理機(jī)
a. 通過設(shè)置容器級(jí)別的hostPort,將容器應(yīng)用的端口映射到物理機(jī)上
-
apiVersion: v1
-
kind: Pod
-
metadata:
-
name: webapp
-
labels:
-
app: webapp
-
spec:
-
containers:
-
- name: webapp
-
image: tomcat
-
ports:
-
- containerPort: 8080
-
hostPort: 8081
b.通過設(shè)置Pod級(jí)別的hostNetwork=true,該P(yáng)od中所以容器的端口號(hào)都被直接映射到物理機(jī)上。
-
apiVersion: v1
-
kind: Pod
-
metadata:
-
name: webapp
-
labels:
-
app: webapp
-
spec:
-
hostNetwork: true
-
containers:
-
- name: webapp
-
image: tomcat
-
ports:
-
- containerPort: 8080
2.將Service的端口號(hào)映射到物理機(jī)
a.通過配置nodePort映射到物理機(jī),同時(shí)設(shè)置Service的類型為NodePort
-
apiVersion: v1
-
kind: Service
-
metadata:
-
name: nginx
-
labels:
-
app: nginx
-
spec:
-
type: NodePort
-
ports:
-
- port: 80
-
targetPort: 8080
-
nodePort: 8081
-
selector:
-
app: nginx
b.通過設(shè)置LoadBalancer映射到云服務(wù)商提供的LoadBalancer地址。
網(wǎng)站標(biāo)題:kubernetes實(shí)踐之四十三:Service詳解
當(dāng)前URL:http://vcdvsql.cn/article20/pegjjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、動(dòng)態(tài)網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、外貿(mào)網(wǎng)站建設(shè)、云服務(wù)器、App設(shè)計(jì)
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源:
創(chuàng)新互聯(lián)