kubernetes 资源清单定义入门

 k8s中的资源

什么叫资源?

k8s中所有的内容都抽象为资源, 资源实例化之后,叫做对象

在k8s中有哪些资源?

工作负载型资源(workload):

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

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

  •   ServiceDiscovery LoadBalance  Service Ingress, ...

配置与存储型资源

  • Volume(存储卷) CSI(容器存储接口,可以扩展各种各样的第三方存储卷)

特殊类型的存储卷:

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

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


集群级资源:

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

元数据型资源:

  • 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

  

 

猜你喜欢

转载自www.cnblogs.com/crazymagic/p/10995549.html
今日推荐