Pod 排错
常用命令
- 查看 Pod 状态:
kubectl get pod <POD_NAME> -o wide
- 查看 Pod 的 yaml 配置:
kubectl get pod <POD_NAME> -o yaml
- 查看 Pod 事件:
kubectl describe pod <POD_NAME>
- 查看容器日志:
kubectl logs <POD_NAME> [-c <CONTAINER_NAME>]
大约 3 分钟
kubectl get pod <POD_NAME> -o wide
kubectl get pod <POD_NAME> -o yaml
kubectl describe pod <POD_NAME>
kubectl logs <POD_NAME> [-c <CONTAINER_NAME>]
## 列出集群中的所有节点
kubectl get nodes
kubectl get nodes -o wide
kubectl get nodes -o wide --show-labels=true
## 将节点标记为不可调度,避免新的Pod在此节点创建和运行:
kubectl cordon <node-name>
## 驱逐节点上的Pod容器组,被驱逐的Pod将在其它节点重新创建运行:
kubectl drain <node-name> --delete-local-data --ignore-daemonsets --force
# 这里有3个参数:
# --ignore-daemonsets, 忽略 DaemonSet 管理的 Pod(避免删除,创建这样的死循环)。
# --delete-local-data,使用 emptyDir 数据卷的 Pod 也要删除。
# --force,不是由 ReplicationController 、ReplicaSet 、Job 、DaemonSet 、StatefulSet 管理的Pod(没有绑定任何控制器)也要删除。
就是没有特殊状态的服务,各个请求对于服务器来说统一无差别处理,请求自身携带了所有服务端所需要的所有参数。没有要实时保存的数据。
Pod是一个逻辑概念,它是Kubernetes资源调度的单元,一般会把一组功能强相关的容器逻辑上称之为一个pod,Pod就是所说的实例。
缺点: 不支持高并发, 高可用, 当Pod当机后无法自动恢复。
服务守护进程,它的主要作用是在Kubernetes集群的所有节点中运行我们部署的守护进程,相当于在集群节点上分别部署Pod副本,如果有新节点加入集群,
DaemonSet
会自动的在该节点上运行我们需要部署的Pod副本,相反如果有节点退出集群,DaemonSet
也会移除掉部署在旧节点的Pod副本。
DaemonSet
一般运行在集群的所有节点上,是一些常驻服务,通常可以用来收集日志,作为存储节点,运行监控进程等。下面是一个日志收集的
DaemonSet
的定义: