【kubernetes/k8s概念】pod 的yaml解释

 
 
apiVersion: v1
kind: Pod

可以看到由kind、apiVersion、metadata、spec和status等几个部分组成。

1 kind

kind表明对象。

对象(objects):例如Pod、RC、Service、Namespace及Node等

2 apiVersion

表明API的版本号

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


猜你喜欢

转载自blog.csdn.net/zhonglinzhang/article/details/80674667