语法
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 explain
或
kubectl api-resources
名称 |
简写 |
---|---|
componentsstatuses | cs |
daemonsets | ds |
deployment | deploy |
events | ev |
endpoints | ep |
horizontalpodautoscalers | hpa |
ingresses | ing |
jobs | |
limitranges | limits |
nodes | no |
namspaces | ns |
pods | po |
persistentvolumes | pv |
persistentvolumeclaims | pvc |
resourcequotas | quota |
replicationcontrollers | rc |
secrets | |
serviceaccounts | sa |
services | svc |
特殊用法:
kubectl get pods pod1 pod2
kubectl get pod/pod1 rc/rc1
kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml
kubectl 子命令
主要包括对资源的创建、删除、查看、修改、配置、运行等
kubectl --help 可以查看所有子命令
kubectl 参数
kubectl options 可以查看支持的参数,例如 --namespace 指定所在 namespace
kubectl 输出格式
kubectl 命令可以用多种格式对结果进行显示,输出格式通过 -o 参数指定
-o 支持的格式有
举例:
kubectl get pod -o wide
kubectl get pod -o yaml
kubectl get pod -o custom-columns=NAME:.metadata.name,RESC:.metadata.resourceVersion
kubectl get pod --sort-by=.metadata.name //按 name 排序
kubectl 命令示例
1)创建资源对象
根据 yaml 文件创建 service 和 deployment
kubectl create -f my-service.yaml -f my-deploy.yaml
也可以指定一个目录,这样可以一次性根据该目录下所有 yaml 或 json 文件定义资源
kubectl create -f <directory>
2)查看资源对象
查看所有 pod
kubectl get pods
查看 deployment 和 service
kubectl get deploy,svc
3)描述资源对象
显示 node 的详细信息
kubectl describe nodes <node-name>
显示 pod 的详细信息
kubectl describe pods/<pod-name>
显示 deployment 管理的 pod 信息
kubectl describe pods <deployment-name>
4)删除资源对象
基于 yaml 文件删除
kubectl delete -f pod.yaml
删除所有包含某个 label 的 pod 和 service
kubectl delete po,svc -l name=<lable-name>
删除所有 pod
kubectl delete po --all
5)执行容器的命令
在 pod 中执行某个命令,如 date
kubectl exec <pod-name> date //pod-name如果不加,默认会选择第一个pod
指定 pod 的某个容器执行命令
kubectl exec <pod-name> date
进入到 pod 的容器里
kubectl exec -it <pod-name> bash
6)查看容器日志
kubectl logs <pod-name>
可以动态查看,类似于 tail -f
kubectl logs -f <pod-name> -c <container-name>