资源清单※
apiVersion※
# 指定API的版本号
apiVersion: v1
kind※
# 指定资源的类型
kind: Pod
#其它资源:
Service、Deployment、DaemonSet、StatefulSet、Job、ConfigMap、Secret
metadata:※
metadata:
name: my-pod # 必需的字段,指定资源的名称
namespace: my-namespace # 可选字段,指定资源所属的命名空间
labels: # 可选字段,用于为资源定义标签
app: nginx # 示例标签,标识应用程序类型为 nginx
environment: production # 示例标签,指示运行环境为生产环境
annotations: # 可选字段,提供额外的描述性信息
description: "This pod runs the frontend application." # 示例注释,描述该 Pod 运行前端应用程序
spec※
用户期望资源的运行状态。※
spec:
containers: # 容器定义
- name: nginx # 容器名称
image: nginx:1.23.4-alpine # 容器镜像
ports: # 容器端口定义
- containerPort: 80 # 容器监听端口
protocol: TCP # 端口协议
volumeMounts: # 挂载卷配置
- name: webpage # 挂载的卷名称,需与 volumes 中的名称对应
mountPath: /usr/share/nginx/html # 挂载路径
volumes: # 卷定义
- name: webpage # 卷名称
emptyDir: {} # 空目录卷类型,用于临时数据存储
hostNetwork: true # 使用宿主机网络
nodeName: k8s1 # 节点名称,指定 Pod 调度的节点
restartPolicy: Always # 容器重启策略,始终重启
相关字段说明※
相关字段说明:
NAME
代表的是资源的名称。
READY
代表资源是否就绪。比如 0/1 ,表示一个Pod内有一个容器,而且这个容器还未运行成功。
STATUS
代表容器的运行状态。
RESTARTS
代表Pod重启次数,即容器被创建的次数。
AGE
代表Pod资源运行的时间。
IP
代表Pod的IP地址。
NODE
代表Pod被调度到哪个节点。
其他:
"NOMINATED NODE和"READINESS GATES"暂时先忽略哈。
- 故障排查相关命令
kubectl descpribe
kubectl logs
kubectl cp
kubectl exec #pod中多个容器默认连接到第一个容器,-c参数指定容器
- 查看帮助信息
kubectl explain
早期版本中,可能没有提示Pod容器的名称,可以采用以下三种方式查看容器名称。
# kubectl describe pod <pod_name>
# kubectl get pods <pod_name> -o yaml
Q2: 如果查看一个Pod最近20分钟的日志?※
kubectl logs -c nginx -f --timestamps --since=20m <pod_name>
-c:
指定要查看的容器名称。
-f:
实时查看日志。
--timestamps :
显示时间戳相关信息。
--since=20m
查看最近20分钟内的日志。
※