kubernetes 资源清单定义入门

 k8s中的资源

什么叫资源?api

k8s中全部的内容都抽象为资源, 资源实例化以后,叫作对象app

在k8s中有哪些资源?

工做负载型资源(workload):负载均衡

  • Pod ReplicaSet Deployment StatefulSet DaemonSet Job CronJob (ReplicationController在v1.11版本被废弃)

服务发现及负载均衡型资源:frontend

  •   ServiceDiscovery LoadBalance  Service Ingress, ...

配置与存储型资源ui

  • Volume(存储卷) CSI(容器存储接口,能够扩展各类各样的第三方存储卷)

特殊类型的存储卷:spa

  • ConfigMap(当配置中心来使用的资源类型)Secret(保存敏感数据) DownwardAPI(把外部环境中的信息输出给容器)

以上这些资源都是配置在名称空间级别日志


集群级资源:对象

  • Namespace Node Role ClusterRole RoleBinding(角色绑定) ClusterRoleBinding(集群角色绑定)

元数据型资源:blog

  • HPA(Pod水平扩展) PodTemplate(Pod模板,用于让控制器建立Pod时使用的模板) LimitRange(用来定义硬件资源限制的)

资源清单

什么是资源清单

在k8s中,通常使用yaml格式的文件来建立符合咱们预期指望的pod,这样的yaml文件咱们通常称为资源清单接口

资源清单的格式

apiVersion: group/apiversion:   若是没有给定group名称,那么默认为croe,可使用kubectl api-versions 获取当前k8s版本上全部的apiVersion版本信息(每一个版本可能不一样)

kind:  资源类别

metadata: 资源元数据

  name

  namespace #k8s自身的namespace

  lables

     annotations #主要目的是方便用户阅读查找

spec:指望的状态(disired state)

status:当前状态,本字段有kubernetes自身维护,用户不能去定义

配置清单主要有五个一级字段,其中status用户不能定义,有k8s自身维护

获取资源的apiVersion版本及资源配置的帮助

 1 获取apiVersion版本信息

[root@k8s-master01 ~]# kubectl api-versions 
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
apps/v1beta1
apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
batch/v1
......(如下省略)

 

2)获取资源的apiVersion版本信息  

[root@k8s-master01 ~]# kubectl explain pod
KIND:     Pod
VERSION:  v1
.....(如下省略)
[root@k8s-master01 ~]# kubectl explain Ingress
KIND:     Ingress
VERSION:  extensions/v1beta1

能够看到出来,不一样的资源可能属于不一样的apiVersion版本  

 字段配置的格式

 

帮助信息中常见格式以下:

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

建立一个配置清单实例

pod-demo.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-demo
  namespace: default
  labels:
    app: myapp
    tier: frontend
spec:
  containers:
  - name: myapp
    image: ikubernetes/myapp:v1
  - name: busybox
    image: busybox:latest
    command:
    - "/bin/sh"
    - "-c"
    - "sleep 3600"

 

根据资源清单建立pod

kubectl create -f pod-demo.yaml

  

查看建立的 pod

kubectl get pod

获取刚建立pod-demo的详细信息:

kubectl describe pods pod-demo

  

查询 pods 中的一个容器的日志记录

kubectl logs pod-demo -c myapp

 

  

删除本身的建立:

kubectl delete -f pod-demo.yaml
相关文章
相关标签/搜索