1,资源的清单格式:
一级字段:apiVersion(group/version), kind, metadata(name,namespace,labels,annotations, ...), spec,status(只读)
查看字段说明:kubectl explain pods
查看二级字段说明(例):kubectl explain pods.metadata
查看三级字段说明(例):kubectl explain pods.spec.containers
•nodeSelector <map[string]string>:节点标签选择器
•nodeName <string>
•annotations:与label不同的地方在于,它不能用于挑选资源对象,仅用于为对象提供“元数据”
◆Pod生命周期中的重要行为:
•初始化容器
•容器探测:
•liveness:存活性探测
•readiness:就绪性探测
•lifecycle:生命周期;定义启动后(poststart)和终止前(prestop)的钩子行为。
•查看帮助:
kubectl explain pods.spec.containers.livenessProbe
kubectl explain pods.spec.containers.livenessProbe.exec
kubectl explain pods.spec.containers.livenessProbe.httpGet
•Pod的生命周期:
状态:Pending, Running, Failed, Succeeded, Unknown
•restartPolicy: Always, OnFailure, Never. Default to Always.
•探针类型有三种:ExecAction、TCPSocketAction、HTTPGetAction
【yaml创建pod示例】
官方文档:https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/
2,利用yaml文件创建pod
命令:kubectl create -f pod-demo.yaml
删除文件定义的资源:kubectl delete -f pod-demo.yaml
查看pod信息:kubectl describe pods pod-demo
查询出错容器的log:kubectl logs pod-demo busybox #pod-demo中的busybox容器
删除pod:kubectl delete pods pod-demo
进入pod中的某个容器:kubectl exec -it pod-demo -c myapp -- /bin/sh
apiVersion: v1
kind: Pod #自主式pod,删除pod不会重建。
metadata:
name: pod-demo
namespace: default
labels:
app: myapp
tier: frontend
annotations: #添加资源注解
aaabbb.com/created-by: "testuser01"
spec:
container:
- name: myapp
image: qiaomu2020/myapp:v1
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
- name: busybox
image: busybox:latest
imagePullPolicy: IfNotPresent #latest标签的镜像默认策略为always,修改后,节省带宽。
#command: ["/bin/sh","-c","sleep 3600"] #这样的写法也是可以的。
command:
- "bin/sh
- "-c"
- "sleep 1800"
nodeSelector: #给pod添加节点选择器。
disktype: hhd