定义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不提供
command
或args
使用Container,则使用Docker镜像中的cmd或者ENTRYPOINT。如果Pod提供
command
但不提供
args
,则仅使用提供command
的。将忽略Docker镜像中定义EntryPoint和Cmd。- 如果Pod中仅提供
args
,则args
将作为参数提供给Docker镜像中EntryPoint。
- 如果提供了
command
和args
,则Docker镜像中的ENTRYPOINT和CMD都将不会生效,Pod中的args
将作为参数给command运行
。
标签
key=value
- key:只能使用 字母 数字 _ - . (只能以字母数字开头,不能超过63给字符)
- value: 可以为空 只能使用 字母 数字开头
#显示标签$ kubectl get pods --show-labelsNAME ????????????????????READY ????STATUS ???RESTARTS ??AGE ??????LABELSjdk-94bcfc779-fs2cl ?????1/1 ??????Running ??0 ?????????8d ???????pod-template-hash=506797335,workload.user.cattle.io/workloadselector=deployment-default-jdkmysql-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 appNAMESPACE ????????NAME ???????????????????????????????????READY ????STATUS ???????RESTARTS ??AGE ??????APPcattle-alerting ??alertmanager-649c5fc4d7-4hp9q ??????????2/2 ??????Running ??????0 ?????????1d ???????alertmanagercattle-system ????cattle-cluster-agent-6d7c847588-f6cmt ??1/1 ??????Running ??????2 ?????????28d ??????cattle-cluster-agentcattle-system ????cattle-node-agent-9m2ls ????????????????1/1 ??????Running ??????2 ?????????28d ??????cattle-agentcattle-system ????cattle-node-agent-9ngfh ????????????????1/1 ??????Running ??????0 ?????????12d ??????cattle-agentcattle-system ????cattle-node-agent-j862c ????????????????1/1 ??????Running ??????1 ?????????12d ??????cattle-agentcattle-system ????cattle-node-agent-s8s75 ????????????????1/1 ??????Running ??????1 ?????????12d ??????cattle-agent#-l 过滤那些pod具有app标签$ kubectl get pods --all-namespaces ?-l appNAMESPACE ????????NAME ???????????????????????????????????READY ????STATUS ???RESTARTS ??AGEcattle-alerting ??alertmanager-649c5fc4d7-4hp9q ??????????2/2 ??????Running ??0 ?????????1dcattle-system ????cattle-cluster-agent-6d7c847588-f6cmt ??1/1 ??????Running ??2 ?????????28dcattle-system ????cattle-node-agent-9m2ls ????????????????1/1 ??????Running ??2 ?????????28dcattle-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不同的是,他不能挑选资源对象,仅用于为对象提供元数据
Kubernetes之Pod 控制器
原文地址:https://www.cnblogs.com/xzkzzz/p/9519489.html