龙岩市网站建设_网站建设公司_C#_seo优化
2026/1/5 21:24:34 网站建设 项目流程
Kubernetes(k8s)的常用核心组件和高频命令,这是上手 k8s 的基础 —— 我会先清晰拆解核心组件(控制平面 + 节点组件),再按 “日常操作场景” 整理高频命令,结合使用示例,新手也能快速落地。
 

一、K8s 核心组件(控制平面 + 节点组件)

 
k8s 的组件分为控制平面(Master 节点) 和节点组件(Worker 节点),前者负责集群管理,后者负责执行具体任务,先看核心组件的作用和定位:
 
组件类型组件名称核心作用
控制平面 kube-apiserver 所有操作的统一入口(REST API),集群的 “网关”,所有组件都通过它交互
  etcd 集群的 “数据库”,存储所有集群状态(如 Pod、Service 配置),强一致性分布式存储
  kube-scheduler 调度器,负责把 Pod 分配到合适的 Worker 节点(按资源、亲和性等规则)
  kube-controller-manager 控制器管理器,包含多种控制器(如 Node 控制器、Pod 控制器、Service 控制器),保证集群状态符合预期
  cloud-controller-manager 对接云厂商 API(如 AWS/Aliyun),管理云资源(如负载均衡、持久化存储)
节点组件 kubelet 每个 Worker 节点的 “管家”,监听 apiserver,管理本机 Pod 的生命周期(启动 / 停止)
  kube-proxy 每个 Worker 节点的网络代理,维护节点的网络规则,实现 Service 的负载均衡
  容器运行时(Container Runtime) 运行容器的底层引擎,如 Docker、containerd、CRI-O
 

补充:核心插件(非内置但必须)

 
  • CoreDNS:提供集群内 DNS 服务,让 Pod 可以通过 Service 名称访问服务;
  • Network Plugin:网络插件,实现 Pod 间网络互通(如 Calico、Flannel、Cilium);
  • Ingress Controller:实现 HTTP/HTTPS 路由(如 Nginx Ingress)。
 

二、K8s 高频命令(按场景分类,附示例)

 
k8s 的核心命令行工具是kubectl,以下是日常开发 / 运维最常用的命令,按 “查看、操作、调试、集群管理” 分类:
 

1. 基础查看类(最常用)

 
用于查看集群资源状态,是排查问题的第一步:
 
bash
# 1. 查看集群信息(节点、版本、API地址)
kubectl cluster-info# 2. 查看节点列表(-o wide显示更多信息:IP、容器运行时)
kubectl get nodes
kubectl get nodes -o wide# 3. 查看Pod(核心!-n 指定命名空间,-o wide显示节点、IP)
kubectl get pods  # 查看默认命名空间Pod
kubectl get pods -n kube-system  # 查看kube-system命名空间(系统组件)
kubectl get pods -o wide  # 显示Pod所在节点、IP
kubectl get pods -A  # 查看所有命名空间的Pod(-A = --all-namespaces)
kubectl get pods --watch  # 实时监控Pod状态变化# 4. 查看Service(服务,-o yaml显示完整配置)
kubectl get svc  # 查看默认命名空间Service
kubectl get svc -n default -o yaml  # 查看某个Service的完整YAML配置# 5. 查看其他常用资源
kubectl get deploy  # 查看Deployment(无状态应用控制器)
kubectl get rs  # 查看ReplicaSet(副本集)
kubectl get configmap  # 查看配置映射
kubectl get secret  # 查看密钥(敏感信息)
kubectl get ingress  # 查看Ingress路由规则
kubectl get pvc  # 查看持久化卷声明
kubectl get pv  # 查看持久化卷# 6. 查看资源详情(描述信息,排查问题核心)
kubectl describe pod <pod-name> -n <namespace>  # 查看Pod详细信息(事件、容器、挂载等)
kubectl describe node <node-name>  # 查看节点详情(资源使用、污点、标签)
kubectl describe deploy <deploy-name>  # 查看Deployment详情
 
 

2. 资源操作类(创建 / 删除 / 更新)

 
用于管理资源的生命周期:
 
