4. kubernetes资源清单定义

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资源清单定义)