当前位置: 首页 > news >正文

Kubernetes(K8s)资源管理

Kubernetes(K8s)资源管理

一、资源管理概述

在 Kubernetes 中,所有内容都被抽象为 “资源”,用户通过操作资源实现对集群的管理。核心资源关系如下:

  • Pod:容器的管理单元(非直接管理容器,而是容器的载体);
  • Pod 控制器:K8s 通过控制器(如 Deployment、StatefulSet)间接管理 Pod;
  • Service:为 Pod 提供统一访问入口,实现服务暴露;
  • 存储资源:提供数据持久化能力(如 PV、PVC、ConfigMap 等)。

二、kubectl 命令行工具

kubectl是 K8s 集群的命令行工具,用于管理集群和部署应用。

2.1 基本语法

kubectl [command] [type] [name] [flags]
  • command:对资源执行的操作(如create创建、get查询、delete删除);
  • type:资源类型(如pod、deployment、service);
  • name:资源名称(大小写敏感);
  • flags:可选参数(如-o yaml指定输出格式)。

2.2 常用命令速查

命令示例

功能说明

kubectl --help

查看所有 kubectl 命令及说明

kubectl get pods

查看当前命名空间下所有 Pod

kubectl get pod <pod名称>

查看指定 Pod 的基本信息

kubectl get pod <pod名称> -o yaml

以 YAML 格式查看指定 Pod 的详细配置

kubectl run <pod名称> --image=<镜像> --port=<端口>

直接创建一个 Pod(如kubectl run nginx-pod --image=nginx:1.17.1 --port=80)

三、命名空间(Namespace)

命名空间是 K8s 中用于隔离资源的虚拟环境,避免同名资源冲突。

3.1 常用操作

命令

功能

kubectl create namespace <命名空间名>

创建命名空间(如kubectl create namespace test)

kubectl get ns 或 kubectl get namespace

查看所有命名空间

kubectl run <pod名称> --image=<镜像> -n <命名空间>

在指定命名空间创建 Pod(如kubectl run nginx --image=nginx -n test)

kubectl get pod -n <命名空间>

查看指定命名空间的 Pod(如kubectl get pod -n test)

kubectl delete pod <pod名称> -n <命名空间>

删除指定命名空间的 Pod

kubectl delete ns <命名空间名>

删除命名空间(会同时删除该空间下所有资源)

3.2 系统默认命名空间

命名空间

作用

default

未指定命名空间的资源默认分配到此

kube-node-lease

维护集群节点间的心跳(v1.13 + 引入)

kube-public

所有用户(包括未认证用户)可访问的资源

kube-system

Kubernetes 系统组件(如 API Server、Calico)所在的命名空间

四、资源管理的三种方式

K8s 提供三种资源管理方式,适用于不同场景:

4.1 命令式对象管理

特点:直接通过命令操作资源,无需配置文件。

适用场景:测试环境(快速验证、临时操作)。

优点:简单直观,上手快;

缺点:仅能操作当前活动对象,无法跟踪历史变更,不便于审计。

操作示例
  1. 创建 Pod
    # 在default命名空间创建nginx Podkubectl run nginx-pod --image=nginx:1.17.1 --port=80

  2. 查询资源
    # 查看所有Podkubectl get pods# 查看指定Pod的详细信息kubectl describe pod nginx-pod

  3. 删除资源
    # 删除指定Podkubectl delete pod nginx-pod

  4. 命名空间操作(见 3.1 节)。

4.2 命令式对象配置

特点:通过配置文件(YAML/JSON)定义资源,再用命令操作文件。

适用场景:开发环境(需跟踪配置变更)。

优点:配置文件可版本控制,便于审计和回溯;

缺点:项目规模大时配置文件繁多,操作繁琐。

操作示例
  1. 创建配置文件(如test.yaml,支持多资源定义,用---分隔):
    # 定义命名空间devapiVersion: v1kind: Namespacemetadata:name: dev---# 在dev命名空间定义nginx PodapiVersion: v1kind: Podmetadata:name: nginx-podnamespace: dev # 指定命名空间spec:containers:- name: nginx-container # 容器名称image: nginx:latest # 容器镜像

  2. 创建资源
    kubectl create -f test.yaml

  3. 查询资源(可直接通过配置文件查询):
    kubectl get -f test.yaml

  4. 更新资源(修改配置文件后执行):
    kubectl patch -f test.yaml -p '{"spec":{"containers":[{"name":"nginx-container","image":"nginx:1.23"}]}}'

  5. 删除资源
