序
Kubectl
是 Kubernetes
的命令行配置工具,可与 Kubernetes API server
通信。使用 Kubectl
可以创建、检查、更新和删除 Kubernetes
对象。这里列举一些对Pod
、Service
等对象常用的命令。
集群管理
显示集群中
master
和服务
的端点信息kubectl cluster-info kubectl cluster-info dump --namespaces <namespace_name> --output-directory=<dir>
显示客户端和服务器上运行的 Kubernetes 版本
kubectl version
获取集群的配置
kubectl config view
列出可用的 API 资源
kubectl api-versions
列出所有内容
kubectl get all --all-namespaces
Deployment
deployment
可以简写成deploy
列出一个或多个Deployment
kubectl get deployment -n <namespace_name>
显示一个或多个Deployment的详细信息
kubectl describe deployment <deployment_name> -n <namespace_name>
编辑和更新一个或多个Deployment的定义
kubectl edit deployment <deployment_name> -n <namespace_name>
创建一个新Deployment
kubectl create deployment <deployment_name> -n <namespace_name>
删除Deployment
kubectl delete deployment <deployment_name> -n <namespace_name>
查看Deployment的状态
kubectl rollout status deployment <deployment_name> -n <namespace_name>
Events
events
可以简写成ev
列出系统中所有资源的最近事件
kubectl get events -n <namespace_name>
仅列出警告
kubectl get events --field-selector type=Warning -n <namespace_name>
列出事件但排除 Pod 事件
kubectl get events --field-selector involvedObject.kind!=Pod -n <namespace_name>
具有特定名称的单个节点的拉取事件
kubectl get events --field-selector involvedObject.kind=Node, involvedObject.name=<node_name>
从事件列表中过滤掉正常事件
kubectl get events --field-selector type!=Normal -n <namespace_name>
日志
打印 pod 的日志
kubectl logs <pod_name> -n <namespace_name>
打印 pod 最后一小时的日志
kubectl logs --since=1h <pod_name> -n <namespace_name>
获取最近20行日志
kubectl logs --tail=20 <pod_name> -n <namespace_name>
从服务获取日志并可选择选择哪个容器
kubectl logs -f <service_name> [-c <$container>] -n <namespace_name>
打印 Pod 的日志并跟踪新日志
kubectl logs -f <pod_name> -n <namespace_name>
打印 Pod 中容器的日志
kubectl logs -c <container_name> <pod_name> -n <namespace_name>
将 pod 的日志输出到名为“pod.log”的文件中
kubectl logs <pod_name> pod.log -n <namespace_name>
查看之前失败的 pod 的日志
kubectl logs --previous <pod_name> -n <namespace_name>
对象配置文件
修改对象的另一个选项是通过配置yaml
文件,强烈推荐使用这种方法。
通过文件名或标准输入将配置应用于对象,覆盖现有配置。
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
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>
Nodes
node
可以简写成no
更新一个或多个节点上的污点
kubectl taint node <node_name>
列出一个或多个节点
kubectl get node -n <namespace_name>
删除一个或多个节点
kubectl delete node <node_name> -n <namespace_name>
显示节点的资源使用情况(CPU/内存/存储)
kubectl top node -n <namespace_name>
每个节点的资源分配
kubectl describe nodes | grep Allocated -A 5
节点上运行的 Pod
kubectl get pods -o wide | grep <node_name>
更新一个或多个节点的Annotations信息
kubectl annotate node <node_name> -n <namespace_name>
将节点标记为不可调度
kubectl cordon node <node_name> -n <namespace_name>
将节点标记为可调度
kubectl uncordon node <node_name> -n <namespace_name>
排空节点以准备维护
kubectl drain node <node_name> -n <namespace_name>
添加或更新一个或多个节点的标签
kubectl label node
Pod
pod
可以简写成po
列出一个或多个 Pod
kubectl get pod -n <namespace_name>
删除 Pod
kubectl delete pod <pod_name> -n <namespace_name>
显示 pod 的详细状态
kubectl describe pod <pod_name> -n <namespace_name>
创建一个 Pod
kubectl create pod <pod_name> -n <namespace_name>
对 pod 中的容器执行命令
kubectl exec <pod_name> -c <container_name> <command>
在单容器 Pod 上获取交互式 shell
kubectl exec -it <pod_name> /bin/sh
显示 Pod 的资源使用情况(CPU/内存/存储)
kubectl top pod -n <namespace_name>
添加或更新 pod 的Annotations信息
kubectl annotate pod <pod_name> <annotation> -n <namespace_name>
添加或更新 Pod 的标签
kubectl label pod <pod_name> -n <namespace_name>
Replication Controllers
列出Replication Controllers
kubectl get rc -n <namespace_name>
ReplicaSets
列出ReplicaSet
kubectl get rs -n <namespace_name>
显示一个或多个ReplicaSet的详细状态
kubectl describe rs <replicaset_name> -n <namespace_name>
扩展ReplicaSet
kubectl scale --replicas=[x] -n <namespace_name>
Secrets
创建一个secret
kubectl create secret -n <namespace_name>
列出secret
kubectl get secrets -n <namespace_name>
列出有关secret的详细信息
kubectl describe secrets -n <namespace_name>
删除secret
kubectl delete secret <secret_name> -n <namespace_name>
Services
列出一项或多项服务
kubectl get svc -n <namespace_name>
显示服务的详细状态
kubectl describe svc -n <namespace_name>
将
replication controller,
、service
、deployment
或pod
公开为新的 Kubernetes 服务kubectl expose deployment [deployment_name] -n <namespace_name>
编辑和更新一项或多项服务的定义
kubectl edit services -n <namespace_name>
Service Accounts
列出服务帐户
kubectl get sa -n <namespace_name>
显示一个或多个服务帐户的详细状态
kubectl describe sa -n <namespace_name>
更换服务帐户
kubectl replace sa -n <namespace_name>
删除服务帐户
kubectl delete sa <service_account_name> -n <namespace_name>
命令常用选项
在 Kubectl 中,可以使用命令指定可选参数,以下是一些最常见的参数。
-o 输出格式。例如,如果想以
ps
输出格式列出所有 pod 并显示更多信息。kubectl get pods -o wide
-n --namespace 的简写。例如,如果想列出指定命名空间中的所有 Pod,可以执行以下命令:
kubectl get pods -n <namespace_name>
-f 用于创建资源的文件名、目录或 URL。例如,使用名为 pod_demo.yaml 的文件中的数据创建 pod 时。
kubectl create -f ./pod_demo.yaml
结语
这里列举的一些常用操作对象的命令,还有很多的命令可以通过官方文档去查找。