kubectl作为客户端CLI工具,可以让用户通过命令行的方式对Kubernetes集群进行操作;

一、kubectl语法

  1. $ kubectl [command] [TYPE] [NAME] [flags]

其中,command、TYPE、NAME、flags的含义如下:

  1. (1)command:子命令,用于操作K8S集群资源对象的命令,例如:create
  2. deletedescribegetapply
  3. (2)TYPE:资源对象的类型,区分大小写,能以单数形式、复数形式或者
  4. 简写形式表示,例如下面3TYPE是等价的:
  5. $ kubectl get pod pod1
  6. $ kubectl get pods pod1
  7. $ kubectl get po pod1
  8. (3)NAME:资源对象的名称,区分大小写
  9. (4)flagskubectl子命令的可选参数

command、TYPE、NAME、flags可参考《Kubernetes权威指南》

二、kubectl操作示例

1、创建资源对象

  1. $ kubectl create -f my-service.yaml -f my-rc.yaml // 一次性创建service和rc
  2. $ kubectl create -f <dir> // 根据dir目录下所有的.yaml、.yml、.json文件的定义进行创建操作
  3. $ kubectl apply -f *.yaml

2、查看资源对象

  1. $ kubectl get pods // 查看所有Pod列表
  2. $ kubectl get pods -o wide // 查看所有pod列表详细信息,包括pod分布在哪个node上
  3. $ kubectl get pods podeName -o yaml // 查看创建pod的yaml文件
  4. $ kubectl get rc,service // 查看rc和service列表
  5. $ kubectl get nodes // 查看k8s集群节点信息

3、描述资源对象

  1. $ kubectl describe nodes <node-name> // 显示Node的详细信息
  2. $ kubectl describe pods/<pod-name> // 显示Pod的详细信息
  3. $ 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