bash
# 1. 通过YAML文件创建资源(最推荐的方式)
kubectl apply -f <yaml-file>  # 创建/更新资源(幂等,重复执行不会报错)
kubectl create -f <yaml-file>  # 创建资源(非幂等,已存在会报错)# 2. 删除资源
kubectl delete pod <pod-name> -n <namespace>  # 删除单个Pod
kubectl delete deploy <deploy-name> -n <namespace>  # 删除Deployment(会自动删除Pod)
kubectl delete -f <yaml-file>  # 通过YAML文件删除资源
kubectl delete pods --all -n <namespace>  # 删除命名空间下所有Pod# 3. 编辑资源(实时修改配置)
kubectl edit deploy <deploy-name> -n <namespace>  # 编辑Deployment(会自动触发滚动更新)
kubectl edit svc <svc-name> -n <namespace>  # 编辑Service# 4. 扩缩容(调整Deployment的副本数)
kubectl scale deploy <deploy-name> --replicas=3 -n <namespace>  # 缩容/扩容到3个副本# 5. 滚动更新(更新镜像)
kubectl set image deploy <deploy-name> <container-name>=<new-image> -n <namespace>
# 示例:更新nginx-deploy的nginx容器镜像为nginx:1.25
kubectl set image deploy nginx-deploy nginx=nginx:1.25 -n default# 6. 回滚更新(如果更新出问题)
kubectl rollout undo deploy <deploy-name> -n <namespace>  # 回滚到上一版本
kubectl rollout history deploy <deploy-name> -n <namespace>  # 查看更新历史
 
 

3. 调试排障类(定位 Pod / 容器问题)

 
用于排查 Pod 启动失败、运行异常等问题:
 
bash
# 1. 查看Pod日志(核心!-f 实时跟踪,--tail 查看最后N行)
kubectl logs <pod-name> -n <namespace>  # 查看Pod日志(单容器)
kubectl logs <pod-name> -c <container-name> -n <namespace>  # 多容器Pod指定容器
kubectl logs <pod-name> -f -n <namespace>  # 实时跟踪日志(类似tail -f)
kubectl logs <pod-name> --tail=100 -n <namespace>  # 查看最后100行日志# 2. 进入Pod的容器(调试)
kubectl exec -it <pod-name> -n <namespace> -- /bin/bash  # 进入容器(bash)
kubectl exec -it <pod-name> -c <container-name> -n <namespace> -- sh  # 多容器指定容器# 3. 复制文件(Pod ↔ 本地)
kubectl cp <namespace>/<pod-name>:<pod-path> <local-path>  # Pod文件复制到本地
kubectl cp <local-path> <namespace>/<pod-name>:<pod-path>  # 本地文件复制到Pod# 4. 查看Pod的容器状态(排查启动失败)
kubectl get pods <pod-name> -o jsonpath='{.status.containerStatuses}' -n <namespace># 5. 临时运行一个Pod(测试集群网络/环境)
kubectl run -it --rm debug-pod --image=busybox -- sh  # 运行busybox Pod,退出后删除
 
 

4. 集群管理类(节点 / 命名空间 / 权限)

 
bash
# 1. 管理命名空间
kubectl create namespace <ns-name>  # 创建命名空间
kubectl delete namespace <ns-name>  # 删除命名空间
kubectl get namespaces  # 查看所有命名空间# 2. 给节点打标签/污点(调度用)
kubectl label nodes <node-name> env=prod  # 给节点打标签(用于亲和性调度)
kubectl taint nodes <node-name> key=value:NoSchedule  # 给节点加污点(阻止Pod调度)# 3. 查看组件状态(控制平面)
kubectl get componentstatuses  # 查看控制平面组件状态(kube-apiserver/etcd等)# 4. 查看资源使用情况
kubectl top nodes  # 查看节点CPU/内存使用
kubectl top pods -n <namespace>  # 查看Pod CPU/内存使用
 

三、常用快捷技巧

  1. 命令别名:可以给kubectl设置别名(如alias k=kubectl),简化输入;
  2. 自动补全:执行source <(kubectl completion bash)开启 bash 自动补全(永久生效需配置到~/.bashrc);
  3. 简写资源类型:k8s 支持资源类型简写,如podpodeploydeploysvcsvcnsnamespace,示例:kubectl get po -A

总结

  1. 核心组件:控制平面的kube-apiserver/etcd/kube-scheduler是集群 “大脑”,节点组件的kubelet/kube-proxy是集群 “手脚”,缺一不可;
  2. 高频命令:
    • 查看类:kubectl get/describe是日常排查的基础;
    • 操作类:kubectl apply/delete/scale是资源管理核心;
    • 调试类:kubectl logs/exec是定位 Pod 问题的关键;
     
  3. 所有操作优先通过yaml文件(kubectl apply -f)执行,保证操作可追溯、可复用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询