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