版权声明:欢迎转载,转载请注明出处! https://blog.csdn.net/miss1181248983/article/details/87708386
30.4 kubectl命令使用
语法
语法:kubectl [command] [TYPE] [NAME] [flags]
1. command:子命令,用于操作kubernetes集群资源对象的命令,如create、delete、describe、get、apply等;
2. TYPE:资源对象的类型,如pod、service、rc、deployment、node等,可以单数、复数以及简写(pod/pods/po、service/services/svc);
3. NAME:资源对象的名称,不指定则返回所有,如 get pod 会返回所有pod,get pod nginx 则只返回nginx这个pod;
4. flags:kubectl子命令的可选参数,例如 -n 指定namespace,-s 指定apiserver的URL。
资源对象列表
- 获取资源对象列表:
# kubectl api-resouces
名称 | 简写 |
---|---|
componentsstatuses | cs |
daemonsets | ds |
deployment | deploy |
events | ev |
ebdpoints | ep |
horizontalpodautoscalers | hpa |
ingresses | ing |
jobs | |
limitranges | limits |
nodes | no |
namespaces | ns |
pods | po |
persistentvolumes | pv |
persistentvolumeclaims | pvc |
resourcequotas | quato |
replicationcontrollers | rc |
secrets | |
serviceaccounts | sa |
services | svc |
- 特殊用法:
# kubectl get pod
NAME READY STATUS RESTARTS AGE
mysql-f16r2 1/1 Running 1 3d
myweb-f8xw9 1/1 Running 1 3d
# kubectl get pod mysql-f16r2
NAME READY STATUS RESTARTS AGE
mysql-f16r2 1/1 Running 1 3d
# kubectl get pod/myweb-f8xw9 rc/myweb
NAME READY STATUS RESTARTS AGE
po/myweb-f8xw9 1/1 Running 1 3d
NAME DESIRED CURRENT READY AGE
rc/myweb 1 1 1 3d
# kubectl create -f pod1.yaml -f rc1.yaml -f svc1.yaml #可同时创建多个资源对象
kubectl子命令主要包括对资源的创建、删除、查看、修改、配置、运行等。
kubectl --help
可以查看所有子命令。
kubectl options
可以查看支持的参数,例如 --namespace 指定namespace。
命令输出格式
kubectl命令可以用多种格式对结果进行显示,输出格式通过 -o 参数指定。
- -o 支持的格式有:
输出格式 | 说明 |
---|---|
custom-columns= | 根据自定义列名进行输出,逗号分隔 |
custom-columns-file= | 从文件中获取自定义列名进行输出 |
json | 以JSON格式显示结果 |
jsonpath= | 输出jsonpath表达式定义的字段信息 |
jsonpath-file= | 输出jsonpath表达式定义的字段信息,来源于文件 |
name | 仅输出资源对象的名称 |
wide | 输出更多信息,比如会输出node名 |
yaml | 以yaml格式输出 |
- 举例:
# kubectl get pod -o wide
# kubectl get pod -o yaml
# kubectl get pod --sort-by=.metadata.name #按name排序输出
# kubectl get pod -o custom-columns=NAME:.metadata.name,RESC:.metadata.resourceVersion
kubectl命令示例
- 创建资源对象:
根据yaml文件创建service和deployment
# kubectl create -f my-service.yaml -f my-deploy.yaml
也可以知道一个目录,这样可以根据该目录下所有yaml或json文件一次性定义资源
# kubectl create -f <directory>
- 查看资源对象:
查看所有pod
# kubectl get pod
查看deployment和service
# kubectl get deploy,svc
- 描述资源对象:
显示pod的详细信息
# kubectl describe pod <pod-name>
显示node的详细信息
# kubectl describe node <node-name>
显示deployment管理的pod信息
# kubectl describe pod <deployment-name>
- 删除资源对象:
基于yaml文件删除
# kubectl delete -f pod.yaml
删除所有包含某个label的pod和service
# kubectl delete po,svc -l name=<label-name>
删除所有pod
# kubectl delete po --all
- 执行容器的命令:
在pod中执行某个命令,如date
# kubectl exec <pod-name> date
进入到pod的容器里
# kubectl exec -it <pod-name> bash
- 查看容器日志:
# kubectl logs <pod-name>
动态查看
# kubectl logs -f <pod-name>