kube-proxy

service是一組pod的服務(wù)抽象,相當(dāng)于一組pod的LB,負(fù)責(zé)將請(qǐng)求分發(fā)給對(duì)應(yīng)的pod。service會(huì)為這個(gè)LB提供一個(gè)IP,一般稱為cluster IP。
kube-proxy的作用主要是負(fù)責(zé)service的實(shí)現(xiàn),具體來說,就是實(shí)現(xiàn)了內(nèi)部從pod到service和外部的從node port向service的訪問。

舉個(gè)例子,現(xiàn)在有podA,podB,podC和serviceAB。serviceAB是podA,podB的服務(wù)抽象(service)。
那么kube-proxy的作用就是可以將pod(不管是podA,podB或者podC)向serviceAB的請(qǐng)求,進(jìn)行轉(zhuǎn)發(fā)到service所代表的一個(gè)具體pod(podA或者podB)上。
請(qǐng)求的分配方法一般分配是采用輪詢方法進(jìn)行分配。

另外,kubernetes還提供了一種在node節(jié)點(diǎn)上暴露一個(gè)端口,從而提供從外部訪問service的方式。

比如我們使用這樣的一個(gè)manifest來創(chuàng)建service

apiVersion: v1kind: Servicemetadata:  labels:    name: mysql    role: service  name: mysql-servicespec:  ports:    - port: 3306      targetPort: 3306      nodePort: 30964  type: NodePort  selector:    mysql-service: "true"

他的含義是在node上暴露出30964端口。當(dāng)訪問node上的30964端口時(shí),其請(qǐng)求會(huì)轉(zhuǎn)發(fā)到service對(duì)應(yīng)的cluster IP的3306端口,并進(jìn)一步轉(zhuǎn)發(fā)到pod的3306端口。

網(wǎng)友評(píng)論