云其它

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > 云其它 > kubectl 命令

kubectl 命令详解

作者:头未秃

这篇文章主要介绍了kubectl 命令的相关资料,包括常用命令,基本命令和使用说明,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧

一、常用命令

1、获取信息

#获取节点信息
kubectl get nodes
#获取pod信息
kubectl get pods
#获取pod信息包含具体在哪个节点
kubectl get pods -o wide

2、部署

# 部署pod
kubectl create deployment tomcat9 --image=tomcat:9.0.102-jre17 
# 发布service
# --post=80 --target-post=8080 : pod的80端口映射容器的8080端口  
# --type=NodePort : service会代理pod的80端口
kubectl expose deployment tomcat9 --port=8080 --target-port=8080 --type=NodePort
# --dry-run 表示测试不实际运行
# -o yaml  生成yaml
# > tomcat.yaml  输出到tomcat.yaml
#根据kubectl create deployment tomcat9 --image=tomcat:9.0.102-jre17生成yaml并输出到tomcat.yaml
kubectl create deployment tomcat9 --image=tomcat:9.0.102-jre17 --dry-run -o yaml > tomcat.yaml
# 应用tomcat.yaml(根据上面命令生成的 tomcat.yaml), 实际上和kubectl create deployment tomcat6 --image=tomcat:9.0.102-jre17一样的效果,只是yaml可以自己写更灵活
kubectl apply -f tomcat.yaml

二、基本命令

使用以下语法从终端窗口运行 kubectl 命令:

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

其中 commandTYPENAMEflags 分别是:

在对多个资源执行操作时,你可以按类型和名称指定每个资源,或指定一个或多个文件,要按类型和名称指定资源:

要对所有类型相同的资源进行分组,请执行以下操作:TYPE1 name1 name2 name<#>
例子:kubectl get pod example-pod1 example-pod2

分别指定多个资源类型:TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>。
例子:kubectl get pod/example-pod1 replicationcontroller/example-rc1

用一个或多个文件指定资源:-f file1 -f file2 -f file<#>
例子:kubectl get -f ./pod.yaml(为什么使用 YAML 而不是 JSON, 是因为 YAML 对用户更友好, 特别是对于配置文件)

1、操作

操作名称描述语法示例
get列出指定类型的资源kubectl get <资源类型> [flags]kubectl get pods -n kube-system
describe显示资源详细配置和状态kubectl describe <资源类型>/<资源名称>kubectl describe node/node01
create通过文件创建资源kubectl create -f <文件路径>kubectl create -f deployment.yaml
apply通过文件更新/创建资源(幂等)kubectl apply -f <文件路径>kubectl apply -f service.yaml
delete删除指定资源kubectl delete <资源类型>/<资源名称>kubectl delete configmap/app-config
logs输出容器日志流kubectl logs <Pod名称> [-c 容器名]kubectl logs nginx-pod --tail=100
exec在容器中执行交互命令kubectl exec -it <Pod名称> -- <命令>kubectl exec -it redis-pod -- /bin/sh
port-forward将本地端口映射到Pod端口kubectl port-forward <资源类型>/<名称> <本地端口>:<目标端口>kubectl port-forward service/nginx 8080:80
scale调整Deployment副本数kubectl scale deploy/<名称> --replicas=<数量>kubectl scale deploy/web-server --replicas=5
rollout管理资源部署,包含子命令status(查看状态)、history(查看历史版本)、undo(回滚操作)、pause(暂停)、restart(恢复更新)kubectl rollout undo <资源类型>/<名称>kubectl rollout undo deployment/frontend
top显示Pod/Node资源消耗kubectl top [pods|nodes]kubectl top pods --sort-by=cpu
edit直接编辑资源定义kubectl edit <资源类型>/<资源名称>kubectl edit deployment/backend
label为资源添加/修改标签kubectl label <资源类型> <名称> <键>=<值>kubectl label nodes node01 disktype=ssd
config切换kubeconfig上下文kubectl config use-context <上下文名称>kubectl config use-context prod-cluster
patch通过JSON补丁修改资源kubectl patch <资源类型>/<名称> -p '<补丁内容>'kubectl patch deploy/nginx -p '{"spec":{"replicas":3}}'
cp在容器和本地间传输文件kubectl cp <源路径> <目标路径>kubectl cp default/nginx-pod:/log.txt ./local.log
taint管理节点的调度污点kubectl taint nodes <节点名> <键>=<值>:<效果>kubectl taint nodes node01 app=test:NoSchedule
cordon/uncordon禁止/允许节点调度Podkubectl cordon/uncordon <节点名>kubectl cordon node02
drain安全驱逐节点上的Podkubectl drain <节点名> [--ignore-daemonsets]kubectl drain node03 --delete-emptydir-data
run快速运行临时容器kubectl run <名称> --image=<镜像> [-- <命令]kubectl run debug-tool --image=busybox -- sleep 3600
diff对比集群配置与本地文件的差异kubectl diff -f <文件路径> [flags]kubectl diff -f updated-deployment.yaml
expose将资源暴露为 Kubernetes 服务kubectl expose <资源类型>/<名称> [--port=端口] [--target-port=目标端口]kubectl expose deploy/nginx --port=80 --target-port=9376
proxy创建到 Kubernetes API 的代理通道kubectl proxy [--port=端口] [--address=地址]kubectl proxy --port=8080 --address='192.168.1.100'
set动态修改资源配置(镜像/环境变量/资源限制)kubectl set <子命令> <资源类型>/<名称> [参数]kubectl set image deploy/nginx nginx=1.25.2-alpine
explain查看资源配置字段的文档说明kubectl explain [<资源类型>.<字段路径>] [--recursive]kubectl explain pod.spec.containers.resources.limits

