kubectl常用命令大全和示例

1,312 阅读5分钟

介绍

Kubectl 是一组用于控制Kubernetes集群的命令。每个 Kubernetes 命令都有一个 API,kubectl 的主要用途是向 API 执行 HTTP 请求。

虽然您可以自己发出 HTTP 请求(例如,使用 curl),但 kubectl 的设计目的是使此过程更加舒适和直接。

本教程将涵盖所有常见的 kubectl 操作,并提供示例来熟悉语法。

kubectl 命令列表和示例

kubectl使用 Kubernetes 时,请使用下面列出的命令作为快速参考。 image.png

获取Resources列表

要列出一个或多个 pod、复制控制器、服务或守护程序集,请使用该kubectl get命令。

  • 生成所有命名空间的纯文本列表:
kubectl get namespaces
  • 显示所有 pod 的纯文本列表:
kubectl get pods
  • 生成所有 Pod 的详细纯文本列表,其中包含节点名称等信息:
kubectl get pods -o wide
  • 显示在特定节点服务器上运行的所有 Pod 的列表:
kubectl get pods --field-selector=spec.nodeName=[server-name]
  • 以纯文本形式列出特定的复制控制器:
kubectl get replicationcontroller [replication-controller-name]
  • 生成所有复制控制器和服务的纯文本列表:
kubectl get replicationcontroller,services
  • 显示所有守护进程集的纯文本列表:
kubectl get daemonset

创建资源

使用该命令创建资源,例如服务、部署、作业或命名空间kubectl create。

例如,要创建新的命名空间,请键入:


kubectl create namespace [namespace-name]
  • 从 JSON 或YAML 文件创建资源:
kubectl create -f [filename]

应用和更新资源

要应用或更新资源,请使用该kubectl apply命令。此操作中的源可以是文件或标准输入 ( stdin )。

  • 使用 [service-name].yaml 文件中包含的定义创建一个新服务:
kubectl apply -f [service-name].yaml
  • 使用 [controller-name].yaml 文件中包含的定义创建一个新的复制控制器:
kubectl apply -f [controller-name].yaml
  • 创建目录中任何 .yaml、.yml 或 .json 文件中定义的对象:
kubectl apply -f [directory-name]
  • 您可以使用以下kubectl edit命令在文本编辑器中配置资源来更新资源。kubectl get该命令是和的组合kubectl apply。

例如,要编辑服务,请键入:

kubectl edit svc/[service-name]

此命令在默认编辑器中打开文件。要使用不同的编辑器,请在命令前面指定:

KUBE_EDITOR=”[editor-name]” kubectl edit svc/[service-name]

显示资源状态

要详细显示任意数量资源的状态,请使用该kubectl describe命令。默认情况下,输出还列出未初始化的资源。

  • 查看有关特定节点的详细信息:

kubectl describe nodes [node-name]
  • 查看有关特定 Pod 的详细信息:
kubectl describe pods [pod-name]
  • 显示名称和类型 在pod.json中列出的 pod 的详细信息:
kubectl describe -f pod.json
  • 查看有关特定复制控制器管理的所有 Pod 的详细信息:
kubectl describe pods [replication-controller-name]
  • 显示有关所有 Pod 的详细信息:

kubectl describe pods

删除资源

要从文件或标准输入中删除资源,请使用以下kubectl delete命令。

  • 使用 pod.yaml 中列出的名称和类型删除 pod:
kubectl delete -f pod.yaml
  • 删除具有特定标签的所有 Pod 和服务:

kubectl delete pods,services -l [label-key]=[label-value]
  • 删除所有 pod(包括未初始化的 pod):
kubectl delete pods --all

执行命令

用于kubectl exec在容器中发出命令或在容器中打开 shell。

  • 接收在 Pod 中的第一个容器上运行的命令的输出:
kubectl exec [pod-name] -- [command]
  • 获取在 pod 中的特定容器上运行的命令的输出:
kubectl exec [pod-name] -c [container-name] -- [command]
  • 从特定的 pod运行/bin/bash 。接收到的输出来自第一个容器:
kubectl exec -ti [pod-name] -- /bin/bash

修改 kubeconfig 文件

kubectl config允许您查看和修改 kubeconfig 文件。该命令通常后面跟着另一个子命令。

  • 显示当前上下文:
kubectl config current-context
  • 在 kubeconfig 中设置集群条目:

kubectl config set-cluster [cluster-name] --server=[server-name]
  • 取消设置 kubeconfig 中的条目:

kubectl config unset [property-name]

打印容器日志

要从 pod 中的容器打印日志,请使用以下kubectl logs命令。

  • 打印日志:
kubectl logs [pod-name]
  • 要从 Pod 流式传输日志,请使用:

kubectl logs -f [pod-name]

资源类型的简称

上面列出的一些kubectl命令可能由于其长度而显得不方便。因此,常见kubectl 资源类型的名称也有较短的版本。

考虑上面提到的命令:

kubectl create namespace [namespace-name]

您还可以运行此命令:

kubectl create ns [namespace-name]

kubectl 短名称完整列表

以下是 kubectl 短名称的完整列表: image.png

kubectl 常用命令列表

您可以在下面的一页参考表中找到本文列出的所有命令。下载 kubectl 命令 PDF 并保存以供将来使用。

image.png

结论

本教程解释了最常用的kubectl命令来帮助您管理 Kubernetes API。随附的常用命令列表使您可以将所有命令集中在一个位置,以便轻松访问以供快速参考。