美文网首页
05、kubernetes资源清单定义入门

05、kubernetes资源清单定义入门

作者: 六弦极品 | 来源:发表于2019-05-25 14:29 被阅读0次
    RESTful API借口:
      GET, PUT, DELETE, POST, ...(http协议方式)
      kubectl get, run, 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
    

    创建资源的方法:
    ① apiserver仅接收JSON格式资源定义;
    ② yaml 格式提供配置清单,apiserver可自动将其转为json格式,而后再提交;

    大部分资源的配置清单:
    ① apiVersion: group/version (获取版本kubectl api-versions)
    ② kind: 资源类别
    ③ metadata: 元数据
    name
    namespace
    labels
    annotations

    每个的资源的应用PATH:/api/(GROUP/VERSION)/namespaces/NAMESPACE/TYPE/NAME
    如:/api/v1/namespaces/default/pods/myapp-86984b4c7c-5z7gj
    ④ spec: 定义期望的状态,disired state
    ⑤ status: 当前状态,current state,本字段由kubernetes集群维护;

    kubernetes内键(字段)说明:
    kubectl explain pods
    kubectl explain pods.metadata

    自定义一个yaml文件:

    # cat 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"
    
    

    通过yaml文件创建一个pod:

    # kubectl create -f pod-demo.yaml
    pod/pod-demo created
    
    # kubectl get pods
    NAME                            READY   STATUS    RESTARTS   AGE
    pod-demo                        2/2     Running   5          3m27s
    
    # kubectl describe pods pod-demo    ##查看pod-demo pod详细信息
    # kubectl logs pod-demo myapp   ## 查看pod-demo pod 的myapp容器日志
    
    # curl 10.244.2.21     ## 查看pod
    Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
    # kubectl logs pod-demo myapp   ## 查看访问日志
    10.244.0.0 - - [25/May/2019:10:42:55 +0000] "GET / HTTP/1.1" 200 65 "-" "curl/7.29.0" "-"
    
    # kubectl logs pod-demo busybox  ## 查看pod-demo pod 的busybox容器日志
    /bin/sh: can't create /usr/share/nginx/html/index.html: nonexistent directory
    
    # kubectl exec -it pod-demo -c myapp -- /bin/sh  登录到pod-demo pod 的myapp容器
    
    # kubectl delete -f pod-demo.yaml   ## 删除清单文件定义的对象资源
    pod "pod-demo" deleted
    
    

    资源清单配置文件的特点:
    ① 方便复用,创建删除资源;
    ② 这样创建的pod是不创建控制器,所以删除pod 不会再自动创建;kubectl run 是创建一个控制器,然后控制器去创建pod

    用kubectl 管理资源三种用法:
    ① 命令式资源清单用法 ,如: kubectl run 等
    ② 声明式资源清单用法, 如: kubectl create -f xxxx.yaml
    ③ 声明式资源清单用法,但命令不一样,如:kubectl apply -f <directory>/

    相关文章

      网友评论

          本文标题:05、kubernetes资源清单定义入门

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