kubectl常用命令

kubectl常用命令

kubectl是Kubernetes集群的核心命令行管理工具,用于部署、管理和调试集群中的资源(如Pod、Deployment、Service等)。以下是日常使用中最常用的命令分类整理:

一、基础命令

1. 查看集群信息

• 查看集群基本信息:kubectl cluster-info

输出集群控制平面(Control Plane)的API服务器地址、CoreDNS服务地址等关键信息,帮助确认集群是否正常运行。

• 查看客户端与服务端版本:kubectl version --short=true

显示kubectl客户端版本和Kubernetes服务端版本,确保版本兼容性(如客户端版本通常不低于服务端版本的1个小版本)。

2. 查看资源对象

• 查看Pod列表:kubectl get pods [-n 命名空间] [-o wide]

默认显示当前命名空间下的Pod名称、状态、重启次数、年龄;-n指定命名空间(如-n kube-system查看系统Pod);-o wide显示额外信息(如Pod所在节点)。

• 查看Deployment列表:kubectl get deployments [-n 命名空间]

显示Deployment名称、副本数、更新策略、可用副本数等,是管理无状态应用的关键资源。

• 查看Service列表:kubectl get services [-n 命名空间]

显示Service名称、类型(ClusterIP/NodePort/LoadBalancer)、端口映射、关联的Pod选择器(Selector)。

• 查看所有资源:kubectl get all [-n 命名空间]

快速查看当前命名空间下的Pod、Service、Deployment、ReplicaSet等常见资源,简化操作。

3. 查看资源详情

• 查看Pod详细信息:kubectl describe pod <pod-name> [-n 命名空间]

输出Pod的事件(如调度、拉取镜像、启动容器)、容器状态、资源请求/限制、节点信息等,是排查Pod问题的核心命令(如Pod卡在Pending状态时,可通过此命令查看事件原因)。

• 查看Deployment详细信息:kubectl describe deployment <deployment-name> [-n 命名空间]

显示Deployment的副本数、更新策略、滚动更新状态、关联的ReplicaSet等,帮助了解应用部署情况。

• 查看Service详细信息:kubectl describe service <service-name> [-n 命名空间]

输出Service的端口映射、关联的Pod Endpoints(即Pod IP:Port列表)、选择器匹配的Pod数量等,确认Service是否正常转发流量。

4. 查看日志与执行命令

• 查看Pod容器日志:kubectl logs <pod-name> [-c 容器名称] [-n 命名空间]

默认显示Pod中第一个容器的日志;-c指定容器名称(适用于多容器Pod);-n指定命名空间。

• 实时查看日志:kubectl logs -f <pod-name> [-c 容器名称] [-n 命名空间]

类似Linux的tail -f命令,实时输出容器日志,用于监控应用运行状态(如查看Nginx访问日志)。

• 进入容器执行命令:kubectl exec -it <pod-name> -- /bin/bash [-c 容器名称] [-n 命名空间]

-it表示交互模式(分配伪终端);--后跟要执行的命令(如/bin/bash进入容器终端,ls /查看容器内文件);-c指定容器名称(多容器Pod必用);-n指定命名空间。

二、创建与管理资源

1. 创建资源

• 通过YAML文件创建:kubectl create -f <resource-file.yaml>

从YAML文件(如pod.yamldeployment.yaml)创建资源,是Kubernetes推荐的声明式管理方式(YAML文件需符合Kubernetes API规范)。

• 快速创建Pod:kubectl run <pod-name> --image=<image-name> [--port=<port>]

快速创建一个Pod(不推荐用于生产环境,仅用于测试),--image指定镜像名称(如nginx:1.25),--port指定容器端口(可选)。

• 暴露服务:kubectl expose deployment <deployment-name> --port=<service-port> --target-port=<pod-port> --type=<service-type> [-n 命名空间]

将Deployment暴露为Service,--port是Service的端口(对外暴露),--target-port是Pod的端口(应用监听端口),--type指定服务类型(ClusterIP默认,NodePort对外暴露,LoadBalancer云厂商负载均衡)。

2. 更新资源

• 设置镜像版本:kubectl set image deployment/<deployment-name> <container-name>=<new-image>:<tag> [-n 命名空间]

更新Deployment中指定容器的镜像版本(如kubectl set image deployment/nginx nginx=nginx:1.26),触发滚动更新(自动替换旧Pod)。

• 调整副本数量:kubectl scale deployment <deployment-name> --replicas=<number> [-n 命名空间]

扩容或缩容Deployment的副本数(如kubectl scale deployment/nginx --replicas=5将副本数调整为5),适用于应对流量波动。

