回顾
资源配置清单
自主式Pod资源
资源的清单格式
一级字段: apiVersion(group/version), kind, metadata(name, namespace, kind, metadata(name, namespace, labelds, annotations, ...), spec, status(只读))
Pods资源:
spec.containers <[]object>
- name <string>
iamge <string>
imagePullPolicy <string>
Always, Never, IfNotPresent
修改镜像中的默认应用:
commands, args
标签:
key=value
key: 字母, 数字, _, -, .
value: 可以为空,只能为字母数字开头及结尾,中间可使用
标签选择器:
等值关系的标签选择器: =, ==, !=,
集合关系的标签选择器:
KEY IN [VALUE1, VALUE2, ...]
KEY NOTIN [VALUE1, VALUE2, ...]
KEY
!KEY
许多资源支持内嵌字段定义其使用的标签选择器:
matchLabels: 直接给定键值
matchExpressions: 基于给定的表达式来定义使用标签选择器, (key: "KEY", operator: "OPERATOR", values:[VAL1, VAL2, VAL3...])
操作符:
In, NotIn: values字段的值必须为非空列表;
Exists, NotExists: values字段的值必须为空列表;
nodeSelector <map|string|string>
节点标签选择器
nodeName <string>
annotations:
与label的区别是,不能用于挑选资源对象,仅用于为对象提供"元数据"
Pod的生命周期:
状态: pending, Running, Failed,Succeeded, Unknown
创建Pod:
Pod生命周期中的重要行为:
1. 初始化容器
2. 容器探测 liveness readliness
restartPolicy:
1. Always, OnFailure, Never, Default to Always
配置文件
apiVersion: v1
kind: Pod
metadata:
name: pod-demo
namespace: default
labels:
app: myapp
tier: frontend
annotations:
sky.com/create.by: "cluster admin"
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
ports:
- name: http
containerPort: 80
name: https
containerPort: 443
- name: busybox
image: busybox:latest
imagePullPolicy: IfNotPresent
command:
- "/bin/sh"
- ".c"
- "sleep 3600"
nodeSelector:
disktype: ssd
应用实例
-
示例1, 显示拥有app标签的pods,
kubectl get pods -l app --show-labels
-
示例2, 显示多标签的pods。显示拥有app, run标签的pods。
kubectl get pods -l app,run
-
示例3, 给pods打标签,
kubectl label pods pod-demo release=canary
kubectl get pods -l app --show-label
查看已打得标签
-
示例4, 更改pods的标签,
kubectl label pods pod-demo release=stable --overwrite
-
示例5, 标签选择器,查看pods标签是stable的pods
kubectl get pods release=stable --show-labels
-
示例6, 查看拥有release标签的pods,
kubectl label pods nginx-deploy-5b59***-*** release=cannary
-
示例7, 查看release标签是app的pods,
kubectl get pods -l release=stable
-
示例8, 查看release标签是stable, app标签是myapp的pods,
kubectl get pods -l release=stable,app=myapp
-
示例9, 查看release标签是否在集合[cannary, beta, alpha]中,
kubectl get pods -l "release in (canary, beta, alpha)"
-
示例10, 给磁盘类型打标签,
kubectl label nodes node01.magedu.com disktype=ssd