一、基本资源概念
1. 命名空间
- 概念:Kubernetes将资源对象逻辑上隔离,从而形成多个虚拟集群。
- 应用场景:
- 根据不同团队划分命名空间
- 根据项目划分命名空间
- 默认命名空间(default)
- K8s系统命名空间(kube-system)
- 公开命名空间(kube-public)
- K8s内部命名空间(kube-node-lease)
- 指定方法:
- 命令行加-n参数
- yaml资源元数据中指定namespace字段
- 系统命名空间说明:
- kube-system:存放K8s系统组件,如calico、coredns等
- kube-public:公开可访问但很少使用
- kube-node-lease:K8s内部使用,无需直接管理
1)示例操作
- 查看资源:
- kubectl get pods -n kube-system:查看系统命名空间中的pod
- kubectl get pods:默认查看default命名空间
- kubectl get namespace:查看所有命名空间
- 创建命名空间:
- kubectl create namespace a:创建命名空间a
- kubectl create namespace b:创建命名空间b
- 部署资源到指定命名空间:
- kubectl create -n a:将资源部署到命名空间a
- 删除命名空间:
- kubectl delete namespace a:删除命名空间a
- 注意:会级联删除命名空间内所有资源,属于高危操作
- 最佳实践:先删除命名空间内资源再删除命名空间
- 重要特性:
- 不同命名空间资源名称可以重复
- 资源不支持跨命名空间移动,只能重新部署
- 命名空间主要用于逻辑隔离和权限控制
- 权限控制:
- 管理员可以查看所有命名空间
- 普通用户只能访问被授权的命名空间
- 后续可以通过RBAC进行细粒度权限控制
- 注意事项:
- 删除kube-system会导致集群崩溃
- 操作命名空间前要做好备份
- 删除操作没有确认提示,需格外谨慎
二、Kubernetes监控与日志管理
1. 查看资源集群状态
- 组件状态检查:
- 使用kubectl get cs命令查看Master节点组件运行状态
- 该命令在v1.19+版本已被弃用,但仍可使用
- 显示三个核心组件状态:scheduler(调度器)、controller-manager(控制器)、etcd-0(数据库)
- 资源缩写查询:
- 使用kubectl api-resources查看所有API资源及其缩写
- 输出包含5列:资源名称、短格式、API版本、是否支持命名空间、资源类型
- 系统中约有70种资源类型,每个都有对应的短格式(如pod→po)
- 常用短格式示例:
- pod→po
- deployment→deploy
- service→svc
- componentstatuses→cs
- 短格式可提高命令输入效率
- 节点状态分析:
- kubectl get node显示节点状态信息
- 各列含义:名称、状态(Ready/NotReady)、角色标记、运行时长、版本
- NotReady状态通常表示kubelet组件出现问题
- 常用集群检查命令:
- kubectl cluster-info:查看API Server代理的URL(了解即可)
- kubectl describe <资源类型><名称>:查看资源详细信息
- kubectl get <资源类型>:查看资源列表,常用选项:
- -o wide:显示更详细信息(如Pod IP和所在节点)
- -o yaml:以YAML格式导出资源配置
2. 监控集群资源利用率
- 资源监控命令:
- kubectl top node:查看节点资源利用率
- kubectl top pod:查看Pod资源利用率
- 默认会报错"Metrics API not available",需要额外安装metrics-server
- Metrics Server介绍:
- 集群范围的资源使用数据聚合器
- 从各节点的kubelet API收集指标数据
- 通过Kubernetes聚合器注册到Master API Server
- 项目地址:https://github.com/kubernetes-sigs/metrics-server
- 工作原理:
- 每个节点的kubelet内置cadvisor组件
- cadvisor负责采集容器资源指标
- metrics-server聚合这些指标数据
- 最终通过top命令展示给用户
三、知识小结
知识点 |
核心内容 |
关键操作/注意事项 |
难度系数 |
命名空间功能 |
逻辑隔离资源、分类整理、权限控制基础 |
不同命名空间可存在同名资源 |
⭐⭐ |
常用命名空间 |
default(默认)、kube-system(系统)、public(公开) |
系统命名空间(kube-system)无需手动管理 |
⭐ |
资源查看命令 |
kubectl get pods -n <namespace> |
必须指定命名空间查看非default资源 |
⭐⭐ |
命名空间创建 |
kubectl create namespace <name> |
命名需体现业务/团队属性 |
⭐ |
资源部署定位 |
kubectl create -n <namespace> |
部署时需明确目标命名空间 |
⭐⭐ |
高危删除操作 |
kubectl delete namespace <name> |
连带删除所有内部资源,需先清理资源 |
⭐⭐⭐ |
资源类型缩写 |
po(pods)、svc(service)、deploy(deployment) |
通过kubectl api-resources查询完整列表 |
⭐⭐ |
节点状态监控 |
kubectl get nodes |
NotReady状态需检查kubelet服务 |
⭐⭐ |
详细日志查看 |
kubectl logs <pod> -n <namespace> |
必须配套命名空间参数 |
⭐⭐ |
资源监控缺陷 |
kubectl top命令依赖metrics-server |
需额外部署监控组件才能使用 |
⭐⭐⭐ |
权限控制基础 |
命名空间是RBAC授权的重要维度 |
后续可实现团队间的资源隔离 |
⭐⭐⭐ |