欢迎光临
我们一直在努力

第三篇:《Kubectl 常用命令与资源管理》

kubectl 是 Kubernetes 的命令行工具,也是你与集群交互的主要方式。掌握常用命令、资源查看、对象管理、调试技巧,能让你高效地操作任何 K8s 集群。本文系统讲解 kubectl 的基本语法、常用子命令、资源类型缩写、输出格式定制,以及配置管理,并给出大量实战示例。

一、Kubectl 基本语法

kubectl [command] [TYPE] [NAME] [flags]

command:对资源执行的操作,如 get, describe, create, apply, delete, logs, exec。

TYPE:资源类型(如 pod, deployment, service, node),支持单数和复数缩写(po, deploy, svc, no)。

NAME:资源名称,省略时表示所有资源(受命名空间限制)。

flags:可选参数,如 -n namespace、-o wide、–context。

二、常用命令速查表
在这里插入图片描述

三、资源类型与缩写
常用资源的完整名称和缩写(kubectl api-resources 查看全部):

完整名称缩写作用域
podspo命名空间
servicessvc命名空间
deploymentsdeploy命名空间
replicasetsrs命名空间
statefulsetssts命名空间
daemonsetsds命名空间
jobs-命名空间
cronjobscj命名空间
configmapscm命名空间
secrets-命名空间
persistentvolumeclaimspvc命名空间
persistentvolumespv集群
namespacesns集群
nodesno集群
ingressesing命名空间

技巧:使用 kubectl api-resources 快速查看所有支持的资源及其短名称。

四、输出格式定制
通过 -o 或 –output 控制输出格式:

格式说明示例
wide额外信息(Pod IP、节点)kubectl get pods -o wide
yamlYAML 格式kubectl get pod nginx -o yaml
jsonJSON 格式kubectl get pod nginx -o json
jsonpath提取特定字段kubectl get pod nginx -o jsonpath='{.status.podIP}'
custom-columns自定义列kubectl get pods -o custom-columns=NAME:.metadata.name,IP:.status.podIP

实用 jsonpath 示例:

# 获取所有 Pod 的名称
kubectl get pods -o jsonpath='{range .items[*]}{.metadata.name}{"\\n"}{end}'

# 获取特定节点的 Pod 名称
kubectl get pods -o jsonpath='{.items[?(@.spec.nodeName=="node1")].metadata.name}'

五、资源创建与更新
5.1 声明式管理(推荐)
使用 YAML 或 JSON 文件定义资源,然后执行 apply:

kubectl apply -f deployment.yaml
kubectl apply -f ./manifests/ # 应用目录下所有 YAML
kubectl apply -f https://example.com/deploy.yaml

apply 使用 last-applied-configuration 注解执行增量更新,适合长期维护。

5.2 命令式管理(临时调试用)

# 创建 Deployment
kubectl create deployment nginx –image=nginx –replicas=3

# 创建 Service
kubectl expose deployment nginx –port=80 –type=LoadBalancer

# 创建 ConfigMap 从文件
kubectl create configmap app-config –from-file=./app.conf

# 创建 Secret 从字面值
kubectl create secret generic db-secret –from-literal=password=123456

生产环境推荐使用声明式(YAML + GitOps),便于版本控制和审计。

六、查看与调试
6.1 查看资源

kubectl get pods –show-labels # 显示标签
kubectl get pods -l app=nginx # 按标签筛选
kubectl get pods -n kube-system # 指定命名空间
kubectl get pods –field-selector status.phase=Running # 按字段筛选

6.2 描述资源
describe 命令输出资源的详细状态、事件、最新变更:

kubectl describe pod my-pod
kubectl describe node node1

查看 Events 部分对排查故障非常有用(如拉取镜像失败、调度失败、探针错误)。

6.3 实时监控

kubectl get pods -w # 持续监听变化
kubectl get events –watch # 实时事件流
kubectl get pods -o wide –watch # 组合使用

6.4 日志查看

kubectl logs my-pod # 单容器 Pod
kubectl logs my-pod -c sidecar-container # 多容器 Pod 指定容器
kubectl logs -l app=nginx –tail=20 # 按标签筛选,最后20行
kubectl logs -f my-pod # 实时跟踪
kubectl logs my-pod –previous # 查看上一个崩溃容器的日志

6.5 进入容器执行命令

kubectl exec my-pod — ls -l /tmp
kubectl exec -it my-pod — /bin/bash # 交互式 Shell
kubectl exec -it my-pod -c sidecar — sh # 多容器时指定容器

6.6 端口转发
将本地端口转发到 Pod 或 Service 的端口,便于调试:

kubectl port-forward pod/my-pod 8080:80
kubectl port-forward service/my-service 8080:80

七、标签与选择器
标签是 Kubernetes 组织资源的核心机制。为资源添加标签:

kubectl label pods my-pod app=web version=v1
kubectl label pods my-pod version- # 删除标签

选择器(-l)支持等值(=、==、!=)和集合(in、notin):

kubectl get pods -l 'app in (web,api),version!=v2'

八、命名空间管理
命名空间用于资源隔离(如环境、团队)。

kubectl create namespace dev
kubectl get namespaces
kubectl config set-context –current –namespace=dev # 切换默认命名空间
kubectl run nginx –image=nginx -n dev # 指定命名空间
kubectl delete namespace dev # 删除命名空间(会删除其下所有资源)

九、常用别名与自动补全
提高效率的配置:

# 设置别名
alias k=kubectl
alias kgp='kubectl get pods'
alias kd='kubectl describe'
alias kdel='kubectl delete'
alias kexec='kubectl exec -it'
alias klogs='kubectl logs'

# Bash 自动补全(永久生效)
echo 'source <(kubectl completion bash)' >> ~/.bashrc
echo 'alias k=kubectl' >> ~/.bashrc
echo 'complete -o default -F __start_kubectl k' >> ~/.bashrc
source ~/.bashrc

十、配置管理(kubeconfig)
默认配置文件为 ~/.kube/config,支持多集群、多上下文。

kubectl config view # 查看当前配置
kubectl config get-contexts # 列出所有上下文
kubectl config current-context # 当前上下文
kubectl config use-context <name> # 切换上下文
kubectl config set-credentials ... # 设置用户认证
kubectl config set-cluster ... # 设置集群

十一、常见故障排查流程
现象排查命令
Pod 一直 Pendingkubectl describe pod 查看 Events,确认资源不足或节点污点
Pod 不断重启kubectl logs  --previous 查看上一容器日志,检查探针配置
Service 无法访问kubectl get endpoints  是否有后端 Pod;kubectl exec 另一 Pod 用 curl 测试 ClusterIP
Node NotReadykubectl describe node 查看 Condition,检查 kubelet 进程
拉取镜像失败kubectl describe pod 查看 Events,检查镜像名、私有仓库认证

十二、小结
kubectl 是管理 K8s 集群的强大工具。掌握常用命令、输出格式、标签选择器、命名空间、调试技巧,能让你应对日常运维和开发需求。建议熟记资源缩写、善于使用 describe 和 logs 排查问题,并结合 apply -f 进行声明式管理。

赞(0)
未经允许不得转载:171主机测评 » 第三篇:《Kubectl 常用命令与资源管理》
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址