kube-proxy
service是一組pod的服務抽象,相當于一組pod的LB,負責將請求分發(fā)給對應的pod。service會為這個LB提供一個IP,一般稱為cluster IP。
kube-proxy的作用主要是負責service的實現(xiàn),具體來說,就是實現(xiàn)了內(nèi)部從pod到service和外部的從node port向service的訪問。
舉個例子,現(xiàn)在有podA,podB,podC和serviceAB。serviceAB是podA,podB的服務抽象(service)。
那么kube-proxy的作用就是可以將pod(不管是podA,podB或者podC)向serviceAB的請求,進行轉(zhuǎn)發(fā)到service所代表的一個具體pod(podA或者podB)上。
請求的分配方法一般分配是采用輪詢方法進行分配。
另外,kubernetes還提供了一種在node節(jié)點上暴露一個端口,從而提供從外部訪問service的方式。
比如我們使用這樣的一個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端口。當訪問node上的30964端口時,其請求會轉(zhuǎn)發(fā)到service對應的cluster IP的3306端口,并進一步轉(zhuǎn)發(fā)到pod的3306端口。