此文章已同步更新至我的个人博客https://simonting.gitee.io
在日常工作天天都要使用到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的版本信息 |