2016.10.17 yaml文件裏的labels和Pod、RC、Service的對應關係

在看kubernetes的例子時,出現了一個疑問。redis

Pod、RC、Service的yaml文件裏,都出現了labels,還有labelSelector。有些不太清楚,所以就這點來學習下。後端

 
接上文:
3.啓動服務器
即便只有一個pod,也要使用service。service起到負載均衡器的做用,經過proxy和selector決定服務請求傳遞給後端的哪一個pod。而後對外提供固定的IP和port,因此即便redis master pod遷移變化也沒有影響。
(1)redis master service
附件略。
註釋裏的,和redis-master的label對應,是指哪一個labels?
 
 
如今出現labels的地方:
redis-master-controller.yaml
 
redis-master-service.yaml
 
因此到底是和誰的labels對應?
 
RC中的label:
參看書《kubernetes的權威指南》的p58.
被RC管控的全部pod實例,都是經過RC裏定義的pod模板建立的。
改模板包含pod的標籤屬性,同時RC裏包含一個標籤選擇器label selector,它的值代表了該RC所關聯的pod。
RC會保證每一個由它建立的pod都包含與它的selector label匹配的label。
 
因此說,RC裏的selector與模板裏的label是一致的咯?是的。
但是RC本身的label又是什麼?
一樣是p58,例子顯示RC本身的label不與selector與template下的label相同。
 
service中的label:
參看書《kubernetes權威指南》的p65.
service.yaml文件和RC.yaml文件同樣,都有兩個和label相關的東西。
一個是本身的label,一個是selector。
selector中的標籤和某些pod的label相同,表示service將這些pod歸入了集合。對他們進行一些port的設置。
 
因此這段話的意思是:
 
service將全部標籤爲redis-master(selector的值)的pod做爲一個集合來處理。將這個集合裏的全部pod的6379端口(port)映射到節點本地的6379端口(targetport)。
而且service還會得到一個clusterIP。
其實service能夠看作pod的一個小組,這個小組裏的全部pod有共同的標籤。
 
綜上所述:
有三個值。
(1)RC的label,與他人無關。
(2)service的label,與他人無關。
(3)pod的label,將會出現三次。RC的template裏有個label,以及RC的selector值,Service的selector值。
template裏的label=redis,表示rc建立的pod標籤爲redis。
RC和service裏的selector=redis,表示rc和service將會管理標籤爲redis的pod。
相關文章
相關標籤/搜索