K8S-资源清单

1.1 资源清单格式

1、基本介绍

资源清单有5个字段组成:apiVersionkindmetadataspecstatus

apiVersion: group/apiversion # 如果没有给定 group 名称,那么默认为 core,可以使用
kubectl apiversions # 获取当前 k8s 版本上所有的 apiVersion 版本信息(每个版本可能不同)
kind: #资源类别
metadata: #资源元数据
 name
 namespace
 lables
 annotations # 主要目的是方便用户阅读查找
spec: # 期望的状态(disired state)
status:# 当前状态,本字段有 Kubernetes 自身维护,用户不能去定义

2、使用kubectl命令可以查看apiVersion的各个版本信息

[root@k8s-master01 pods]# kubectl api-versions 
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
.........
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1
[root@k8s-master01 pods]# 

3、字段配置格式类型

资源清单中大致可以分为以下类型

apiVersion <string> #表示字符串类型
metadata <Object> #表示需要嵌套多层字段
labels <map[string]string> #表示由k:v组成的映射
finalizers <[]string> #表示字串列表
ownerReferences <[]Object> #表示对象列表
hostPID <boolean> #布尔类型
priority <integer> #整型
name <string> -required- #如果类型后面接 -required-,表示为必填字段

1.2 pod生命周期

1、环境所需要镜像

docker pull busybox:1.32.0

K8S-资源清单_第1张图片

2、注意事项:

  • readiness探测成功后,Pod才会改变成Ready或者Running等状态!!
  • Liveness探测主容器已经损坏,不能正常工作,就会执行相应的策略!!

1.2.1 深入理解initC

1、initC基本特点

  • initC总是运行到成功完成为止,每个initC容器都必须在下一个initC启动之前成功完成。
  • 如果initC容器运行失败,K8S集群会不断的重启该pod,直到initC容器成功为止。
  • 如果pod对应的restartPolicynever,它就不会重新启动。

2、在k8sdemo01工程创建initcpod.yml文件

apiVersion: v1
kind: Pod
metadata:
  name: initcpod-test
  labels:
    app: initcpod-test
spec:
  containers:
    - name: initcpod-test #相位
      image: busybox:1.32.0
      imagePullPolicy: IfNotPresent
      command: ['sh','-c','echo The app is running! && sleep 3600']
  initContainers:
    - name: init-myservice
      image: busybox:1.32.0
      imagePullPolicy: IfNotPresent
      command: ['sh','-c','until nslookup myservice; do echo waitting for myservice; sleep 2; done;']
    - name: init-mydb
      imagePullPolicy: IfNotPresent
      image: busybox:1.32.0
      command: ['sh','-c','until nslookup mydb; do echo waitting for mydb; sleep 2; done;']
  restartPolicy: Always

3、获取节点

[root@k8s-master01 pods]# ls
initcpod.yml 
[root@k8s-master01 pods]# kubectl apply -f initcpod.yml 
pod/initcpod-test created
[root@k8s-master01 pods]# kubectl get pod
NAME            READY   STATUS     RESTARTS   AGE
initcpod-test   0/1     Init:1/2   0          22s
[root@k8s-master01 pods]# kubectl get pod -o wide
NAME            READY   STATUS     RESTARTS   AGE   IP             NODE         NOMINATED NODE   READINESS GATES
initcpod-test   0/1     Init:1/2   0          38s   10.81.85.228   k8s-node01   <none>           <none>
[root@k8s-master01 pods]# 

4、在k8sdemo01工程创建initcservice1.ymlinitcservice2.yml文件

initcservice1.yml

apiVersion: v1
kind: Service
metadata:
  name: myservice
spec:
  selector:
    app: myservice
  ports:
    - port: 80
      targetPort: 9376
      protocol: TCP

initcservice2.yml

你可能感兴趣的:(#,K8S)