Joe Blog

Kubectl是Kubernetes的命令行配置工具,可与Kubernetes API服务器通信。使用kubectl可以创建,检查,更新和删除Kubernetes对象。我们已经创建了该备忘单,作为在许多常见的Kubernetes组件和资源上执行命令的快速参考。您可以对对象使用完整命令,例如pod,复数形式(pod)或我们在每个部分的标题中的括号中提到的简码变体。它们都会产生相同的结果。您需要使用要管理的资源的特定<名称>跟随大多数命令。

集群管理(Cluster)

显示有关集群中的主服务器和服务的端点信息

kubectl cluster-info

显示在客户端和服务器上运行的Kubernetes版本

kubectl version

获取集群的配置

kubectl config view

列出可用的API资源

kubectl api-resources

列出可用的API版本

kubectl api-versions

列出所有内容

kubectl get all --all-namespaces

守护进程(Daemonset)

缩写 = ds

列出一个或多个守护程序

kubectl get daemonset

编辑和更新一个或多个守护程序的定义

kubectl edit daemonset <daemonset_name>

删除守护程序

kubectl delete daemonset <daemonset_name>

创建一个新的守护进程

kubectl create daemonset <daemonset_name>

管理后台驻留程序的部署

kubectl rollout daemonset

显示名称空间中守护程序的详细状态

kubectl describe ds <daemonset_name> -n <namespace_name>

部署(Deployment)

缩写 = deploy

列出一个或多个部署

kubectl get deployment

显示一个或多个部署的详细状态

kubectl describe deployment <deployment_name>

编辑和更新服务器上一个或多个部署的定义

kubectl edit deployment <deployment_name>

创建一个新的部署

kubectl create deployment <deployment_name>

删除部署

kubectl delete deployment <deployment_name>

查看部署的部署状态

kubectl rollout status deployment <deployment_name>

事件(Event)

缩写 = ev

列出系统中所有资源的最近事件

kubectl get events

仅列出警告

kubectl get events --field-selector type=Warning

列出事件,但排除Pod事件

kubectl get events --field-selector involvedObject.kind!=Pod

拉取具有特定名称的单个节点的事件

kubectl get events --field-selector involvedObject.kind=Node, involvedObject.name=<node_name>

从事件列表中过滤掉正常事件

kubectl get events --field-selector type!=Normal

日志(Logs)

打印容器的日志

kubectl logs <pod_name>

打印窗格最近一小时的日志

kubectl logs --since=1h <pod_name>

获取最近的20行日志

kubectl logs --tail=20 <pod_name>

从服务获取日志,并可以选择选择哪个容器

kubectl logs -f <service_name> [-c <$container>]

打印Pod的日志并关注新日志

kubectl logs -f <pod_name>

打印容器中容器的日志

kubectl logs -c <container_name> <pod_name>

将Pod的日志输出到名为“ pod.log”的文件中

kubectl logs <pod_name> pod.log

查看以前失败的Pod的日志

kubectl logs --previous <pod_name>

对于日志,我们还建议使用Johan Haleby开发的名为Kubetail的工具。这是一个bash脚本,可让您同时从多个Pod中获取日志。您可以在其Github存储库中了解更多信息。这是一些使用Kubetail的示例命令。

获取以pod_prefix命名的所有Pod的日志

kubetail <pod_prefix>

包括最近5分钟的日志

kubetail <pod_prefix> -s 5m

清单文件(Manifest)

修改对象的另一种方法是通过清单文件。我们强烈建议使用此方法。这是通过使用yaml文件以及为对象配置的所有必需选项来完成的。我们将yaml文件存储在git存储库中,因此我们可以跟踪更改并简化更改。

通过文件名或标准输入将配置应用于对象。覆盖现有配置。

kubectl apply -f manifest_file.yaml

建立物件

kubectl create -f manifest_file.yaml

在目录的所有清单文件中创建对象

kubectl create -f ./dir

从URL创建对象

kubectl create -f ‘url’

删除物件

kubectl delete -f manifest_file.yaml

命名空间(namespace)

缩写 = ns

