kubernetes(K8s)学习笔记(第三期):集群基础管理
Kubernetes (K8s)学习笔记(第三期):集群基础管理
本笔记为 Kubernetes 系列第三期,聚焦集群日常运维管理。涵盖:节点管理(查看、维护、删除)、集群删除与重建、Namespace 资源隔离、Namespace 切换、集群上下文切换(多集群管理)、集群排错基础、资源操作基础。所有命令均来自课堂笔记,经过整理和注释。全文 90+ 命令示例 和 15 张对比表格,是 Kubernetes 集群管理员的必备参考。
目录
- 节点管理
- 集群删除与重建
- Namespace 管理
- Namespace 切换
- 集群上下文切换
- 集群排错基础
- 资源操作基础
- 总结与知识点一览表
一、节点管理
1.1 查看节点
查看节点清单
[root@master30 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master30.laoma.cloud Ready control-plane 37h v1.30.2
worker31.laoma.cloud Ready <none> 36h v1.30.2
worker32.laoma.cloud Ready <none> 36h v1.30.2
输出列说明:
| 列 | 说明 |
|---|---|
NAME |
节点主机名 |
STATUS |
节点状态 |
ROLES |
节点角色(control-plane / node / ) |
AGE |
节点运行时间 |
VERSION |
Kubernetes 版本 |
节点状态(STATUS)详解
| 状态 | 含义 | 可能原因 |
|---|---|---|
Ready |
节点正常,可调度 Pod | 所有组件健康 |
NotReady |
节点不可用 | kubelet 未运行、网络插件故障、swap 未关闭 |
Unknown |
状态未知 | 网络中断、节点宕机、kubelet 无法上报心跳 |
SchedulingDisabled |
调度禁用 | 节点被 cordon(维护模式) |
💡 思维误区:很多新手认为
NotReady就是节点完全宕机了。实际上,NotReady可能只是 kubelet 服务停止,但节点操作系统仍在运行,可以 SSH 上去排查。而Unknown通常意味着网络不通,节点可能已经无法访问。
节点状况(Conditions)
节点状态背后是多个 Condition 的综合结果。使用 kubectl describe node 可以查看:
[root@master30 ~]# kubectl describe node worker31.whisky.cloud | grep -A6 Conditions
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
MemoryPressure False Tue, 18 Jun 2024 10:00:00 +0000 Mon, 17 Jun 2024 08:00:00 +0000 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False Tue, 18 Jun 2024 10:00:00 +0000 Mon, 17 Jun 2024 08:00:00 +0000 KubeletHasNoDiskPressure kubelet has no disk pressure
PIDPressure False Tue, 18 Jun 2024 10:00:00 +0000 Mon, 17 Jun 2024 08:00:00 +0000 KubeletHasSufficientPID kubelet has sufficient PID available
Ready True Tue, 18 Jun 2024 10:00:00 +0000 Mon, 17 Jun 2024 08:00:00 +0000 KubeletReady kubelet is posting ready status
各 Condition 含义:
| Condition | 含义 | True 表示 |
|---|---|---|
MemoryPressure |
内存压力 | 内存不足,可能驱逐 Pod |
DiskPressure |
磁盘压力 | 磁盘空间不足 |
PIDPressure |
PID 压力 | 进程数过多 |
Ready |
节点就绪 | 节点可正常接收 Pod |
🔧 排故思路:当节点状态异常时,不要只看
STATUS列,一定要用kubectl describe node查看 Conditions。例如,如果MemoryPressure为 True,说明节点内存不足,可能的原因包括 Pod 资源请求过大、内存泄漏、或节点本身内存不足。此时可查看kubectl top nodes确认实际内存使用情况。
查看节点资源容量
[root@master30 ~]# kubectl describe node worker31.laoma.cloud | grep -A4 Capacity
Capacity:
cpu: 2
memory: 3889808Ki
pods: 110
Allocatable:
cpu: 2
memory: 3787408Ki
pods: 110
Capacity vs Allocatable:
| 概念 | 含义 | 关系 |
|---|---|---|
Capacity |
节点总资源量 | 硬件实际配置 |
Allocatable |
可供 Pod 使用的资源量 | Capacity - 系统预留 - kubelet 预留 |
💡 思维误区:有些管理员认为 Capacity 就是 Pod 可用资源,实际上 Allocatable 才是真正的可用资源。系统组件(如 kubelet、容器运行时)会占用一部分资源,因此 Allocatable 总是小于 Capacity。理解这一点有助于避免 Pod 资源不足的误判。
1.2 节点维护模式(cordon / drain / uncordon)
在进行节点维护(如升级内核、更换硬件)时,需要将节点上的 Pod 安全迁移。
步骤 1:标记节点为不可调度(cordon)
[root@master30 ~]# kubectl cordon worker31.laoma.cloud
node/worker31.laoma.cloud cordoned
cordon 的作用是阻止新的 Pod 调度到该节点,但不会驱逐已有的 Pod。相当于在节点门口挂上“暂停接待”的牌子。
步骤 2:驱逐节点上的 Pod(drain)
[root@master30 ~]# kubectl drain worker31.laoma.cloud --ignore-daemonsets
node/worker31.laoma.cloud already cordoned
Warning: ignoring DaemonSet-managed Pods: kube-system/calico-node-v8jdn, kube-system/kube-proxy-27vl2
evicting pod kube-system/calico-kube-controllers-7cb4fd5784-jx2xl
pod/calico-kube-controllers-7cb4fd5784-jx2xl evicted
node/worker31.laoma.cloud drained
drain 执行流程:
- 自动先执行
cordon(如果未手动执行) - 驱逐节点上的所有 Pod(除 DaemonSet 管理的 Pod)
- 等待 Pod 在其他节点重新创建完成
- 标记节点为“已排空”
常用参数:
| 参数 | 作用 |
|---|---|
--ignore-daemonsets |
忽略 DaemonSet 管理的 Pod |
--force |
强制驱逐无法正常终止的 Pod |
--delete-emptydir-data |
删除使用 emptyDir 的 Pod |
--grace-period=30 |
优雅终止宽限期(秒) |
🔧 排故思路:如果
drain卡住,可能是某个 Pod 无法正常终止。此时可以:
- 检查该 Pod 是否有
PodDisruptionBudget限制,阻止驱逐。- 使用
kubectl delete pod <pod> --force --grace-period=0强制删除(谨慎操作)。- 检查节点上是否有非控制器管理的裸 Pod(没有 ReplicaSet/Deployment 管理),这类 Pod 无法被重新调度,需手动处理。
步骤 3:恢复调度(uncordon)
[root@master30 ~]# kubectl uncordon worker31.laoma.cloud
node/worker31.laoma.cloud uncordoned
1.3 删除节点
当节点需要永久下线时,执行以下步骤:
# 1. 驱逐节点上所有 Pod
[root@master30 ~]# kubectl drain worker31.laoma.cloud --ignore-daemonsets --force
# 2. 从集群中删除节点
[root@master30 ~]# kubectl delete node worker31.laoma.cloud
node "worker31.laoma.cloud" deleted
# 3. 在被删除的节点上重置集群状态
[root@worker31 ~]# kubeadm reset -f
⚠️ 残留清理提醒:
kubeadm reset不会自动清理 CNI 配置(/etc/cni/net.d/)和 iptables/IPVS 规则。手动清理:rm -rf /etc/cni/net.d iptables -F && iptables -t nat -F ipvsadm --clear
💡 思维误区:有人认为删除节点后,该节点上的 Pod 会自动迁移到其他节点。实际上,只有被控制器(如 Deployment、StatefulSet)管理的 Pod 才会自动重建并调度到其他节点。裸 Pod(直接用
kubectl run创建的)删除后不会自动恢复。
1.4 节点标签与污点预览
标签(Labels) 用于节点选择和调度:
[root@master30 ~]# kubectl label nodes worker31.laoma.cloud node-type=high-memory
node/worker31.laoma.cloud labeled
[root@master30 ~]# kubectl get nodes --show-labels
污点与容忍(Taints & Tolerations) 用于控制哪些 Pod 可以调度到节点:
[root@master30 ~]# kubectl taint nodes worker31.laoma.cloud disktype=ssd:NoSchedule
node/worker31.laoma.cloud tainted
污点和容忍是调度的高级特性,后续笔记会详细展开。
1.5 节点资源监控
[root@master30 ~]# kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
master30.laoma.cloud 150m 7% 2500Mi 65%
worker31.laoma.cloud 80m 4% 1800Mi 47%
worker32.laoma.cloud 90m 4% 1900Mi 50%
注意:
kubectl top需要 Metrics Server 已部署。
二、集群删除与重建
2.1 完整删除流程
步骤 1:删除所有 Worker 节点
[root@master30 ~]# kubectl drain worker31.laoma.cloud --ignore-daemonsets --force
[root@master30 ~]# kubectl drain worker32.laoma.cloud --ignore-daemonsets --force
[root@master30 ~]# kubectl delete node worker31.laoma.cloud worker32.laoma.cloud
[root@worker31 ~]# kubeadm reset -f
[root@worker32 ~]# kubeadm reset -f
步骤 2:删除 Master 节点
# 备份集群配置
[root@master30 ~]# kubectl get cm kubeadm-config -n kube-system -o yaml > kubeadm.yml
# 删除 Master 节点
[root@master30 ~]# kubectl delete node master30.laoma.cloud
[root@master30 ~]# kubeadm reset -f
[root@master30 ~]# rm -fr .kube/
2.2 使用配置文件重建集群
准备 kubeadm 配置文件(kubeadm.yml):
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.k8s.io
kind: ClusterConfiguration
kubernetesVersion: v1.30.2
networking:
dnsDomain: cluster.local
podSubnet: 10.224.0.0/16
serviceSubnet: 10.96.0.0/12
scheduler: {}
初始化集群:
[root@master30 ~]# kubeadm init --config kubeadm.yml
[root@master30 ~]# mkdir -p $HOME/.kube
[root@master30 ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master30 ~]# chown $(id -u):$(id -g) $HOME/.kube/config
[root@master30 ~]# kubectl apply -f calico.yaml
[root@worker31 ~]# kubeadm join ...
2.3 证书过期处理
Kubernetes 证书默认有效期为 1 年。查看证书过期时间:
[root@master30 ~]# kubeadm certs check-expiration
CERTIFICATE EXPIRES RESIDUAL TIME EXTERNALLY MANAGED
admin.conf Jun 18, 2025 10:00 UTC 364d no
apiserver Jun 18, 2025 10:00 UTC 364d no
...
更新证书:
[root@master30 ~]# kubeadm certs renew all
[root@master30 ~]# systemctl restart kubelet
💡 思维误区:有些管理员认为证书过期后必须重建集群。实际上,
kubeadm certs renew可以原地更新证书,无需重建。但更新后需要重启相关组件(kube-apiserver、kubelet 等)。
2.4 etcd 备份与恢复概念预览
备份 etcd:
[root@master30 ~]# ETCDCTL_API=3 etcdctl snapshot save /data/etcd-backup.db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key
三、Namespace 管理
3.1 Namespace 概念
Namespace(命名空间) 是 Kubernetes 中用于资源隔离的机制,可以将一个物理集群逻辑上划分成多个虚拟集群。
默认 Namespace:
| Namespace | 用途 |
|---|---|
default |
默认命名空间,未指定时使用 |
kube-system |
Kubernetes 系统组件 |
kube-public |
所有用户(包括未认证用户)可读 |
kube-node-lease |
节点租约(kubelet 心跳) |
思考:所有对象都属于 Namespace 吗?
答:不是。 大多数资源(Pod、Service、Deployment)属于某个 Namespace,但 Namespace 本身不属于任何 Namespace,Node 和 PersistentVolume 也不属于任何 Namespace。这些是"全局资源"。
3.2 Namespace 操作
查看 Namespace:
[root@master30 ~]# kubectl get ns
NAME STATUS AGE
default Active 7d4h
kube-node-lease Active 7d4h
kube-public Active 7d4h
kube-system Active 7d4h
查看 Namespace 详情:
[root@master30 ~]# kubectl describe ns kube-system
Name: kube-system
Labels: kubernetes.io/metadata.name=kube-system
Annotations: <none>
Status: Active
No resource quota. # 无资源配额
No LimitRange resource. # 无限制范围
创建 Namespace:
# 命令行创建
[root@master30 ~]# kubectl create ns laoma
namespace/laoma created
# YAML 文件创建
[root@master30 ~]# cat > ns-laoma.yaml <<EOF
apiVersion: v1
kind: Namespace
metadata:
name: laoma
EOF
[root@master30 ~]# kubectl apply -f ns-laoma.yaml
删除 Namespace:
[root@master30 ~]# kubectl delete ns laoma
namespace "laoma" deleted
⚠️ 重要警告:删除 Namespace 会级联删除该命名空间中的所有资源(Pod、Service、Deployment 等)。
default和kube-system命名空间不可删除。
3.3 在指定 Namespace 中操作
# 使用 -n 选项指定 Namespace
[root@master30 ~]# kubectl run web --image=nginx -n laoma
pod/web created
[root@master30 ~]# kubectl get pods -n laoma
NAME READY STATUS RESTARTS AGE
web 1/1 Running 0 39s
3.4 ResourceQuota(资源配额)
限制 Namespace 中资源的总用量:
apiVersion: v1
kind: ResourceQuota
metadata:
name: quota
namespace: laoma
spec:
hard:
requests.cpu: "2"
requests.memory: "2Gi"
limits.cpu: "4"
limits.memory: "4Gi"
persistentvolumeclaims: "5"
pods: "10"
[root@master30 ~]# kubectl apply -f resourcequota.yaml
[root@master30 ~]# kubectl describe quota -n laoma
Name: quota
Namespace: laoma
Resource Used Hard
-------- ---- ----
limits.cpu 0 4
limits.memory 0 4Gi
pods 0 10
requests.cpu 0 2
requests.memory 0 2Gi
🔧 排故思路:当 Pod 无法创建时,可能是 ResourceQuota 已用尽。检查
kubectl describe quota -n <namespace>查看各资源的使用情况,以及 Pod 的事件信息。
3.5 LimitRange(限制范围)
限制 Pod 或容器的默认资源值:
apiVersion: v1
kind: LimitRange
metadata:
name: limits
namespace: laoma
spec:
limits:
- max:
cpu: "1"
memory: "1Gi"
min:
cpu: "100m"
memory: "128Mi"
default:
cpu: "500m"
memory: "512Mi"
defaultRequest:
cpu: "200m"
memory: "256Mi"
type: Container
四、Namespace 切换
4.1 使用 kubectl config 切换
查看当前上下文:
[root@master30 ~]# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kubernetes-admin@kubernetes kubernetes kubernetes-admin
设置当前上下文的默认 Namespace:
[root@master30 ~]# kubectl config set-context --current --namespace=laoma
Context "kubernetes-admin@kubernetes" modified.
[root@master30 ~]# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kubernetes-admin@kubernetes kubernetes kubernetes-admin laoma
4.2 kubens 工具
安装:
[root@master30 ~]# wget https://codeload.github.com/ahmetb/kubectx/zip/refs/heads/master -O kubectx.zip
[root@master30 ~]# unzip kubectx.zip
[root@master30 ~]# cp kubectx-master/kubens /usr/local/bin/
[root@master30 ~]# chmod +x /usr/local/bin/kubens
[root@master30 ~]# cp kubectx-master/completion/kubens.bash /etc/bash_completion.d/
[root@master30 ~]# source /etc/bash_completion.d/kubens.bash
使用:
# 列出所有 Namespace
[root@master30 ~]# kubens
default
kube-node-lease
kube-public
kube-system
*laoma
# 切换到 kube-system
[root@master30 ~]# kubens kube-system
Active namespace is "kube-system".
# 查看当前 Namespace
[root@master30 ~]# kubens -c
kube-system
# 切换到上一个 Namespace
[root@master30 ~]# kubens -
五、集群上下文切换
5.1 ~/.kube/config 文件结构
apiVersion: v1
clusters: # 集群列表
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://10.1.8.30:6443
name: kubernetes
contexts: # 上下文列表
- context:
cluster: kubernetes
namespace: laoma
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users: # 用户列表
- name: kubernetes-admin
user:
client-certificate-data: DATA+OMITTED
client-key-data: DATA+OMITTED
三要素:Clusters(目的地)+ Users(身份)+ Contexts(行程单)
5.2 多集群配置示例
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://10.1.8.30:6443
name: cluster1
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://10.1.8.150:6443
name: cluster2
contexts:
- context:
cluster: cluster1
namespace: default
user: cluster1-admin
name: cluster1-context
- context:
cluster: cluster2
namespace: default
user: cluster2-admin
name: cluster2-context
current-context: cluster1-context
kind: Config
preferences: {}
users:
- name: cluster1-admin
user:
client-certificate-data: DATA+OMITTED
client-key-data: DATA+OMITTED
- name: cluster2-admin
user:
client-certificate-data: DATA+OMITTED
client-key-data: DATA+OMITTED
5.3 多 KUBECONFIG 环境变量
# 合并多个配置文件
[root@master30 ~]# export KUBECONFIG=/root/.kube/config:/root/cluster2.conf
[root@master30 ~]# kubectl config view --flatten > /root/merged.conf
5.4 使用 kubectl config 切换
# 查看集群列表
[root@master30 ~]# kubectl config get-clusters
NAME
cluster1
cluster2
# 查看上下文列表
[root@master30 ~]# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* cluster1-context cluster1 cluster1-admin default
cluster2-context cluster2 cluster2-admin default
# 切换上下文
[root@master30 ~]# kubectl config use-context cluster2-context
Switched to context "cluster2-context".
5.5 kubectx 工具
# 列出所有上下文
[root@master30 ~]# kubectx
cluster1-context
cluster2-context
# 查看当前上下文
[root@master30 ~]# kubectx -c
cluster1-context
# 切换到指定上下文
[root@master30 ~]# kubectx cluster2-context
Switched to context "cluster2-context".
# 切换到上一个上下文
[root@master30 ~]# kubectx -
# 取消当前上下文
[root@master30 ~]# kubectx -u
六、集群排错基础
6.1 查看集群事件
[root@master30 ~]# kubectl get events --all-namespaces --sort-by='.lastTimestamp'
NAMESPACE LASTSEEN TYPE REASON OBJECT MESSAGE
kube-system 2m Normal Scheduled pod/calico-node-4b6s8 Successfully assigned...
kube-system 1m Normal Pulled pod/calico-node-4b6s8 Container image "calico/node" already present
...
常用过滤:
# 查看特定 Namespace 的事件
[root@master30 ~]# kubectl get events -n kube-system
# 查看警告级别事件
[root@master30 ~]# kubectl get events --field-selector type=Warning
# 实时监控事件
[root@master30 ~]# kubectl get events -w
🔧 排故思路:当 Pod 无法启动时,
kubectl get events是最快的诊断途径。常见事件及含义:
FailedScheduling:Pod 无法调度,检查节点资源或污点。FailedMount:存储卷挂载失败,检查 PV/PVC 状态。ErrImagePull/ImagePullBackOff:镜像拉取失败,检查镜像名或私有仓库认证。
6.2 kubectl describe 深度使用
# 查看节点详细状态(含 Conditions、资源、事件)
[root@master30 ~]# kubectl describe node worker31.laoma.cloud
# 查看 Pod 详细状态(含事件、容器状态)
[root@master30 ~]# kubectl describe pod web
# 查看 Service 详情
[root@master30 ~]# kubectl describe svc nginx-test
describe 命令是排错的首选工具。重点关注:
- Conditions:节点状况
- Events:最近事件(排错关键)
- Containers:容器状态、重启原因
6.3 常见集群故障排查流程
| 问题现象 | 排查步骤 |
|---|---|
| 节点 NotReady | ① systemctl status kubelet ② journalctl -u kubelet -n 50 ③ 检查 swap 是否关闭 ④ 检查网络插件 |
| Pod Pending | ① kubectl describe pod 查看事件 ② 检查节点资源是否充足 ③ 检查污点/容忍 |
| API Server 不可达 | ① 检查 kube-apiserver Pod 状态 ② systemctl status kubelet ③ 检查 6443 端口 |
| 证书过期 | kubeadm certs check-expiration |
6.4 查看 kubelet 日志
# 查看 kubelet 日志
[root@master30 ~]# journalctl -u kubelet -n 50
# 实时跟踪 kubelet 日志
[root@master30 ~]# journalctl -u kubelet -f
# 查看特定时间段的日志
[root@master30 ~]# journalctl -u kubelet --since "2024-06-18 10:00:00" --until "2024-06-18 10:10:00"
七、资源操作基础
7.1 kubectl 命令分类
| 操作类型 | 命令 | 用途 |
|---|---|---|
| 创建 | create / apply |
创建资源 |
| 查看 | get / describe |
查询资源状态 |
| 更新 | edit / patch / apply |
修改资源配置 |
| 删除 | delete |
删除资源 |
| 调试 | logs / exec / port-forward |
调试 Pod |
7.2 命令式 vs 声明式管理
| 方式 | 特点 | 适用场景 |
|---|---|---|
命令式(kubectl create/delete) |
直接操作,快速,无需 YAML | 临时、测试、单次操作 |
声明式(kubectl apply -f) |
通过 YAML 描述期望状态,GitOps 友好 | 生产环境、版本管理、自动化 |
声明式管理优势:
- 配置即代码(IaC)
- 支持版本控制(Git)
- 支持回滚
- 支持 CI/CD 集成
7.3 dry-run 与 diff
# 预览资源 YAML(不创建)
[root@master30 ~]# kubectl run web --image=nginx --dry-run=client -o yaml
# 预览变更(apply 前查看差异)
[root@master30 ~]# kubectl diff -f web.yaml
7.4 常用 kubectl 别名与快捷键
# 常用别名
alias k='kubectl'
alias kg='kubectl get'
alias kd='kubectl describe'
alias kgp='kubectl get pods'
alias kgn='kubectl get nodes'
alias kgs='kubectl get svc'
# 命令补全
[root@master30 ~]# source <(kubectl completion bash)
八、总结与知识点一览表
8.1 核心知识点汇总
| 模块 | 核心概念 | 关键命令 |
|---|---|---|
| 节点管理 | cordon / drain / uncordon | kubectl get nodes, kubectl cordon, kubectl drain, kubectl uncordon |
| 节点删除 | kubeadm reset | kubectl delete node, kubeadm reset -f |
| 集群重建 | kubeadm config | kubeadm init --config, kubeadm certs renew |
| Namespace | 资源隔离、ResourceQuota | kubectl get ns, kubectl create ns, kubectl delete ns |
| Namespace 切换 | kubens | kubectl config set-context, kubens |
| 上下文切换 | kubectx | kubectl config get-contexts, kubectl config use-context, kubectx |
| 集群排错 | events / describe / journalctl | kubectl get events, kubectl describe, journalctl -u kubelet |
| 资源操作 | apply / create / dry-run | kubectl apply -f, kubectl create, kubectl diff, kubectl --dry-run |
8.2 常用命令速查
| 操作 | 命令 |
|---|---|
| 查看节点 | kubectl get nodes |
| 节点维护 | kubectl cordon/drain/uncordon <node> |
| 删除节点 | kubectl delete node <node> |
| 重置节点 | kubeadm reset -f |
| 查看 Namespace | kubectl get ns |
| 创建 Namespace | kubectl create ns <name> |
| 删除 Namespace | kubectl delete ns <name> |
| 切换 Namespace | kubectl config set-context --current --namespace=<ns> |
| 查看上下文 | kubectl config get-contexts |
| 切换上下文 | kubectl config use-context <name> |
| 查看事件 | kubectl get events --all-namespaces |
| 查看日志 | journalctl -u kubelet -f |
8.3 常见错误排查
| 错误 | 原因 | 解决方法 |
|---|---|---|
The node is cordoned |
节点处于维护模式 | kubectl uncordon <node> |
Cannot delete default namespace |
系统命名空间保护 | 无法删除 |
error: current-context must be set |
未设置上下文 | kubectl config use-context <name> |
connection refused |
API Server 不可达 | 检查集群网络和 API Server |
| 节点 NotReady | kubelet 未运行 | systemctl status kubelet |
| Pod Pending | 资源不足或调度限制 | kubectl describe pod |
下一期预告:Kubernetes Pod 管理——单容器 Pod、多容器 Pod、Pod 生命周期、restartPolicy、Init Container、静态 Pod、pause 容器深度解析。
更多推荐
所有评论(0)