Kubernetes之Pod 控制器

时间:2024-01-09 13:20:14

定义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 / Running 8d pod-template-hash=,workload.user.cattle.io/workloadselector=deployment-default-jdk
mysql-5ffdf958d9-7qdnv / Running 3d pod-template-hash=,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 / Running 1d alertmanager
cattle-system cattle-cluster-agent-6d7c847588-f6cmt / Running 28d cattle-cluster-agent
cattle-system cattle-node-agent-9m2ls / Running 28d cattle-agent
cattle-system cattle-node-agent-9ngfh / Running 12d cattle-agent
cattle-system cattle-node-agent-j862c / Running 12d cattle-agent
cattle-system cattle-node-agent-s8s75 / Running 12d cattle-agent #-l 过滤那些pod具有app标签 $ kubectl get pods --all-namespaces -l app
NAMESPACE NAME READY STATUS RESTARTS AGE
cattle-alerting alertmanager-649c5fc4d7-4hp9q / Running 1d
cattle-system cattle-cluster-agent-6d7c847588-f6cmt / Running 28d
cattle-system cattle-node-agent-9m2ls / Running 28d
cattle-system cattle-node-agent-9ngfh / Running 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不同的是,他不能挑选资源对象,仅用于为对象提供元数据