补充说明

使用技巧与注意事项

多文件操作

# 批量应用目录下所有配置 -R:递归应用某个目录及其子目录下的所有 YAML/JSON 文件
kubectl apply -f ./manifests/ -R 

资源选择器组合

# 联合使用文件选择与标签过滤 
kubectl delete -f deploy.yaml  -l app=critical 

输出格式化

# 生成资源配置模板(YAML 与 JSON 互转)
kubectl get deploy/nginx -o yaml > nginx-template.yaml  

版本控制集成

# 记录操作历史(需配合 --record 参数)
kubectl apply -f deploy.yaml  --record

2、资源

资源名缩写名API 版本按命名空间资源类型
Core/v1 资源
bindings-v1trueBinding
componentstatusescsv1falseComponentStatus
configmapscmv1trueConfigMap
endpointsepv1trueEndpoints
eventsevv1trueEvent
limitrangeslimitsv1trueLimitRange
namespacesnsv1falseNamespace
nodesnov1falseNode
persistentvolumeclaimspvcv1truePersistentVolumeClaim
persistentvolumespvv1falsePersistentVolume
podspov1truePod
replicationcontrollersrcv1trueReplicationController
secrets-v1trueSecret
servicessvcv1trueService
Apps 工作负载资源
daemonsetsdsapps/v1trueDaemonSet
deploymentsdeployapps/v1trueDeployment
statefulsetsstsapps/v1trueStatefulSet
replicasetsrsapps/v1trueReplicaSet
Network 网络资源
ingressesingnetworking.k8s.io/v1trueIngress
networkpoliciesnetpolnetworking.k8s.io/v1trueNetworkPolicy
扩展与安全资源
horizontalpodautoscalershpaautoscaling/v2trueHorizontalPodAutoscaler
cronjobscjbatch/v1trueCronJob
certificatesigningrequestscsrcertificates.k8s.io/v1falseCertificateSigningRequest
poddisruptionbudgetspdbpolicy/v1truePodDisruptionBudget
storageclassesscstorage.k8s.io/v1falseStorageClass
RBAC 权限资源
clusterroles-rbac.authorization.k8s.io/v1falseClusterRole
rolebindings-rbac.authorization.k8s.io/v1trueRoleBinding

关键特性标注

API 版本差异

命名空间隔离性

高频缩写对照

缩写全称使用场景
dsDaemonSet节点守护进程部署
hpaHorizontalPodAutoscaler自动水平扩缩容
pdbPodDisruptionBudget维护期 Pod 中断预算

使用建议

# 查询资源缩写(含扩展资源)
kubectl api-resources --verbs=list -o wide 
# 检查特定资源的 API 版本兼容性 
kubectl explain <resource> --api-version=<version>

3、可选参数

Flag 参数默认值适用命令功能描述
--namespace=<ns>default所有命令指定操作的命名空间,缩写 -n
--kubeconfig=<path>~/.kube/config所有命令指定 Kubernetes 配置文件路径
--output=<format>textget/describe输出格式控制(json, yaml, wide, name),缩写 -o
--dry-run=<mode>noneapply/create试运行模式(client/server/none),用于验证配置
--forcefalsedelete强制删除资源(绕过优雅删除策略)
--selector=<label>资源查询命令按标签筛选资源,缩写 -l
--field-selector=<query>get按字段条件筛选资源(如 status.phase=Running
--recordfalseapply/set在资源注解中记录命令操作历史
--server=<address>所有命令直接指定 Kubernetes API 服务器地址
--insecure-skip-tls-verifyfalse所有命令跳过 TLS 证书验证(仅测试环境使用)
--filenameapply/create/delete/diff/replace/get/explain本地文件/目录/URL/标准输入流 加载资源配置,驱动声明式或命令式操作,缩写 -f

特殊场景参数扩展表

Flag 参数典型使用场景示例命令
--watch / -w实时监控资源变化kubectl get pods -w
--timeout=<duration>设置命令超时时间(如 30s, 5mkubectl delete pod --timeout=10s
--all操作全部资源(慎用)kubectl delete pods --all
--show-labels显示资源标签列kubectl get pods --show-labels
--sort-by=<jsonpath>按字段排序输出结果kubectl get pods --sort-by=.metadata.creationTimestamp

使用说明

# 查看全局 flags 
kubectl options 
# 查看子命令专属 flags 
kubectl <command> --help 

参考资料:

参考1
参考2

到此这篇关于kubectl 命令的文章就介绍到这了,更多相关kubectl 命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文