创建名称空间<名称>

kubectl create namespace <namespace_name>

列出一个或多个名称空间

kubectl get namespace <namespace_name>

显示一个或多个名称空间的详细状态

kubectl describe namespace <namespace_name>

删除名称空间

kubectl delete namespace <namespace_name>

编辑和更新名称空间的定义

kubectl edit namespace <namespace_name>

显示名称空间的资源(CPU /内存/存储)使用情况

kubectl top namespace <namespace_name>

节点(nodes)

缩写 = no

更新一个或多个节点上的污点

kubectl taint node <node_name>

列出一个或多个节点

kubectl get node

删除一个或多个节点

kubectl delete node <node_name>

显示节点的资源使用情况(CPU /内存/存储)

kubectl top node

每个节点的资源分配

kubectl describe nodes | grep Allocated -A 5

在节点上运行的Pod

kubectl get pods -o wide | grep <node_name>

注释节点

kubectl annotate node <node_name>

将节点标记为不可调度

kubectl cordon node <node_name>

将节点标记为可调度

kubectl uncordon node <node_name>

排空节点以准备维护

kubectl drain node <node_name>

添加或更新一个或多个节点的标签

kubectl label node

Pods

缩写 = po

列出一个或多个豆荚

kubectl get pod

删除吊舱

kubectl delete pod <pod_name>

显示窗格的详细状态

kubectl describe pod <pod_name>

创建一个吊舱

kubectl create pod <pod_name>

对容器中的容器执行命令

kubectl exec <pod_name> -c <container_name> <command>

在单个容器的容器上获取​​交互式外壳

kubectl exec -it <pod_name> /bin/sh

显示Pod的资源使用情况(CPU /内存/存储)

kubectl top pod

添加或更新窗格的注释

kubectl annotate pod <pod_name> <annotation>

添加或更新广告连播的标签

kubectl label pod <pod_name>

副本控制器 (Replicationcontroller)

说明: 现在推荐使用配置 ReplicaSetDeployment 来建立副本管理机制。

缩写 = rc

列出副本控制器

kubectl get rc

按名称空间列出副本控制器

kubectl get rc --namespace=”<namespace_name>”

副本集(Replicaset)

缩写 = rs

列表副本集

kubectl get replicasets

显示一个或多个副本集的详细状态

kubectl describe replicasets <replicaset_name>

缩放副本集

kubectl scale --replicas=[x] 

机密(Secret)

创建一个秘密

kubectl create secret

列出机密

kubectl get secrets

列出有关机密的详细信息

kubectl describe secrets

删除机密

kubectl delete secret <secret_name>

服务(Service)

缩写 = svc

列出一项或多项服务

kubectl get services

显示服务的详细状态

kubectl describe services

将复制控制器,服务,部署或Pod公开为新的Kubernetes服务

kubectl expose deployment [deployment_name]

编辑和更新一项或多项服务的定义

kubectl edit services

服务帐号(Serviceaccount)

缩写 = sa

列出服务帐户

kubectl get serviceaccounts

显示一个或多个服务帐户的详细状态

kubectl describe serviceaccounts

更换服务帐号

kubectl replace serviceaccount

删除服务帐号

kubectl delete serviceaccount <service_account_name>

有状态集(Statefulset)

缩写 = sts

列出StatefulSet

kubectl get statefulset

仅删除StatefulSet(不删除Pod)

kubectl delete statefulset/[stateful_set_name] --cascade=false

常用选项

在Kubectl中,您可以使用命令指定可选标志。这是一些最常见和有用的。

-o输出格式。例如,如果您想以ps输出格式列出所有Pod以及更多信息。

kubectl get pods -o wide 

-n –namespace的简写。例如,如果要列出特定命名空间中的所有Pod,请执行以下命令:

kubectl get pods --namespace=[namespace_name]
kubectl get pods -n=[namespace_name]

-f文件名,目录或用于创建资源的文件的URL。例如,当使用名为newpod.json的文件中的数据创建pod时。

kubectl create -f ./newpod.json

-l要过滤的选择器,支持’=’,’==’和’!=’。