创建资源清单的方式:

    image.png

    • apiserver仅接受JSON格式的资源定义

    • yaml格式提供资源配置清单,apiserver可自动将其转为json格式,而后再提交

    通用资源配置清单所用的字段:

    image.png

    apiVersion:指明api资源属于哪个群组和版本,同一个组可以有多个版本 group/version
    # kubectl api-versions 命令可以获取

    kind: 资源类别,标记创建的资源类型,k8s主要支持以下资源类别
    Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、Cronjob

    metadata: 用于描述对象的属性信息,主要提供以下字段:

    name: 指定当前对象的名称,其所属的名称空间的同一类型中必须唯一
    namespace: 指定当前对象隶属的名称空间,默认值为default
    labels: 设定用于标识当前对象的标签,键值数据,常被用作挑选条件
    annotations: 非标识型键值数据,用来作为挑选条件,用于labels的补充

    spec: 用于描述所期望的对象应该具有的状态(disired state),资源对象中最重要的字段。

    status: 用于记录对象在系统上的当前状态(current state),本字段由kubernetes自行维护

    资源配置清单-创建Pod-举例:

    [root@k8s-master ~]# mkdir manfests
    [root@k8s-master ~]# cd manfests/
    [root@k8s-master manfests]# vim 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”

    [root@k8s-master manfests]# kubectl create -f pod-demo.yaml
    pod/pod-demo created

    [root@k8s-master manfests]# kubectl get pods
    NAME READY STATUS RESTARTS AGE
    pod-demo 2/2 Running 0 15s

    [root@k8s-master manfests]# kubectl describe pods pod-demo #查看pod详细信息

    [root@k8s-master manfests]# kubectl get pods -o wide
    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    pod-demo 2/2 Running 0 102s 10.244.1.17 k8s-node1

    [root@k8s-master manfests]# curl 10.244.1.17
    Hello MyApp | Version: v1 | Pod Name

    [root@k8s-master manfests]# kubectl logs pod-demo myapp #查看pod-demo下myapp的日志
    10.244.0.0 - - [03/Sep/2019:02:32:52 +0000] “GET / HTTP/1.1” 200 65 “-“ “curl/7.29.0” “-“

    [root@k8s-master manfests]# kubectl exec -it pod-demo -c myapp — /bin/sh #进入myapp容器

    相关文献:https://www.cnblogs.com/wjlovezzd/p/13176240.html