zoukankan      html  css  js  c++  java
  • 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
    

      

     

  • 相关阅读:
    [洛谷P2783]有机化学之神偶尔会做作弊
    %你赛题解
    TCP协议中的三次握手和四次挥手(图解)
    堆,栈,内存
    java原生数据类型和引用类型
    XHTML 是以 XML 格式编写的 HTML
    TCP和UDP?
    HTTP和HTTPS的区别?
    <!DOCTYPE> 声明
    ASCII和万国码
  • 原文地址:https://www.cnblogs.com/crazymagic/p/10995549.html
Copyright © 2011-2022 走看看