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

Kubernetes 运维指南:kubectl 命令全解析

前言

一、基本说明

二、集群信息与环境配置

1. 版本信息

2. 资源类型查询

3. 集群信息

4. 自动补全

5. 服务日志

三、资源查看命令

基本查询语法

实用示例

四、命名空间管理

五、Deployment 管理

创建 Deployment

查看 Deployment 信息

Pod 操作

强制删除 Pod

六、扩缩容

七、删除 Deployment

八、应用生命周期操作

创建 Deployment

验证状态

九、发布 Service

暴露服务

查看服务状态

十、滚动更新

更新镜像

监控更新过程

十一、金丝雀发布(Canary Release)

暂停式更新

验证新版本

完成更新

十二、回滚操作

十三、删除应用

十四、声明式管理方式

YAML 操作

十五、调试与监控命令

十六、节点维护命令

十七、权限与账户管理

十八、标签与选择器

十九、帮助命令

总结

前言

本文系统整理了kubectl的常用命令和参数说明,涵盖集群管理、应用部署、服务发布、故障排查等核心场景。通过清晰的分类和实用的示例,帮助读者快速掌握这一重要工具,提升Kubernetes集群的管理效率。

无论您是初学者还是有一定经验的用户,都能从本文中找到实用的操作指南,为云原生之旅奠定坚实的基础。

一、基本说明

kubectl 是 Kubernetes 官方命令行工具,用于与 kube-apiserver 通信。它将用户输入转化为 API 请求,再由控制组件(controller、scheduler、kubelet)执行操作,是管理 Kubernetes 集群的核心工具。

二、集群信息与环境配置

1. 版本信息

bash

kubectl version

  • 作用:查看 kubectl 客户端与集群服务端的版本信息

  • 用途:排查版本兼容问题(客户端版本需与集群版本兼容)

2. 资源类型查询

bash

kubectl api-resources

  • 作用:列出所有可操作的资源类型(Pod、Service、Deployment 等)

  • 用途:了解资源的全名、缩写和所属的 API 组

3. 集群信息

bash

kubectl cluster-info

  • 作用:查看集群主控组件(API Server、Controller Manager、Scheduler)的访问地址

4. 自动补全

bash

source <(kubectl completion bash)

  • 作用:启用命令自动补全功能

  • 参数解释

    • <(kubectl completion bash):输出 bash 补全脚本

    • source:在当前终端加载脚本

5. 服务日志

bash

journalctl -u kubelet -f

  • 作用:实时查看 kubelet 服务日志

  • 参数解释

    • -u kubelet:只显示 kubelet 服务

    • -f:持续输出最新日志(follow)

三、资源查看命令

基本查询语法

bash

kubectl get <resource> [-o wide|json|yaml] [-n namespace]

  • 作用:查看资源对象列表

  • 参数解释

    • <resource>:资源类型,如 podssvcdeployment

    • -n <namespace>:指定命名空间

    • -A:显示所有命名空间

    • -o wide:显示更多列信息(如节点名)

    • -o yaml/json:以 YAML 或 JSON 格式输出

实用示例

bash

# 查看所有命名空间下的所有 Pod
kubectl get pods -A
​
# 查看 default 命名空间中的所有资源
kubectl get all -n default

四、命名空间管理

bash

# 查看集群中现有的命名空间
kubectl get ns
​
# 创建命名空间
kubectl create ns app
​
# 删除命名空间
kubectl delete ns app

⚠️ 注意:系统命名空间(如 kube-systemkube-public)受保护,无法删除。

五、Deployment 管理

创建 Deployment

bash

kubectl create deployment nginx-wl --image=nginx -n kube-public

  • 参数解释

    • --image=nginx:指定镜像

    • -n kube-public:命名空间

查看 Deployment 信息

bash

kubectl describe deployment nginx-wl -n kube-public

  • 作用:查看 Deployment 的详细信息(状态、副本数、事件等)

Pod 操作

bash

# 查看 Pod 状态
kubectl get pods -n kube-public
​
# 进入 Pod 容器执行交互式命令
kubectl exec -it nginx-wl-d47f99cb6-hv6gz -n kube-public -- bash
​
# 删除指定 Pod
kubectl delete pod nginx-wl-d47f99cb6-hv6gz -n kube-public

强制删除 Pod

bash

kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0

  • 参数解释

    • --force:跳过 API 安全检查,立即删除

    • --grace-period=0:优雅退出时间设为 0 秒

六、扩缩容

bash

kubectl scale deployment nginx-wl --replicas=2 -n kube-public

  • 参数解释

    • --replicas=<num>:目标副本数量

七、删除 Deployment

bash

kubectl delete deployment nginx-wl -n kube-public

  • 删除整个 Deployment 及其所有 Pod

八、应用生命周期操作

创建 Deployment

bash

kubectl create deployment nginx --image=nginx:1.14 --port=80 --replicas=3

  • 参数说明

    • --image=nginx:1.14:指定镜像及版本

    • --port=80:容器开放端口

    • --replicas=3:副本数量为 3

验证状态

bash

kubectl get pods

  • 查看 Pod 状态,验证是否运行

九、发布 Service

暴露服务

bash

kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

  • 参数解释

    • --target-port:容器内部监听端口

    • --type=NodePort:以 NodePort 方式暴露

    • --name:自定义 Service 名称

    • --port:Service 对外暴露的端口

查看服务状态

bash

kubectl get pods,svc -o wide

  • 查看 Pod 和 Service 的详细信息

十、滚动更新

更新镜像

bash

