美文网首页
4. kubernetes资源清单定义

4. kubernetes资源清单定义

作者: epiiplus1equal0 | 来源:发表于2019-09-26 16:07 被阅读0次

    4. kubernetes资源清单定义

    [TOC]

    本文基于马哥的docker和k8s视频总结, 在此致谢马哥.

    RESTful风格的API:

    • GET, PUT, DELETE, POST, ...
    • kubectl run, get, edit, ...

    资源: 都视为对象

    • workload (工作负载性资源): Pod, ReplicaSet, Deployment, StatefulSet, DaemonSet, Job, Cronjob, ...
    • 服务发现及均衡: Service, Ingress, ...
    • 配置与存储相关的资源: Volume, CSI
      • ConfigMap, Secret
      • DownwardAPI
    • 集群级资源
      • Namespace, Node, Role, ClusterRole, RoleBinding, ClusterRoleBinding
    • 元数据型资源:
      • HPA, PodTemplate, LimitRange
    # 获取yaml格式的资源详细信息
    kubectl get pods nginx-deploy-7689897d8d-pj5bm -o yaml
    

    创建资源的方法:

    • apiserver只接受JSON格式的资源定义
    • yaml格式提供配置清单, apiserver可自动将其转为json格式, 然后再提交

    大部分资源的配置清单 (5个一级字段):

    • (1) apiVersion: group/version, 指明创建的资源属于哪个群组和版本

      • kubectl api-versions
    • (2) kind: 资源类别, 如pod, deployment等

    • (3) matadata: 元数据

      • name

      • namespace

      • labels

      • annotations (资源注解)

        每个资源的引用PATH: /api/GROUP/VERSION/namespaces/NAMESPACES/TYPE/NAME

    • (4) spec: 最重要的字段, 定义用户期望的状态, disired state

    • (5) status: 当前资源的状态, current state, 本字段由kubernetes集群维护, 用户无法定义, (此状态会向spec指定的状态靠近)

    类型 解释 举例
    string 字符串 字符串
    []string 字符串列表 需要填写字符串类型的数组
    map[string]string 视图字符串 需要有众多k: v类型的数据
    Object 对象 说明有需要嵌套的下一级字段
    []Object 对象列表 说明可以有多个需要嵌套的下一级字段
    - required - 必填项 当出现这个的时候,此项参数必须要填写

    使用资源配置清单创建资源

    # 查看某个资源应该如何定义, 如pods
    kubectl explain pods[.metadata]
        # -required- 必选字段, 不可省略
    
    # 示例, 特别注意大小写!
    vi pods-demo.yml
    
    apiVersion: v1
    kind: Pod
    metadata:
        name: pod-demo
        namespace: default
        labels:
            app: myapp
            tier: frontend
    spec:
        containers: 
            - name: myapp # 创建的第一个容器的容器名
                image: nginx:1.14-alpine # 容器所使用的镜像
                ports: # 暴露端口
                    - name: http
                        containerPort: 80
                    - name: https
                        containerPort: 443
        - name:  busybox # 创建的第二个容器的容器名
            image: busybox:latest
            imagePullPolicy: IfNotPresent
            command: # 修改容器启动时使用的默认命令
                - "/bin/sh"
                - "-c"
                - "sleep 3600"
    
    kubectl create -f pod-demo.yml
    kubectl get pods
    kubectl describe pods pod-demo # 先指明资源类型, 再指明资源名称
    # 查看日志, 用于排错
    kubectl logs pod-demo myapp
    kubectl logs pod-demo busybox
    # 终端访问pod
    kubectl exec -it pod-demo -c myapp -- /bin/sh
    
    # 删除某文件定义的资源
    kubectl delete -f pod-demo.yml
    

    相关文章

      网友评论

          本文标题:4. kubernetes资源清单定义

          本文链接:https://www.haomeiwen.com/subject/mghnuctx.html