kubectl delete -f test.yaml

4.3 声明式对象配置

特点:通过kubectl apply命令操作配置文件,仅描述资源的 “最终状态”。

适用场景:开发 / 生产环境(支持批量操作,适合复杂项目)。

优点:支持目录级操作,自动判断资源状态(创建或更新);

缺点:异常情况下调试难度较高。

核心原理

kubectl apply会对比配置文件中的 “期望状态” 与集群中资源的 “当前状态”:

  • 若资源不存在:自动创建(等效于kubectl create);
  • 若资源已存在:自动更新差异部分(等效于kubectl patch)。
操作示例
  1. 创建 / 更新资源(使用 4.2 节的test.yaml):
    # 首次执行:创建资源kubectl apply -f test.yaml# 修改test.yaml后再次执行:更新资源kubectl apply -f test.yaml

  2. 批量操作目录中的配置文件
# 对configs目录下所有.yaml文件执行applykubectl apply -f configs/

五、资源管理方式推荐

操作场景

推荐方式

命令示例

创建 / 更新资源

声明式对象配置

kubectl apply -f <配置文件/目录>

删除资源

命令式对象配置

kubectl delete -f <配置文件>

查询资源

命令式对象管理

kubectl get <资源类型> [名称] 或 kubectl describe <资源类型> [名称]


六、kubectl --help 核心命令解释

kubectl --help列出的命令按功能可分为基础操作、资源管理、集群维护、故障排查、工具辅助五大类,以下是核心命令的详细解释:

6.1 基础操作类(资源创建 / 查询 / 删除)

命令

功能说明

示例

create

从命令行或配置文件创建资源(支持 Pod、Deployment、Service 等)

kubectl create deployment nginx --image=nginx(创建 Deployment)

get

查看资源的基本信息(默认显示名称、就绪状态、重启次数、年龄)

kubectl get pods -n dev(查看 dev 命名空间的 Pod)

describe

查看资源的详细信息(含事件、关联资源、配置详情)

kubectl describe pod nginx-pod(查看 nginx-pod 的详细日志)

delete

删除指定资源(支持按名称、标签、配置文件删除)

kubectl delete pod nginx-pod(删除单个 Pod)、kubectl delete -f test.yaml(按文件删除)

6.2 资源更新类(配置修改 / 版本管理)

命令

功能说明

示例

apply

声明式创建 / 更新资源(对比配置文件与集群状态,自动同步)

kubectl apply -f nginx-deploy.yaml(创建或更新 Deployment)

patch

增量更新资源的指定字段(无需完整配置文件)

kubectl patch deployment nginx -p '{"spec":{"replicas":3}}'(将副本数改为 3)

replace

全量替换资源配置(需提供完整配置文件,覆盖原有配置)

kubectl replace -f nginx-deploy.yaml(用新文件替换旧 Deployment)

rollout

管理资源的发布流程(支持查看状态、历史版本、回滚)

kubectl rollout undo deployment nginx(回滚 nginx 的上一版本)、kubectl rollout history deployment nginx(查看发布历史)

6.3 集群维护类(节点 / 命名空间管理)

命令

功能说明

示例

cordon

标记节点为 “不可调度”(新 Pod 不分配到该节点,保留已有 Pod)

kubectl cordon node1(标记 node1 不可调度)

uncordon

取消节点的 “不可调度” 标记,恢复正常调度

kubectl uncordon node1(恢复 node1 调度)

drain

排空节点(优雅驱逐所有 Pod 到其他节点,用于节点维护)

kubectl drain node1 --ignore-daemonsets(排空 node1,忽略 DaemonSet Pod)

taint

为节点添加 / 移除 “污点”(控制 Pod 是否能调度到该节点)

kubectl taint node node1 key=value:NoSchedule(添加污点,禁止 Pod 调度)

top

查看节点或 Pod 的资源使用率(需依赖 metrics-server 组件)

kubectl top node(查看所有节点 CPU / 内存使用)、kubectl top pod(查看 Pod 资源使用)

6.4 故障排查类(日志 / 容器交互)

