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>/
网友评论