apiVersion: v1
kind: Pod
可以看到由kind、apiVersion、metadata、spec和status等几个部分组成。
1 kind
3 metadata
资源对象的元数据定义,是集合类的元素类型,包含一组由不同名称定义的属性- namespace:对象所属的命名空间,默认为“default”的系统命名空间
- name:对象的名字,在一个命名空间中名字应具备唯一性
- uid:系统为每个对象生成的唯一ID
此外,每种对象还应该包含以下几个重要元数据。
- labels:map标签,通常用于标签选择器(Label Selector),用来匹配目标对象
- annotations:用户可定义的“注解”,map,被Kubernetes内部进程或者某些外部工具使用,用于存储和获取关于该对象的特定元数据。
- resourceVersion:用于识别该资源内部版本号的字符串,在用于Watch操作时,可以避免在GET操作和下一次Watch操作之间造成的信息不一致,客户端可以用它来判断资源是否改变。该值应该被客户端看作不透明,且不做任何修改就返回给服务端。
- creationTimestamp:记录创建对象时的时间戳
- deletionTimestamp:记录删除对象时的时间戳
- selfLink:通过API访问资源自身的URL,例如一个Pod的link可能是/api/v1/namespaces/ns36aa8455/pods/sc-cluster-test-1-6bc58d44d6-r8hld
metadata:
creationTimestamp: 2018-06-12T03:02:29Z
generateName: sc-cluster-test-1-6bc58d44d6-
labels:
kubeapp: sc-cluster-test-1
pod-template-hash: "2671480082"
name: sc-cluster-test-1-6bc58d44d6-r8hld
namespace: ns36aa8455
ownerReferences:
- apiVersion: extensions/v1beta1
blockOwnerDeletion: true
controller: true
kind: ReplicaSet
name: sc-cluster-test-1-6bc58d44d6
uid: 2d9b9fff-6dec-11e8-9290-005056839655
resourceVersion: "6674931"
selfLink: /api/v1/namespaces/ns36aa8455/pods/sc-cluster-test-1-6bc58d44d6-r8hld
uid: 0b0699db-6ded-11e8-9290-005056839655
4 spec
描述的主体部分都在spec里给出,持久化到etcd中保存,系统通过spec的描述来创建或更新对象,以达到用户期望的状态
spec:
containers:
- image: 10.12.40.217/paas-k8s/sc-cluster:latest
imagePullPolicy: Always
name: sc-cluster-test-1
ports:
- containerPort: 20888
name: 6f71997b94
protocol: TCP
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 500m
memory: 1Gi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /data
name: sc-cluster-test-10
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: default-token-jtn4n
readOnly: true
dnsPolicy: ClusterFirst
nodeName: node7
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: default
serviceAccountName: default
terminationGracePeriodSeconds: 30
volumes:
- hostPath:
path: /data
type: ""
name: sc-cluster-test-10
- name: default-token-jtn4n
secret:
defaultMode: 420
secretName: default-token-jtn4n
5 status
对象在系统中的当前状态信息以Pod为例,Pod的status信息主要包括conditions、containerStatuses、hostIP、phase、podIP、startTime等
- phase:对象所处的生命周期阶段,Pending(创建中)Running Active(正在运行中)Terminated(已终结)
- condition:表示条件,由条件类型和状态值组成,目前仅有一种条件类型Ready,对应的状态值可以为True、False或Unknown。一个对象可以具备多种condition,而condition的状态值也可能不断发生变化,condition可能附带一些信息,例如最后的探测时间或最后的转变时间。
status:
conditions:
- lastProbeTime: null
lastTransitionTime: 2018-06-12T03:04:52Z
status: "True"
type: Initialized
- lastProbeTime: null
lastTransitionTime: 2018-06-12T03:04:53Z
status: "True"
type: Ready
- lastProbeTime: null
lastTransitionTime: 2018-06-12T03:02:29Z
status: "True"
type: PodScheduled
containerStatuses:
- containerID: docker://65bc9886543f835e65be8afb9e7a12772ffd739f9035e33efeb7d3accb53ca54
image: 10.12.40.217/paas-k8s/sc-cluster:latest
imageID: docker-pullable://10.12.40.217/paas-k8s/sc-cluster@sha256:74e7b431c7bcac48ebfd0ee5b76bb75c10400dbf206f27fe1a0fe2a4cd1888c2
lastState: {}
name: sc-cluster-test-1
ready: true
restartCount: 0
state:
running:
startedAt: 2018-06-12T03:04:53Z
hostIP: 10.12.51.172
phase: Running
podIP: 10.233.100.159
qosClass: Burstable
startTime: 2018-06-12T03:04:52Z