命令

功能说明

示例

logs

查看 Pod 中容器的日志(支持实时日志、多容器指定)

kubectl logs -f nginx-pod(实时查看 nginx-pod 日志)、kubectl logs nginx-pod -c nginx-container(指定容器)

exec

在 Pod 的容器中执行命令(支持交互式终端)

kubectl exec -it nginx-pod -- /bin/bash(进入 nginx-pod 的 bash 终端)

port-forward

将本地端口转发到 Pod 端口(本地访问 Pod 服务)

kubectl port-forward pod/nginx-pod 8080:80(本地 8080 端口映射到 Pod 的 80 端口)

cp

在本地与 Pod 之间复制文件 / 目录

kubectl cp local-file.txt nginx-pod:/tmp/(本地文件复制到 Pod 的 /tmp 目录)

proxy

启动集群 API 代理(本地通过localhost访问集群 API)

kubectl proxy --port=8001(启动代理,访问http://localhost:8001/api查看 API)

6.5 工具辅助类(信息查询 / 配置管理)

命令

功能说明

示例

version

查看 kubectl 客户端与集群服务端的版本

kubectl version(显示客户端 v1.28.0、服务端 v1.28.0)

api-resources

列出集群所有可用的资源类型(含 API 版本、是否命名)

kubectl api-resources(显示 pods、deployments、services 等资源信息)

api-versions

列出集群支持的所有 API 版本(如 v1、apps/v1)

kubectl api-versions(显示 apps/v1、networking.k8s.io/v1 等)

config

管理 kubeconfig 配置文件(切换上下文、设置集群 / 用户)

kubectl config use-context minikube(切换到 minikube 上下文)、kubectl config get-contexts(查看所有上下文)

help

查看指定命令的详细帮助(含参数、示例)

kubectl help get(查看 get 命令的用法)、kubectl help rollout undo(查看回滚命令的用法)

总结

Kubernetes 资源管理的核心是通过操作 “资源” 实现集群管控,三种方式各有侧重:

  • 命令式对象管理适合临时测试;
  • 命令式对象配置适合跟踪单个配置文件的变更;
  • 声明式对象配置适合复杂项目的批量管理,是生产环境的首选。

掌握kubectl命令和 YAML 配置文件的编写,是高效管理 K8s 集群的基础。而熟悉kubectl --help中的核心命令,能进一步提升集群操作的效率和故障排查能力。

http://www.dtcms.com/a/551300.html

相关文章:

  • wordpress第一篇文章id太原百度网站排名优化
  • 网站无备案无法登入现在做推广有什么好的方法
  • 网站设计制作有哪些原因企业年金保险是一种什么保险
  • 大良营销网站建设流程wordpress资源下载
  • Redis性能调优指南
  • 揭阳模板网站建站检察机关门户网站建设自查报告
  • 丽水北京网站建设湖北最近发生的新闻
  • 怎样建设商城网站做网站制作课程总结
  • 怎么做多语言的网站青岛三吉互联网站建设公司
  • 网站广告牌制作教程网站建设的要求及标准
  • 北京网站建设在线杭州自助建站
  • 广州网站设计总部机关门户网站 建设 方案
  • 企业网站建设方案书怎么写毕业设计旅游网站开发
  • 中国网站建设公司图片wordpress图片放大插件
  • 建设银行企业网站打不开长春制作门户网站的公司
  • 郑州网站建设公司排行榜中国十大网站
  • 网站建设项目进度表wordpress 高级
  • 吉林省延边州建设局网站广告设计与制作内容
  • 建设网站的需要的工具新乡网站建设找哪家
  • 网站重构怎么做dw2019怎么做网站
  • 三亚房产做公示是什么网站ftp下的内部网站建设
  • 国内空间站wordpress会员可见
  • 中国企业网站设计案例南昌网站设计资讯
  • seo网站推广怎样深圳建筑室内设计网站
  • 网站建设拷贝软件淘客做网站运营
  • 小软件下载网站大连模板网站制作
  • 点击app图标进入网站怎么做个人网站定制
  • 山东省住房和城乡建设厅网站定额站深圳住房与建设局官方网站
  • k8s的包管理工具helm3--流程控制语句和变量(3)
  • 电子商务网站建设与安全python编程快速上手