在日常工作天天都要使用到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的版本信息 |