介绍
Kubectl 是一组用于控制Kubernetes集群的命令。每个 Kubernetes 命令都有一个 API,kubectl 的主要用途是向 API 执行 HTTP 请求。
虽然您可以自己发出 HTTP 请求(例如,使用 curl),但 kubectl 的设计目的是使此过程更加舒适和直接。
本教程将涵盖所有常见的 kubectl 操作,并提供示例来熟悉语法。
kubectl 命令列表和示例
kubectl使用 Kubernetes 时,请使用下面列出的命令作为快速参考。
获取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 短名称的完整列表:
kubectl 常用命令列表
您可以在下面的一页参考表中找到本文列出的所有命令。下载 kubectl 命令 PDF 并保存以供将来使用。
结论
本教程解释了最常用的kubectl命令来帮助您管理 Kubernetes API。随附的常用命令列表使您可以将所有命令集中在一个位置,以便轻松访问以供快速参考。