kubectl
一、kubectl cp
kubectl cp
是 Kubernetes
中用于在本地文件系统与 Pod
容器之间复制文件的命令。它类似于 Unix
系统中的 cp
命令,但它的作用是跨越 Kubernetes
集群进行文件传输。
使用 kubectl cp
可以将本地文件或目录复制到 Pod
中的容器,也可以将容器中的文件或目录复制到本地系统。这对于配置管理、日志调试、文件备份等操作非常有用。
语法
kubectl cp <source> <destination> [options]
-
source
:源文件或目录,支持本地文件路径、容器内路径。 -
destination
:目标文件或目录,支持容器内路径、或本地文件路径。
1.1 从本地复制文件到 Pod
kubectl cp /path/to/local/file POD_NAME:/path/in/container
1.2 从 Pod 复制文件到本地
kubectl cp POD_NAME:/path/in/container /path/to/local/file
二、kubectl run
**
三、kubectl get
kubectl get
用于获取 Kubernetes
集群中的资源信息。
3.1 常用标志
-
-o
:指定输出格式(wide
,yaml
,json
,name
)。 -
--namespace
或-n
:指定命名空间。 -
--all-namespaces
:列出所有命名空间中的资源。
kubectl get all
kubectl get jobs
kubectl get secrets
kubectl get pods(po)
kubectl get pods
获取所有 Pods
的列表
kubectl get pods --show-labels
: 列出集群中所有 Pod
及其标签
kubectl get pods --all-namespaces
查看 Pod
状态
kubectl get pods --namespace kube-system
查看 kube-system
命名空间中的所有 Pod
kubectl get pods --namespace kube-flannel
查看 kube-flannel
网络插件运行状态
kubectl get nodes(no)
kubectl get nodes
获取所有 Nodes
kubectl get nodes --show-labels
: 列出集群中的节点及其标签
kubectl get clusters
kubectl get events(ev)
kubectl get configmap(cm)
kubectl get services(svc)
kubectl get services(svc)
获取所有 Services
kubectl get endpoints(ep)
kubectl get daemonsets(ds)
kubectl get namespaces(ns)
kubectl get pod [Pod Name]
kubectl get storageclasses
kubectl get ingresses(ing)
kubectl get networkpolicies
kubectl get replicasets(rs)
kubectl get node [Node Name]
kubectl get deployments(deploy)
kubectl get deployments(deploy)
获取所有 Deployments
kubectl get deployments --namespace kube-system
查看 kube-system
命名空间中的所有资源
kubectl get persistentvolumes(pv)
kubectl get componentstatuses(cs)
kubectl get service [Service Name]
kubectl get deployment [Deployment Name]
四、kubectl set
**
kubectl set image
kubectl set resources
五、kubectl top
六、kubectl edit
七、kubectl exec
kubectl exec
是 Kubernetes
中用于在容器内执行命令的一个非常重要的命令。它可以让你直接进入到容器中,进行调试、执行诊断命令或进行一些临时的操作。常见的应用场景包括:访问容器中的文件系统、检查日志、调试服务等。
7.1 kubectl exec -it POD_NAME -- /bin/sh
kubectl exec -it POD_NAME -- /bin/sh
: 进入容器并交互式操作
7.2 kubectl exec -it [POD_NAME] -- /bin/bash
kubectl exec -it [POD_NAME] -- /bin/bash
: 进入容器并交互式操作
八、kubectl logs
kubectl logs
用于查看容器的标准输出和标准错误日志,通常用于调试和排查问题。
8.1 参数标志
-
-c
:指定容器名称(如果 Pod 中有多个容器)。 -
--follow
或-f
:实时查看日志。 -
--tail
:显示日志的最后几行。
8.2 kubectl logs POD_NAME
kubectl logs POD_NAME
查看指定 Pod
中默认容器的日志
kubectl logs -l POD_NAME
实时查看指定 Pod
中容器的日志
8.3 kubectl logs POD_NAME --previous
kubectl logs POD_NAME --previous
查看已终止容器的日志(如果容器崩溃过)
8.4 kubectl logs POD_NAME -c CONTAINER_NAME
kubectl logs POD_NAME -c CONTAINER_NAME
查看指定容器的日志
九、kubectl scale
十、kubectl patch
十一、kubectl apply
kubectl apply
用于创建或更新资源。与 kubectl create
不同的是,apply
支持增量更新。
kubectl apply vs kubectl create
:
-
kubectl apply
: 创建或更新资源,常用于声明式管理。如果资源不存在,则创建它。如果资源已存在,则更新它,并尝试保留现有的字段。支持幂等性:多次运行同样的配置不会导致重复操作。适合使用YAML/JSON
文件定义资源时,特别是需要频繁更新资源的场景。 -
kubectl create
: 常用于手动管理或单次创建, 如果资源不存在,则创建它。如果资源已存在,则报错,不会自动更新。
11.1 参数标志
-
-f
:指定配置文件路径,支持YAML
和JSON
。 -
--dry-run
:验证配置文件内容,但不进行实际修改。
11.2 kubectl apply -f [YAML 配置文件]
kubectl apply -f [YAML 配置文件]
创建或更新资源
十二、kubectl label
kubectl label all
kubectl label jobs
kubectl label secrets
kubectl label pods(po)
kubectl label nodes(no)
kubectl label clusters
kubectl label events(ev)
kubectl label configmap(cm)
kubectl label services(svc)
kubectl label endpoints(ep)
kubectl label daemonsets(ds)
kubectl label namespaces(ns)
kubectl label pod [Pod Name]
kubectl label storageclasses
kubectl label ingresses(ing)
kubectl label networkpolicies
kubectl label replicasets(rs)
kubectl label node [Node Name]
kubectl label deployments(deploy)
kubectl label persistentvolumes(pv)
kubectl label componentstatuses(cs)
kubectl label service [Service Name]
kubectl label deployment [Deployment Name]
十三、kubectl proxy
十四、kubectl attach
十五、kubectl config
十六、kubectl create
kubectl create
用于创建 Kubernetes
资源,可以通过 YAML
文件、命令行等方式创建资源。
kubectl apply vs kubectl create
:
-
kubectl apply
: 创建或更新资源,常用于声明式管理。如果资源不存在,则创建它。如果资源已存在,则更新它,并尝试保留现有的字段。支持幂等性:多次运行同样的配置不会导致重复操作。适合使用YAML/JSON
文件定义资源时,特别是需要频繁更新资源的场景。 -
kubectl create
: 常用于手动管理或单次创建, 如果资源不存在,则创建它。如果资源已存在,则报错,不会自动更新。
16.1 参数标志
-
-f
:指定配置文件路径,支持YAML
和JSON
文件。 -
--dry-run
:验证资源创建,但不实际创建。
kubectl create quota
kubectl create secrete
kubectl create service
kubectl create configmap
kubectl create namespace
kubectl create deployment
kubectl create serviceaccount
kubectl create -f [YAML 配置文件]
kubectl create -f [YAML 配置文件]
根据 YAML
文件创建资源
十七、kubectl expose
kubectl expose pod
kubectl expose service
kubectl expose replicaset
kubectl expose deployment
kubectl expose replicationcontroller
十八、kubectl delete
kubectl delete
用于删除 Kubernetes
资源。
18.1 参数标志
-
-f
:指定删除的资源文件(支持 YAML 和 JSON)。 -
--all
:删除所有资源。
18.2 kubectl delete pods --all
18.3 kubectl delete pod POD_NAME
kubectl delete pod POD_NAME
删除指定 Pod
kubectl delete pod Pod_Name --force
强制删除指定 Pod
18.4 kubectl delete -f [YAML 配置文件]
kubectl delete -f [YAML 配置文件]
根据配置文件删除资源
18.5 kubectl delete all --all-namespaces
18.6 kubectl delete service SERVICE_NAME
18.7 kubectl delete deployment DEPLOYMENT_NAME
十九、kubectl explain
kubectl explain jobs
kubectl explain secrets
kubectl explain pods(po)
kubectl explain nodes(no)
kubectl explain clusters
kubectl explain events(ev)
kubectl explain configmap(cm)
kubectl explain services(svc)
kubectl explain endpoints(ep)
kubectl explain daemonsets(ds)
kubectl explain namespaces(ns)
kubectl explain pod [Pod Name]
kubectl explain storageclasses
kubectl explain ingresses(ing)
kubectl explain networkpolicies
kubectl explain replicasets(rs)
kubectl explain node [Node Name]
kubectl explain deployments(deploy)
kubectl explain persistentvolumes(pv)
kubectl explain componentstatuses(cs)
kubectl explain service [Service Name]
kubectl explain deployment [Deployment Name]
二十、kubectl rollout
20.1 kubectl rollout undo
20.2 kubectl rollout pause
20.3 kubectl rollout status
20.4 kubectl rollout resume
20.5 kubectl rollout history
二十一、kubectl describe
kubectl describe
用于查看 Kubernetes
资源的详细信息,帮助调试和了解资源的状态。
kubectl describe jobs
kubectl describe secrets
kubectl describe pods(po)
kubectl describe nodes(no)
kubectl describe clusters
kubectl describe events(ev)
kubectl describe configmap(cm)
kubectl describe services(svc)
kubectl describe endpoints(ep)
kubectl describe daemonsets(ds)
kubectl describe namespaces(ns)
kubectl describe pod [Pod Name]
kubectl describe pod [Pod Name]
查看指定 Pod
的详细信息
kubectl describe storageclasses
kubectl describe ingresses(ing)
kubectl describe networkpolicies
kubectl describe replicasets(rs)
kubectl describe node [Node Name]
kubectl describe node [Node Name]
查看指定 Node
的详细信息
kubectl describe deployments(deploy)
kubectl describe persistentvolumes(pv)
kubectl describe componentstatuses(cs)
kubectl describe service [Service Name]
kubectl describe service [Service Name]
查看指定 Service
的详细信息
kubectl describe deployment [Deployment Name]
kubectl describe deployment [Deployment Name]
查看 kube-system
命名空间下的 Pod
详细信息