②. 描述k8s的对象
①. 如何会写任意资源的yaml,比如Pod
(kubectl run my-nginx666 --image=nginx #启动一个Pod)
kubectl get pod my-nginx666 -oyaml集群中挑一个同类资源,获取出他的yaml
kubectl run my-tomcat --image=tomcat --dry-run -oyaml 干跑一遍
②. 当您在Kubernetes中创建一个对象时,您必须提供
该对象的spec字段,通过该字段描述您期望的目标状态,该对象的一些基本信息,例如名字
可以使用 kubectl 命令行创建对象,也可以编写.yaml 格式的文件进行创建
[root@k8smaster ~]# kubectl run my-tomcat --image=tomcat --dry-run -oyaml # dry-run过期了,可以使用dry-run=client [root@k8smaster ~]# kubectl api-resources | grep pod # tomcat干跑 #(1). apiVersion和kind称为typeMeta(基本信息) #(2). metadata成为元数据,ObjectMeta apiVersion: v1 # 同一个资源有可能有多个版本。看 kubectl api-resources提示的 kind: Pod # 资源类型 kubectl api-resources:可以获取到所有资源 metadata: # 每一个资源定义一些元数据信息 labels: run: my-tomcat name: my-tomcat # 指定资源的名字 spec: # 资源的规格(镜像名、镜像的环境变量信息等等) containers: # 指定要启动一个什么样的容器 - image: tomcat # 容器的镜像 name: my-tomcat # 容器的名字 resources: {} # 容器的资源信息(后面详解) dnsPolicy: ClusterFirst # dns的策略信息(后面详解) restartPolicy: Always # 以上是资源的完整规格描述部分 以上是我们必须会编写的 # status不用我们写,是k8s集群实时更新的状态信息,只要资源变化,kubelet会请求api-server保存最新的资源状态信息 status: {}
③. 在想要创建的Kubernetes对象对应的.yaml文件中,需要配置如下的字段(必须字段)
apiVersion:创建该对象所使用的Kubernetes API的版本
kind:想要创建的对象的类别
metadata: 用于唯一确定该对象的元数据:包括name和namespace,如果namespace为空,则默认值为default
spec:你所期望的该对象的状态
不同类型的 Kubernetes,其spec对象的格式不同(含有不同的内嵌字段),通过API手册可以查看 Kubernetes对象的字段和描述。例如,假设您想了解Pod的spec定义,可以在这里找到,Deployment的spec定义可以在这里找到