kubectl作为客户端CLI工具,可以让用户通过命令行的方式对Kubernetes集群进行操作;
一、kubectl语法
$ kubectl [command] [TYPE] [NAME] [flags]
其中,command、TYPE、NAME、flags的含义如下:
(1)command:子命令,用于操作K8S集群资源对象的命令,例如:create、
delete、describe、get、apply等
(2)TYPE:资源对象的类型,区分大小写,能以单数形式、复数形式或者
简写形式表示,例如下面3中TYPE是等价的:
$ kubectl get pod pod1
$ kubectl get pods pod1
$ kubectl get po pod1
(3)NAME:资源对象的名称,区分大小写
(4)flags:kubectl子命令的可选参数
command、TYPE、NAME、flags可参考《Kubernetes权威指南》
二、kubectl操作示例
1、创建资源对象
$ kubectl create -f my-service.yaml -f my-rc.yaml // 一次性创建service和rc
$ kubectl create -f <dir> // 根据dir目录下所有的.yaml、.yml、.json文件的定义进行创建操作
$ kubectl apply -f *.yaml
2、查看资源对象
$ kubectl get pods // 查看所有Pod列表
$ kubectl get pods -o wide // 查看所有pod列表详细信息,包括pod分布在哪个node上
$ kubectl get pods podeName -o yaml // 查看创建pod的yaml文件
$ kubectl get rc,service // 查看rc和service列表
$ kubectl get nodes // 查看k8s集群节点信息
3、描述资源对象
$ kubectl describe nodes <node-name> // 显示Node的详细信息
$ kubectl describe pods/<pod-name> // 显示Pod的详细信息
$ kubectl describe pods <rc-name> // 显示由rc管理的Pod的信息
4、删除资源对象
$ kubectl delete -f pod.yaml // 基于pod.yaml定义的名称删除Pod,不会删除yaml文件
$ kubectl delete pods,services -l name=<label-name> // 删除所有包含某个label的Pod和service,但是K8S会再重新创建一个
$ kubectl delete pods --all // 删除所有的Pod
5、执行容器的命令
$ kubectl exec <pod-name> date // 执行Pod的date命令,默认使用Pod中的第一个容器执行
$ kubectl exec <pod-name> -c <container-name> date // 指定Pod中某个容器执行exec命令
$ kubectl exec -it <pod-name> -c <container-name> bash //通过bash获得Pod容器中的TTY,相当于登录容器
6、查看容器的日志
$ kubectl logs <pod-name> // 查看容器输出到stdout的日志
$ kubectl logs -f <pod-name> -c <container-name> // 跟踪查看容器日志,相当于tail -f 命令的结果
7.编辑pod
$ kubectl get deploy
$ kubectl edit deploy deployName // 可编辑pod的副本数,即时生效
$ kubectl describe svc/serviceName // 查看创建service的yaml
$ kubectl edit svc/serviceName // 编辑service的yaml,即时生效
$ kubectl config set-context $(kubectl config current-context) --namespace=kube-ad // 设置默认的Namespace
8、重启pod
$ kubectl delete pod podName