k8s nodeName與nodeSelector的簡單應用(轉)

原文:https://blog.csdn.net/xhredeem/article/details/127687465

作者:

來源:CSDN

默認情況下,k8s master 管理節點有污點標籤,默認是NoSchedule,即不會被調度。新創建的pod 會隨機選擇除了master管理節點的以外的node工作節點上創建。如果想要使某個新建pod在某個node節點創建,可以使用nodeName或者nodeSelector兩種方式

nodeName

這種方式適合某個pod在某臺主機上創建。以nginx爲例

[root@matser-0001 test]# kubectl apply -f nginx.pod.nodeName.example.yml

 

apiVersion: apps/v1                     #api版本,沒什麼可說的
kind: Deployment                        # 資源類型爲Deployment
metadata:                              #元數據,即資源的描述
  name: nginx-deployment                #Deployment資源的名稱, 可以自定義
  labels:                               #Deployment的標籤定義
    app: nginx                          #Deployment的標籤
spec:                                   #Deployment資源對象的核心信息
  replicas: 4                           #定義pod副本的數量爲4
  selector:                             #定義標籤選擇器
    matchLabels:                        #定義匹配標籤
      app: nginx                        #定義匹配的標籤具體是誰
  template:                             #定義pod的模板
    metadata:                           #定義pod的元數據,即pod的描述信息
      labels:                           #定義pod的標籤
        app: nginx                      #pod標籤的具體值
    spec:                               #pod資源對象的核心信息
      containers:                      #定義容器資源
      - name: nginx                    #容器名
        image: nginx                 #容器使用的鏡像
        imagePullPolicy: IfNotPresent    #鏡像拉取策略,默認是Always
        ports:                           #容器端口定義
        - containerPort: 80              #暴露容器端口
      nodeName: node-0002                  # 選擇在主機名爲node-0002的主機上創建pod

結果顯示在node-0002上創建了4個nginx pod

 

nodeSelector

這種方式適合給打上特定標籤的node節點上創建pod。還是以nginx爲例,給node-0001標籤app=nginx

[root@matser-0001 test]# kubectl label nodes node-0001 app=nginx

[root@matser-0001 test]# kubectl

apply -f nginx.pod.nodeSelector.example.yml

 

apiVersion: apps/v1                     #api版本,沒什麼可說的
kind: Deployment                        # 資源類型爲Deployment
metadata:                               #元數據,即資源的描述
  name: nginx-deployment                #Deployment資源的名稱, 可以自定義
  labels:                               #Deployment的標籤定義
    app: nginx                          #Deployment的標籤
spec:                                   #Deployment資源對象的核心信息
  replicas: 4                           #定義pod副本的數量爲4
  selector:                             #定義標籤選擇器
    matchLabels:                        #定義匹配標籤
      app: nginx                        #定義匹配的標籤具體是誰
  template:                             #定義pod的模板
    metadata:                           #定義pod的元數據,即pod的描述信息
      labels:                           #定義pod的標籤
        app: nginx                      #pod標籤的具體值
    spec:                               #pod資源對象的核心信息
      containers:                      #定義容器資源
      - name: nginx                    #容器名
        image: nginx                 #容器使用的鏡像
        imagePullPolicy: IfNotPresent    #鏡像拉取策略,默認是Always
        ports:                           #容器端口定義
        - containerPort: 80              #暴露容器端口
      nodeSelector:                      #定義節點標籤選擇
        app: nginx                       # 選擇在打了標籤app=nginx的主機上創建pod

結果顯示pod在點node-0001上創建

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章