kubectl set image deployment/nginx nginx=nginx:1.15

  • 参数解释

    • set image:修改容器镜像

    • deployment/nginx:指定资源类型与名称

    • nginx=nginx:1.15:容器名=新镜像

监控更新过程

bash

# 实时监控 Pod 状态变化
kubectl get pods -w
​
# 查看 Deployment 滚动更新进度
kubectl rollout status deployment/nginx

十一、金丝雀发布(Canary Release)

暂停式更新

bash

kubectl set image deployment/nginx nginx=nginx:1.14 && kubectl rollout pause deployment/nginx

  • 参数解释

    • rollout pause deployment/nginx:暂停 Deployment 的滚动更新

验证新版本

bash

# 查看更新状态
kubectl rollout status deployment/nginx
​
# 实时监控 Pod 状态
kubectl get pods -w
​
# 验证新版本 Pod 功能
curl -I <新版本Pod的IP>

完成更新

bash

# 继续完成剩余 Pod 的滚动更新
kubectl rollout resume deployment/nginx
​
# 验证最终状态
kubectl get pods -w
curl -I <新版本Pod的IP>

十二、回滚操作

bash

# 查看历史版本
kubectl rollout history deployment/nginx
​
# 回滚至上一个版本
kubectl rollout undo deployment/nginx
​
# 回滚至指定版本号
kubectl rollout undo deployment/nginx --to-revision=1

十三、删除应用

bash

kubectl delete deployment nginx
kubectl delete svc nginx-service
kubectl get all

  • 删除应用与服务,查看结果确认是否清理干净

十四、声明式管理方式

YAML 操作

bash

# 导出当前 Deployment 的 YAML 配置
kubectl get deployment nginx -o yaml
​
# 声明式更新:让实际状态与 YAML 描述一致
kubectl apply -f nginx.yaml
​
# 根据 YAML 删除对应资源
kubectl delete -f nginx.yaml
​
# 在线编辑 Service 配置
kubectl edit svc nginx

十五、调试与监控命令

bash

# 查看 Pod 的详细信息
kubectl describe pod <pod-name>
​
# 查看容器日志输出
kubectl logs <pod-name>
​
# 进入容器调试
kubectl exec -it <pod-name> -- bash
​
# 查看资源使用率(需启用 metrics-server)
kubectl top pod
kubectl top node

十六、节点维护命令

bash

# 标记节点为"不可调度"
kubectl cordon node01
​
# 驱逐节点上运行的 Pod(用于维护或下线)
kubectl drain node01
​
# 恢复节点为可调度状态
kubectl uncordon node01

十七、权限与账户管理

bash

# 创建 ServiceAccount
kubectl create serviceaccount admin-user
​
# 绑定最高权限角色
kubectl create clusterrolebinding admin-user --clusterrole=cluster-admin --serviceaccount=default:admin-user

十八、标签与选择器

bash

# 给 Pod 添加标签
kubectl label pods mypod app=nginx
​
# 按标签筛选 Pod
kubectl get pods -l app=nginx

十九、帮助命令

bash

# 查看字段的详细说明与结构
kubectl explain pod.spec.containers

总结

kubectl 是 Kubernetes 的中枢工具,它不直接"干活",而是将命令转换成 API 调用。集群的其他组件(scheduler、controller、kubelet)会根据这些声明,去达成用户定义的"理想状态"。

通过熟练掌握这些命令,您可以高效地管理和维护 Kubernetes 集群,实现应用的自动化部署、扩展和管理。

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

相关文章:

  • 网站logo关键字参数
  • ubuntu下桌面应用启动图标的内容文件
  • Leetcode 25
  • 西安博达网站建设自己制作wordpress plugin
  • OpenCV的数据类型二
  • Serdes专题(3)Lattice Serdes架构
  • 人形机器人项目中使用Ubuntu-Server安装桌面系统进行远程xrdp远程连接操作
  • 京东开源了一款大模型安全框架:JoySafety,说是京东内部已应用,实现95%+攻击拦截率
  • 【传奇开心果系列】基于Flet框架实现的关于页面创建和提供文件下载集成了网络请求、文件下载、剪贴板操作功能自定义模板特色和实现原理深度解析
  • ​为什么我们需要将Flow转换为StateFlow?​​
  • vscode远程连接云服务器的初次尝试
  • 甘肃网站开发公司用手机怎么做免费网站
  • 网站是由多个网页组成的吗济南网约车平台
  • Linux系统下的终端,会话,shell,bash,进程组这几个概念的关系。
  • 微信小程序入门学习教程,从入门到精通,自定义组件与第三方 UI 组件库(以 Vant Weapp 为例) (16)
  • 银河麒麟V10高级服务器版Bash快捷键经常失效
  • 建设网站平台需要什么硬件配置电脑上买wordpress
  • Jessibuca 播放器
  • minio之docker的单机版安装
  • 主流 AI IDE 之一的 Qoder 和 Lingma IDE 介绍
  • 搜索不到网站的关键词国家企业信用公示系统官网查询
  • PostgreSQL在Linux中的部署和安装教程
  • AI大事记12:Transformer 架构——重塑 NLP 的革命性技术(上)
  • PostgreSQL JDBC 连接参数大全
  • 【SpringBoot从初学者到专家的成长11】Spring Boot中的application.properties与application.yml详解
  • 简述你对于网站建设的认识h5微网站开发
  • OpenHarmony IMF输入法框架全解析:从原理到自定义输入法开发实战指南
  • LabVIEW的PID控制器带报警仿真系统
  • WordPress--代码块添加折叠和展开功能
  • 爱站网能不能挖掘关键词做网站Linux