此文章已同步更新至我的个人博客https://simonting.gitee.io


在日常工作天天都要使用到kubectl相关的命令,在此记录下一些常用的命令以及使用的技巧。

1、kubectl概述

​ kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。kubectl本质上是通过命令行参数转换为对API Server的rest api 调用,并将结果输出。

2、资源对象类型

以下是kubectl支持的资源类型,以及他们的缩略别名:

资源对象类型缩略别名
apiservices-
certificatesigningrequestscsr
clusterrolebindings-
clusters-
componentstatusescs
configmapscm
controllerrevisions-
cronjobs-
customresourcedefinitioncrd
daemonsetsds
deploymentsdeploy
endpointsep
eventsev
horizontalpodautoscalershpa
ingressesing
jobs-
limitrangeslimits
namespacesns
networkpoliciesnetpol
nodesno
persistentvolumeclaimspvc
persistentvolumespv
poddisruptionbudgetpdb
podpreset-
podspo
podsecuritypoliciespsp
podtemplates-
replicasetsrs
replicationcontrollersrc
resourcequotasquota
rolebindings-
roles-
secrets-
serviceaccountssa
servicessvc
statefulsets-
storageclasses-

3、kubectl常用命令

​ kubectl作为kubernetes的命令行工具,主要的职责就是对集群中的资源的对象进行操作,这些操作包括对资源对象的创建、删除和查看等。

​ 每个命令的具体使用可以使用kubectl [command] -h进行查看

  • 基础命令
命令语法描述
createkubectl create -f FILENAME [options]从文件或stdin中创建一个或多个资源对象
exposekubectl expose (-f FILENAME | TYPE NAME) [ --port=port] [ --protocol=TCP |UDP|SCTP] [ --target-port=number-or-name][ --name=name] [ --external-ip=external-ip-of-service] [ --type=type] [options]将rc,svc,deploy,pod暴露为一个新的svc
runkubectl run NAME --image=image [ --env=“key=value”] [ --port=port] [ --replicas=replicas] [ --dry-run=bool] [ --overrides=inline-json] [ --command] --[COMMAND] [args…] [options]在集群上运行一个指定的镜像
setkubectl set SUBCOMMAND [options]更改现有的应用程序资源,SUBCOMMAND包括image、resources、selector、subject、env、serviceaccount,具体用法可以使用kubectl set [SUBCOMMAND ] -h 查看
explainkubectl explain RESOURCE [options]查询资源的文档
getkubectl get [(-o| --output=)json|yaml|wide|custom-columns=…|custom-columns-file=…|go-template=…|go-template-file=…|jsonpath=…|jsonpath-file=…](TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME …) [flags] [options]查询一个或者多个资源
editkubectl edit (RESOURCE/NAME | -f FILENAME) [options]通过默认编辑器编辑和更新服务器上的一个或多个资源对象
deletekubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)]) [options]删除资源对象
  • 部署命令
命令语法描述
rolloutkubectl rollout SUBCOMMAND [options]管理资源的部署,SUBCOMMAND包括history、pause、restart、resume、status、undo
rolling-updatekubectl rolling-update OLD_CONTROLLER_NAME([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC) [options]通过逐步替换指定的副本控制器和Pod来执行滚动更新
scalekubectl scale [ --resource-version=version] [ --current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)[options]扩宿容副本集的数量
autoscalekubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [ --min=MINPODS] --max=MAXPODS [ --cpu-percent=CPU] [options]自动扩宿容由副本控制器管理的Pod
  • 集群管理命令
命令语法描述
certificatekubectl certificate SUBCOMMAND [options]修改证书资源,SUBCOMMAND包括approve、deny
cluster-infokubectl cluster-info [flags] [options]显示群集中的主节点和服务的的端点信息
topkubectl top [flags] [options]显示node或pod资源(CPU/内存/存储)使用情况
cordonkubectl cordon NODE [options]将node标记为不可调度
uncordonkubectl uncordon NODE [options]将node标记为可调度
drainkubectl drain NODE [options]驱逐节点,准备维护
taintkubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 … KEY_N=VAL_N:TAINT_EFFECT_N [options]更新一个或多个节点上的污点
  • 故障排除及调试命令
命令语法描述
describekubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options]显示一个或者多个资源对象的详细信息
logskubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER] [options]显示Pod中一个容器的日志
attachkubectl attach (POD | TYPE/NAME) -c CONTAINER [options]连接到正在运行的容器上,以查看输出流或与容器交互(stdin)。
execkubectl exec (POD | TYPE/NAME) [-c CONTAINER] [flags] --COMMAND [args…] [options]在Pod的容器中执行一个命令
port-forwardkubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT […[LOCAL_PORT_N:]REMOTE_PORT_N]将一个或多个本地端口转发到Pod
proxykubectl proxy [ --port=PORT] [ --www=static-dir] [ --www-prefix=prefix] [ --api-prefix=prefix] [options]为kubernetes API服务器运行一个代理
cpkubectl cp [options]从容器中复制文件和目录
authkubectl auth [flags] [options]检查授权
  • 高级命令
命令语法描述
diffkubectl diff -f FILENAME [options]Diff live version against would-be applied version
applykubectl apply (-f FILENAME | -k DIRECTORY) [options]将来自于文件或stdin的配置变更应用到主要对象中
patchkubectl patch (-f FILENAME | TYPE NAME) -p PATCH [options]使用策略合并补丁过程更新资源对象中的一个或多个字段
replacekubectl replace -f FILENAME [options]从文件或stdin中替换资源对象
waitkubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [ --for=delete| --for condition=available] [options]等待一个或多个资源上的特定条件
convertkubectl convert -f FILENAME [options]将配置文件转换为不同的API Version
kustomizekubectl kustomize [flags] [options] 从目录或远程url构建kustomization目标
  • 设置命令
命令语法描述
labelkubectl label [ --overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 … KEY_N=VAL_N [ --resource-version=version][options]添加或更新一个或者多个资源对象的标签
annotatekubectl annotate [ --overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 … KEY_N=VAL_N [ --resource-version=version][options]添加或更新一个或多个资源的注释
completionkubectl completion SHELL [options]输出指定shell的代码完成命令 (bash or zsh)
  • 其他命令
命令语法描述
api-resourceskubectl api-resources [flags] [options]在服务器上打印支持的API资源
api-versionskubectl api-versions [flags] [options]在服务器上以“group/version”的形式打印支持的API版本
configkubectl config SUBCOMMAND [options]修改kubeconfig文件,SUBCOMMAND 包括current-context、delete-cluster、delete-context、get-clusters、get-contexts、rename-context、set、set-cluster、set-context、set-credentials、unset、use-context、view,具体用法可查看kubectl config SUBCOMMAND -h
pluginkubectl plugin [flags] [options]提供与插件交互的实用程序
versionkubectl version [flags] [options]输出client和server的版本信息
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