Kubernetes之Pod 控制器


定義Pod的常用資源

 pods.spec.containers

- name    <string>   #containers 的名字

  image    <string>  #鏡像地址

  imagePullPolicy    <string>  #如果標簽是latest  就是Always(總是下載鏡像)  IfNotPresent(先看本地是否有此鏡像,如果沒有就下載) Never (就是使用本地鏡像)

  ports    <[]Object>  #是給對象列表  可以暴露多個端口  可以對每個端口的屬性定義 例如:(名稱(可后期調用)端口號  協議  暴露在的地址上) 暴露端口只是提供額外信息的,不能限制系統是否真的暴露

   - containerPort 容器端口

     hostIP  主機地址(基本不會使用)

     hostPort 節點端口

     name 名稱

     protocol  (默認是TCP)

  args  <[]string>   傳遞參數給command 相當於docker中的CMD

    command    <[]string> 相當於docker中的ENTRYPOINT (參考地址

  • 如果Pod不提供commandargs使用Container,則使用Docker鏡像中的cmd或者ENTRYPOINT。

  • 如果Pod提供command但不提供args,則僅使用提供 command的。將忽略Docker鏡像中定義EntryPoint和Cmd。

  • 如果Pod中僅提供args,則args將作為參數提供給Docker鏡像中EntryPoint
  • 如果提供了commandargs,則Docker鏡像中的ENTRYPOINT和CMD都將不會生效,Pod中的args將作為參數給command運行

 標簽

key=value

  • key:只能使用 字母 數字  _  -  . (只能以字母數字開頭,不能超過63給字符)
  • value: 可以為空 只能使用 字母 數字開頭
#顯示標簽
$ kubectl get pods --show-labels
NAME                     READY     STATUS    RESTARTS   AGE       LABELS
jdk-94bcfc779-fs2cl      1/1       Running   0          8d        pod-template-hash=506797335,workload.user.cattle.io/workloadselector=deployment-default-jdk
mysql-5ffdf958d9-7qdnv   1/1       Running   1          3d        pod-template-hash=1998951485,workload.user.cattle.io/workloadselector=deployment-default-mysql

#-L 顯示具有app標簽的pod 並打印app標簽下的值
$ kubectl get pods --all-namespaces  -L app
NAMESPACE         NAME                                    READY     STATUS        RESTARTS   AGE       APP
cattle-alerting   alertmanager-649c5fc4d7-4hp9q           2/2       Running       0          1d        alertmanager
cattle-system     cattle-cluster-agent-6d7c847588-f6cmt   1/1       Running       2          28d       cattle-cluster-agent
cattle-system     cattle-node-agent-9m2ls                 1/1       Running       2          28d       cattle-agent
cattle-system     cattle-node-agent-9ngfh                 1/1       Running       0          12d       cattle-agent
cattle-system     cattle-node-agent-j862c                 1/1       Running       1          12d       cattle-agent
cattle-system     cattle-node-agent-s8s75                 1/1       Running       1          12d       cattle-agent

#-l 過濾那些pod具有app標簽

$ kubectl get pods --all-namespaces  -l app
NAMESPACE         NAME                                    READY     STATUS    RESTARTS   AGE
cattle-alerting   alertmanager-649c5fc4d7-4hp9q           2/2       Running   0          1d
cattle-system     cattle-cluster-agent-6d7c847588-f6cmt   1/1       Running   2          28d
cattle-system     cattle-node-agent-9m2ls                 1/1       Running   2          28d
cattle-system     cattle-node-agent-9ngfh                 1/1       Running   0          12d

#打標簽
$  kubectl label pod jdk-94bcfc779-fs2cl app=dev

#修改標簽 --overwrite
$ kubectl label pod jdk-94bcfc779-fs2cl app=test --overwrite

 

標簽選擇器

  • 等值關系標簽選擇器:=, == , !=  (kubectl get pods -l app=test,app=dev)
  • 集合關系標簽選擇器: KEY in (v1,v2,v3), KEY notin (v1,v2,v3)   !KEY (kubectl get pods -l "app in (test,dev)")

許多資源支持內嵌字段

  • matchLabels: 直接給定建值
  • matchExpressions: 基於給定的表達式來定義使用標簽選擇器,{key:"KEY",operator:"OPERATOR",values:[V1,V2,....]}
  • 操作符: in notin:Values字段的值必須是非空列表  Exists NotExists:  Values字段的值必須是空列表

節點選擇器

nodeSelector    <object>

 

元數據中的annotations 資源注解

annotations    <object>  與labels不同的是,他不能挑選資源對象,僅用於為對象提供元數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM