k8s资源清单定义入门
1.资源分类
a.workload型资源:service、pod、deployment、ReplicaSet、StatefulSet、Job、Cronjob; b.服务发现及服务均衡资源型资源:Service、Ingress; c.配置与存储型资源:Volume、ConfigMap、Secret、DownwardAPI、CSI(容器存储接口,可以扩展各种第三方的存储卷) d.集群级资源:Namespace、Node、Role、rolebinding、clusterrolebinding; e.元数据型资源:HPA、podtemplate、limitrange(限制资源的如cpu、内存等) 查看pod的yaml格式清单 kubectl get pods myapp-9b4987d5-lwqnj -o yaml spec: # 规格、特性,用户期望的状态 tolerations: # 容忍度 status:# 显示当前资源的当前状态
2.创建资源的方法
apiserver仅接受json格式的资源定义;yaml可以无损转换为json,所以使用yaml格式提供配置清单,apiserver可自动将其转换为json格式,然后再提交.使用命令kubectl run,最终也是自动转为json格式的资源定义.
大部分资源的配置清单包含:
a.apiVersion:表示属于哪个api群组和版本,可以通过kubectl api-versions查看,显示方式为group/version b.Kind:资源类别,有pod、deloyment等 c.metadata:元数据,包括: 1)name:在同一资源下name是必须唯一的; 2)namespace:名称空间 3)labels:标签 4)annotations:资源注解 5)selfLink:每个资源引用的PATH,格式为/api/GROUP/VERSION/namespaces/NAMESPACE/TYPE/NAME 6)spec:定义用户期望的目标状态(disired state) 7)status:表示当前状态,让当前状态向期望的目标状态靠近,本字段由k8s集群维护 # pod怎么定义,即查看帮助手册 kubectl explain pods # 查看medadata下有哪些字段可以用 kubectl explain pod.metadata kubectl explain pods.spec.containers
3.用yaml创建pod
mkdir manifests && cd manifests/ cat pod-demo.yaml apiVersion: v1 kind: Pod metadata: name: pod-demo namespace: default labels: itsDeploy: myapp spec: containers: - name: myapp image: ikubernetes/myapp:v1 - name: busybox image: busybox command: - "/bin/sh" - "-c" - "echo $(date) >> /usr/share/nginx/html/index.html; sleep 5" # 命令式资源清单,也叫声明式资源清单 kubectl create -f maniteste/pod-demo.yaml # 1个pod跑2个容器,"-"表示某个参数可以有多个,譬如containers中的name kubectl describe pods pod-demo # 查看日志 kubectl logs pod-demo myapp # 进入运行中的容器,当然我创建的这个进不去,因为镜像太小,不支持 kubectl exec -it pod-demo -c myapp -- /bin/bash # 删除pod kubectl delete -f maniteste/pod-demo.yaml
参考博客:http://blog.itpub.net/28916011/viewspace-2213934/
python2.7源码安装MySQLdb:https://blog.csdn.net/lovemysea/article/details/79881382