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
来源: http://www.bubuko.com/infodetail-3093924.html