05、kubernetes资源清单定义入门

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 | Pod Name
# 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 /

你可能感兴趣的:(05、kubernetes资源清单定义入门)