很久沒有更新了,今天在接到一個部署任務時,要求在集羣中某幾個機器上部署,查了一下github,有這方面的相關文檔,翻譯過來記錄一下,有興趣的同窗也能夠直接去github看官方文檔node
單節點部署使用nodeName字段進行配置。在啓動的json/yaml文件中,pod的spec結構下增長字段:"nodeName":"{nodename}"
。git
咱們能夠在master上經過指令: kubectl get nodes
看到集羣中的slaver節點的nodeName和他們的標籤,狀態:github
在建立pod或rc時,加入nodeName便可以指定將pod部署在指定的節點上,上圖爲例,json文件如:shell
{ "apiVersion": "v1", "kind": "ReplicationController", "metadata": { "labels": { "name": "benchcpu" }, "name": "benchcpu-controller" }, "spec": { "replicas": 3, "selector": { "name": "benchcpu" }, "template": { "metadata": { "labels": { "name": "benchcpu" } }, "spec": { "containers": [ { "image": "registry.hub.huangyang.com.cn/sysbench:0.5shell", "name": "sysbench", "command":[ "./todo.sh", "--num-threads=1 --forced-shutdown=1 --max-time=60 --test=cpu --cpu-max-prime=10000000 run ", "0" ] } ], "nodeName": "10.126.72.31" } } } }
那麼這個名爲bench的replication controller 就會將全部的pod都部署在10.126.72.31上。json
將slaver節點機器按照它們的labels進行歸類。使用"nodeSelector"進行選擇。api
管理node的標籤
使用kubectl label nodes {nodename} {key=value}
進行標籤的添加。如:ide
kubectl label nodes 10.126.72.31 points=test
會給10.126.72.31這個節點添加一個標籤:points=testui
咱們給31.32兩臺機器同時加上這個標籤。spa
使用nodeSelector選擇器
相似於上文的nodeName
,在建立資源的json/yaml文件中使用nodeSelector
字段,如:翻譯
{ "apiVersion": "v1", "kind": "ReplicationController", "metadata": { "labels": { "name": "benchcpu" }, "name": "benchcpu-controller" }, "spec": { "replicas": 3, "selector": { "name": "benchcpu" }, "template": { "metadata": { "labels": { "name": "benchcpu" } }, "spec": { "containers": [ { "image": "registry.hub.huangyang.com.cn/sysbench:0.5shell", "name": "sysbench", "command":[ "./todo.sh", "--num-threads=1 --forced-shutdown=1 --max-time=60 --test=cpu --cpu-max-prime=10000000 run ", "0" ] } ], "nodeSelector":{ "points":"test" } } } } }
便可將pod指定到31或32上部署運行。
不管是nodeName,nodeSelector,仍是下文提到的 node affinity,針對他們的過濾條件,即便目前沒有知足過濾條件的node,master也會指派至少一個node去部署pod,由於選擇器的意思是選擇「能夠被分配到的節點」,而不是指定「不可被分配到的節點」。
1.2即將出現功能更強大的選擇器,可是目前已知,能夠實現如: label:"points":"test"and"test2" 的多項選擇(也就是選擇label中"points"的value爲"test" 或 "test2", 而且不止是"and",而是與或非的聯合判斷式),node affinity最終將會取代 node Selector。