一、介绍

Kubectl是一个命令行界面,用于针对Kubernetes集群运行命令。

二、查看help,了解kubectl命令

## kubectl help

Basic Commands (Beginner):
  create         Create a resource from a file or from stdin.
  expose         使用 replication controller, service, deployment 或者 pod 并暴露它作为一个 新的
Kubernetes Service
  run            在集群中运行一个指定的镜像
  set            为 objects 设置一个指定的特征
 
Basic Commands (Intermediate):
  explain        查看资源的文档
  get            显示一个或更多 resources
  edit           在服务器上编辑一个资源
  delete         Delete resources by filenames, stdin, resources and names, or by resources and label selector
 
Deploy Commands:
  rollout        Manage the rollout of a resource
  scale          为 Deployment, ReplicaSet, Replication Controller 或者 Job 设置一个新的副本数量
  autoscale      自动调整一个 Deployment, ReplicaSet, 或者 ReplicationController 的副本数量
 
Cluster Management Commands:
  certificate    修改 certificate 资源.
  cluster-info   显示集群信息
  top            Display Resource (CPU/Memory/Storage) usage.
  cordon         标记 node 为 unschedulable
  uncordon       标记 node 为 schedulable
  drain          Drain node in preparation for maintenance
  taint          更新一个或者多个 node 上的 taints
 
Troubleshooting and Debugging Commands:
  describe       显示一个指定 resource 或者 group 的 resources 详情
  logs           输出容器在 pod 中的日志
  attach         Attach 到一个运行中的 container
  exec           在一个 container 中执行一个命令
  port-forward   Forward one or more local ports to a pod
  proxy          运行一个 proxy 到 Kubernetes API server
  cp             复制 files 和 directories 到 containers 和从容器中复制 files 和 directories.
  auth           Inspect authorization
 
Advanced Commands:
  apply          通过文件名或标准输入流(stdin)对资源进行配置
  patch          使用 strategic merge patch 更新一个资源的 field(s)
  replace        通过 filename 或者 stdin替换一个资源
  wait           Experimental: Wait for one condition on one or many resources
  convert        在不同的 API versions 转换配置文件
 
Settings Commands:
  label          更新在这个资源上的 labels
  annotate       更新一个资源的注解
  completion     Output shell completion code for the specified shell (bash or zsh)
 
Other Commands:
  alpha          Commands for features in alpha
  api-resources  Print the supported API resources on the server
  api-versions   Print the supported API versions on the server, in the form of "group/version"
  config         修改 kubeconfig 文件
  plugin         Runs a command-line plugin
  version        输出 client 和 server 的版本信息

三、命令汇总

命令作用
get获取列出一个或多个资源的信息。(资源分为pod、instance、service等很多种)
create指定Yaml或Json,创建资源。(通过文件或者控制台输入)
apply通过文件名或控制台输入,对资源进行配置。
edit编辑服务器上定义的资源。(文件默认输出格式为YAML。要以JSON格式编辑,请指定“-o json”选项。)
delete删除一个资源(可以是pod、instance等)
describe输出指定的一个/多个资源的详细信息。(一般describe状态有问题节点,如Pending等)
logs输出pod中一个容器的日志。(如果pod只包含一个容器则可以省略容器名)
exec在容器内部执行命令
run在集群中使用指定镜像启动容器
set配置应用资源
rolling-update执行指定ReplicationController的滚动更新。(不中断业务的更新方式)
kubectl annotate – 更新资源的注解。
kubectl api-versions – 以“组/版本”的格式输出服务端支持的API版本。
kubectl apply – 通过文件名或控制台输入,对资源进行配置。
kubectl attach – 连接到一个正在运行的容器。
kubectl autoscale – 对replication controller进行自动伸缩。
kubectl cluster-info – 输出集群信息。
kubectl config – 修改kubeconfig配置文件。
kubectl create – 通过文件名或控制台输入,创建资源。
kubectl delete – 通过文件名、控制台输入、资源名或者label selector删除资源。
kubectl describe – 输出指定的一个/多个资源的详细信息。
kubectl edit – 编辑服务端的资源。
kubectl exec – 在容器内部执行命令。
kubectl expose – 输入replication controller,service或者pod,并将其暴露为新的kubernetes service。
kubectl get – 输出一个/多个资源。
kubectl label – 更新资源的label。
kubectl logs – 输出pod中一个容器的日志。
kubectl namespace -(已停用)设置或查看当前使用的namespace。
kubectl patch – 通过控制台输入更新资源中的字段。
kubectl port-forward – 将本地端口转发到Pod。
kubectl proxy – 为Kubernetes API server启动代理服务器。
kubectl replace – 通过文件名或控制台输入替换资源。
kubectl rolling-update – 对指定的replication controller执行滚动升级。
kubectl run – 在集群中使用指定镜像启动容器。
kubectl scale – 为replication controller设置新的副本数。
kubectl stop – (已停用)通过资源名或控制台输入安全删除资源。
kubectl version – 输出服务端和客户端的版本信息。

四、常用的命令详解

4.1、查看所有 pod 列表, -n 后跟 namespace, 查看指定的命名空间
kubectl get pod
kubectl get pod -n kube  
4.2、 进入某个pod
kubectl exec -it <pod-name> -c <container-name> -- bash
eg:
kubectl exec -it redis-master-cln81 -- bash
4.3、查看 service 列表, -o wide 查看详细信息,包括cluster ip及port信息
kubectl get rc,svc
kubectl get pod,svc -o wide  
kubectl get pod <pod-name> -o yaml
4.4、显示 Node 的详细信息
kubectl describe node 192.168.XXX.XXX
4.5、显示 Pod 的详细信息, 特别是查看 pod 无法创建的时候的日志
kubectl describe pod <pod-name>
4.6、根据 yaml 创建资源, apply 可以重复执行,create 不行
kubectl create -f pod.yaml
kubectl apply -f pod.yaml
4.7、基于 pod.yaml 定义的名称删除 pod
kubectl delete -f pod.yaml 
4.8、删除所有包含某个 label 的pod 和 service
kubectl delete pod,svc -l name=<label-name>
4.9、删除所有 Pod
kubectl delete pod --all
4.10、查看 endpoint 列表
kubectl get endpoints
4.11、执行 pod 的 date 命令
kubectl exec <pod-name> -- date
kubectl exec <pod-name> -- bash
kubectl exec <pod-name> -- ping 10.24.51.9
4.13、查看容器的日志
kubectl logs <pod-name>
kubectl logs -f <pod-name> # 实时查看日志
4.14、获取所有namespace
kubectl get ns
4.15、在指定的namespace下获取资源
kubectl -n {$nameSpace}  get pods
4.16、以yaml格式输出资源
kubectl -n {$nameSpace} -o yaml
4.17、编辑一个资源文件

这里以编辑configMap资源对象为例(yaml格式):

kubectl -n {$nameSpace} edit {$resourceType} {$resourceName} -o yaml
4.18、获取所有的deployment
kubectl get deploy
4.19、删除指定的deployment
kubectl delete deploy/XXX

删除掉deployment,其对应的pod也会被删除

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