0%

k8s之kubectl常用命令

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

1、kubectl概述

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

2、资源对象类型

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

资源对象类型 缩略别名
apiservices -
certificatesigningrequests csr
clusterrolebindings -
clusters -
componentstatuses cs
configmaps cm
controllerrevisions -
cronjobs -
customresourcedefinition crd
daemonsets ds
deployments deploy
endpoints ep
events ev
horizontalpodautoscalers hpa
ingresses ing
jobs -
limitranges limits
namespaces ns
networkpolicies netpol
nodes no
persistentvolumeclaims pvc
persistentvolumes pv
poddisruptionbudget pdb
podpreset -
pods po
podsecuritypolicies psp
podtemplates -
replicasets rs
replicationcontrollers rc
resourcequotas quota
rolebindings -
roles -
secrets -
serviceaccounts sa
services svc
statefulsets -
storageclasses -

3、kubectl常用命令

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

    每个命令的具体使用可以使用`kubectl [command] -h`进行查看
  • 基础命令
命令 语法 描述
create kubectl create -f FILENAME [options] 从文件或stdin中创建一个或多个资源对象
expose kubectl 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
run kubectl run NAME –image=image [ –env=“key=value”] [ –port=port] [ –replicas=replicas] [ –dry-run=bool] [ –overrides=inline-json] [ –command] –[COMMAND] [args…] [options] 在集群上运行一个指定的镜像
set kubectl set SUBCOMMAND [options] 更改现有的应用程序资源,SUBCOMMAND包括image、resources、selector、subject、env、serviceaccount,具体用法可以使用kubectl set [SUBCOMMAND ] -h 查看
explain kubectl explain RESOURCE [options] 查询资源的文档
get kubectl 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] 查询一个或者多个资源
edit kubectl edit (RESOURCE/NAME | -f FILENAME) [options] 通过默认编辑器编辑和更新服务器上的一个或多个资源对象
delete kubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | –all)]) [options] 删除资源对象
  • 部署命令
命令 语法 描述
rollout kubectl rollout SUBCOMMAND [options] 管理资源的部署,SUBCOMMAND包括history、pause、restart、resume、status、undo
rolling-update kubectl rolling-update OLD_CONTROLLER_NAME([NEW_CONTROLLER_NAME] –image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC) [options] 通过逐步替换指定的副本控制器和Pod来执行滚动更新
scale kubectl scale [ –resource-version=version] [ –current-replicas=count] –replicas=COUNT (-f FILENAME | TYPE NAME)[options] 扩宿容副本集的数量
autoscale kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [ –min=MINPODS] –max=MAXPODS [ –cpu-percent=CPU] [options] 自动扩宿容由副本控制器管理的Pod
  • 集群管理命令
命令 语法 描述
certificate kubectl certificate SUBCOMMAND [options] 修改证书资源,SUBCOMMAND包括approve、deny
cluster-info kubectl cluster-info [flags] [options] 显示群集中的主节点和服务的的端点信息
top kubectl top [flags] [options] 显示node或pod资源(CPU/内存/存储)使用情况
cordon kubectl cordon NODE [options] 将node标记为不可调度
uncordon kubectl uncordon NODE [options] 将node标记为可调度
drain kubectl drain NODE [options] 驱逐节点,准备维护
taint kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 … KEY_N=VAL_N:TAINT_EFFECT_N [options] 更新一个或多个节点上的污点
  • 故障排除及调试命令
命令 语法 描述
describe kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options] 显示一个或者多个资源对象的详细信息
logs kubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER] [options] 显示Pod中一个容器的日志
attach kubectl attach (POD | TYPE/NAME) -c CONTAINER [options] 连接到正在运行的容器上,以查看输出流或与容器交互(stdin)。
exec kubectl exec (POD | TYPE/NAME) [-c CONTAINER] [flags] –COMMAND [args…] [options] 在Pod的容器中执行一个命令
port-forward kubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT […[LOCAL_PORT_N:]REMOTE_PORT_N] 将一个或多个本地端口转发到Pod
proxy kubectl proxy [ –port=PORT] [ –www=static-dir] [ –www-prefix=prefix] [ –api-prefix=prefix] [options] 为kubernetes API服务器运行一个代理
cp kubectl cp [options] 从容器中复制文件和目录
auth kubectl auth [flags] [options] 检查授权
  • 高级命令
命令 语法 描述
diff kubectl diff -f FILENAME [options] Diff live version against would-be applied version
apply kubectl apply (-f FILENAME | -k DIRECTORY) [options] 将来自于文件或stdin的配置变更应用到主要对象中
patch kubectl patch (-f FILENAME | TYPE NAME) -p PATCH [options] 使用策略合并补丁过程更新资源对象中的一个或多个字段
replace kubectl replace -f FILENAME [options] 从文件或stdin中替换资源对象
wait kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | –all)]) [ –for=delete| –for condition=available] [options] 等待一个或多个资源上的特定条件
convert kubectl convert -f FILENAME [options] 将配置文件转换为不同的API Version
kustomize kubectl kustomize [flags] [options] 从目录或远程url构建kustomization目标
  • 设置命令
命令 语法 描述
label kubectl label [ –overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 … KEY_N=VAL_N [ –resource-version=version][options] 添加或更新一个或者多个资源对象的标签
annotate kubectl annotate [ –overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 … KEY_N=VAL_N [ –resource-version=version][options] 添加或更新一个或多个资源的注释
completion kubectl completion SHELL [options] 输出指定shell的代码完成命令 (bash or zsh)
  • 其他命令
命令 语法 描述
api-resources kubectl api-resources [flags] [options] 在服务器上打印支持的API资源
api-versions kubectl api-versions [flags] [options] 在服务器上以“group/version”的形式打印支持的API版本
config kubectl 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
plugin kubectl plugin [flags] [options] 提供与插件交互的实用程序
version kubectl version [flags] [options] 输出client和server的版本信息