名词解释
资源: k8s将操作对象当做资源来处理.
对象: 资源示例化后称为对象.
k8s中的核心资源: service , pod, deploy
-
workload: Pod, ReplicaSet, Deployment, StatefulSet, DaemonSet Job, Cronjob
-
服务发现及均衡: Service, Ingres
-
配置与存储: Volume, CSI(容器存储接口), 云存储(亚马逊, 阿里云), 本地存储(nfs, glusterfs, ceph)
- ConfigMap, Secret(存储敏感数据)
- DownworkAPI
集群级资源
- Namespace, Node, Role, ClusterRole, RoleBingding, ClusterRoleBingding
元数据型资源
- HPA, PodTemplate, LimitRange
-
创建资源的方法:
apiserver仅接受JSON格式的资源定义
yaml格式提供配置清单,apiserver可自动将其转为json,而后再提交.大部分资源的配置清单:
大部分由5个字段定义:
* apiVersion: group/version
* kind: 资源类别
* metadata: 元数据
name:
namespace:
labels: 键值数据
ownerReferences:每个资源的引用方式: /apl/group/version/namespace/NAMESPACE/TYPE/NAME * spec: 期望的状态, disired state * status: 当前状态, current state, 本字段由kubernetes集群维护。
配置清单创建
-
示例1, 获取pod的简单信息
kubectl get pod myapp-***
-
示例2, 将信息输出为yaml格式
kubectl get pod myapp-*** -o yaml
此处需要补充,查看
yaml
数据的具体信息。
* apiVersion: 属于哪一个api版本
* kind:资源类别
* metadata: 元数据
* spec: 规格,用户定义
* status: 显示资源的当前状态
-
示例3, 查看k8s内建的格式说明:
kubectl explain pods
-
示例4,查看五个期待值的格式信息,如spec:
kubectl explain pods.spec.contains
demo 1
- 编辑
pod-demo.yaml
文件,vim 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
ports:
- name: http
containerPort: 80
name: https
containerPort: 443
- name: busybox
image: busybox:latest
imagePullPolicy: IfNotPresent
command:
- "/bin/sh"
- ".c"
- "sleep 3600"
-
创建yaml对象
kubectl create -f pod-demo.yaml
-
查看已经创建的yaml对象
kubectl get pods
-
获取pod的详细信息
kubectl describe pods pod-demo
-
获取pod的日志信息
kubectl logs pod-demo myapp
-
删除定义的yaml文件,相当于删除pod
kubectl delete -f pod-demo.yaml
与控制器创建的pod, 删除pod后会被控制器自动创建。但是文件定义的会自动删除,不被创建。
总结
自主式Pod资源
资源的清单格式:
* 一级字段: apiVersion(group/version), kind, metadata(name, namespace, labels, annotations), spec, status(只读)
Pod资源:
spec.containers <[]object>
image
imagePullPolicy
Always, Never, IfNotPresent