• 自动扩缩容:kubectl autoscale deployment <deployment-name> --min=<min-replicas> --max=<max-replicas> --cpu-percent=<threshold> [-n 命名空间]

开启Horizontal Pod Autoscaler(HPA),根据CPU利用率自动调整副本数(如--min=2 --max=10 --cpu-percent=80表示CPU利用率超过80%时,自动扩容至最多10个副本)。

3. 删除资源

• 删除资源:kubectl delete <resource-type> <resource-name> [-n 命名空间]

删除指定资源(如kubectl delete pod/nginx删除名为nginx的Pod,kubectl delete deployment/nginx删除名为nginx的Deployment)。

• 按标签删除:kubectl delete <resource-type> -l <label-key>=<label-value> [-n 命名空间]

通过标签选择器批量删除资源(如kubectl delete pod -l app=nginx删除所有带有app=nginx标签的Pod),适用于管理有共同特征的Pod。

三、集群管理

1. 节点管理

• 查看节点列表:kubectl get nodes

显示集群中所有节点的名称、状态(Ready/NotReady)、角色(master/worker)、年龄等。

• 标记节点不可调度:kubectl cordon <node-name>

将节点标记为"不可调度"(SchedulingDisabled),新Pod不会调度到该节点,适用于节点维护前的准备。

• 恢复节点可调度:kubectl uncordon <node-name>

取消节点的"不可调度"标记,新Pod可以调度到该节点。

• 驱赶节点上的Pod:kubectl drain <node-name> [--ignore-daemonsets]

驱赶节点上的所有Pod到其他可用节点(--ignore-daemonsets忽略DaemonSet管理的Pod,如日志采集组件),通常与cordon一起使用,用于节点维护。

2. 标签与选择器

• 查看节点标签:kubectl get nodes --show-labels

显示节点的所有标签(如disktype=ssdregion=us-east),标签用于资源分组和调度。

• 给节点打标签:kubectl label nodes <node-name> <label-key>=<label-value>

给节点添加标签(如kubectl label nodes node-01 disktype=ssd),可用于调度Pod到指定类型的节点(如nodeSelector: {disktype: ssd})。

• 删除节点标签:kubectl label nodes <node-name> <label-key>-

删除节点的指定标签(如kubectl label nodes node-01 disktype-)。

四、故障排查

1. 查看资源状态详情

• 查看Pod状态:kubectl describe pod <pod-name> [-n 命名空间]

通过事件日志(Events)查看Pod无法创建的原因(如镜像拉取失败、资源不足、调度失败),是排查Pod问题的第一步。

• 查看Deployment状态:kubectl describe deployment <deployment-name> [-n 命名空间]

查看Deployment的滚动更新状态、副本数是否符合预期、是否有容器重启等,帮助排查应用部署问题。

2. 回滚部署

• 查看部署历史:kubectl rollout history deployment <deployment-name> [-n 命名空间]

显示Deployment的历史版本(每次更新都会生成一个版本),帮助确定回滚的目标版本。

• 回滚到上一个版本:kubectl rollout undo deployment <deployment-name> [-n 命名空间]

回滚到上一个稳定版本(如kubectl rollout undo deployment/nginx)。

• 回滚到指定版本:kubectl rollout undo deployment <deployment-name> --to-revision=<revision-number> [-n 命名空间]

回滚到指定版本(如kubectl rollout undo deployment/nginx --to-revision=3回滚到第3个版本)。

相关推荐
新手小白*34 分钟前
K8S DaemonSet 控制器
k8s
喜欢你,还有大家41 分钟前
sealos——高可用集群的部署
云原生·容器·kubernetes
seven_76782309841 分钟前
【前瞻创想】Kurator架构演进与云原生未来
分布式·云原生·架构·kurator·全链路
熊出没1 小时前
微服务架构介绍
微服务·云原生·架构
能不能别报错1 小时前
k8s的cicd流水线环境搭建实验
云原生·容器·kubernetes
Hernon1 小时前
微服务架构设计 - 单体架构
微服务·云原生·架构·系统架构
todoitbo1 小时前
openEuler 云原生进阶:K3s 轻量级 Kubernetes 集群实战
云原生·容器·kubernetes·openeuler
凯子坚持 c1 小时前
深探 openEuler 云原生基石:iSula 与 Kata Containers 安全容器的极致评测与性能剖析
安全·云原生·rpc
菜萝卜子2 小时前
k8s 启动 postgresql 数据库
数据库·postgresql·kubernetes
xcLeigh2 小时前
实测 openEuler 生态适配与应用部署:多架构 + 云原生 + 数据库全场景落地指南
数据库·云原生·架构·openeuler