kubectl 命令
1. 获取资源信息 (get
)
用途:查看 Kubernetes 资源的状态和信息。
示例:
kubectl get pods
说明:列出当前命名空间下所有 Pod。
其他常用参数:
-n <namespace>
:指定命名空间。-o wide
:显示更多列(如 IP、节点等)。--all-namespaces
或-A
:查看所有命名空间的资源。--sort-by <字段>
:按字段排序(如--sort-by=age
)。
2. 查看资源详细信息 (describe
)
用途:显示资源的详细状态、事件、配置等。
示例:
kubectl describe pod <pod-name>
说明:查看某个 Pod 的详细信息,包括事件、状态、IP 等。
3. 查看资源日志 (logs
)
用途:查看 Pod 中容器的日志。
示例:
kubectl logs <pod-name>
说明:
-f
:实时跟踪日志(类似tail -f
)。-c <container-name>
:指定容器(如果 Pod 有多个容器)。
4. 创建资源 (create
)
用途:直接创建 Kubernetes 资源(如 Pod、Deployment)。
示例:
说明:创建一
kubectl create deployment nginx-deployment --image=nginx
个名为 nginx-deployment
的 Deployment,使用 nginx
镜像。
5. 应用配置文件 (apply
)
用途:通过 YAML/JSON 文件创建或更新资源。
示例:
kubectl apply -f deployment.yaml
说明:
- 如果资源不存在则创建,存在则更新。
- 支持
ConfigMap
、Service
、Deployment
等资源类型。
6. 删除资源 (delete
)
用途:删除指定的资源。
示例:
kubectl delete pod <pod-name>
说明:
-n <namespace>
:指定命名空间。--all
:删除所有资源(需谨慎)。
7. 进入容器执行命令 (exec
)
用途:在运行的容器中执行命令(如调试)。
示例:
kubectl exec -it <pod-name> -- /bin/bash
说明:
-it
:交互模式(Interactive Terminal)。--
:分隔符,后接命令(如/bin/sh
)。
8. 管理滚动更新 (rollout
)
用途:管理 Deployment 的滚动更新、回滚等。
示例:
kubectl rollout status deployment <deployment-name>
说明:
status
:查看滚动更新状态。history
:查看历史版本。rollback
:回滚到之前的版本。
9. 扩容/缩容 (scale
)
用途:调整 Deployment 的副本数。
示例:
kubectl scale deployment <deployment-name> --replicas=3
说明:将 Deployment 的副本数设置为 3。
10. 查看事件 (events
)
用途:查看集群或命名空间中的事件(如错误、创建资源等)。
示例:
kubectl get events -n <namespace>
说明:帮助排查资源创建失败或异常问题。
11. 管理服务暴露 (expose
)
用途:为 Pod 或 Deployment 创建 Service。
示例:
kubectl expose deployment <deployment-name> --type=LoadBalancer --port=80
说明:为 Deployment 创建一个 LoadBalancer 类型的 Service,端口 80。
12. 查看节点信息 (node
)
用途:查看 Kubernetes 节点的状态。
示例:
kubectl get nodes
说明:
-o wide
:显示节点 IP、版本等信息。kubectl describe node <node-name>
:查看节点详细信息。
13. 管理命名空间 (namespace
)
用途:创建、删除、切换命名空间。
示例:
kubectl create namespace ai-namespace
说明:
kubectl config set-context --current --namespace=ai-namespace
:切换默认命名空间。kubectl delete namespace ai-namespace
:删除命名空间(谨慎操作)。
14. 管理配置 (config
)
用途:管理 kubeconfig 文件(如上下文、用户、集群)。
示例:
kubectl config get-contexts
说明:
use-context <context-name>
:切换上下文。view
:查看当前 kubeconfig 内容。
15. 管理自动扩展 (autoscale
)
用途:配置水平自动扩展(HPA)。
示例:
kubectl autoscale deployment <deployment-name> --min=1 --max=5 --cpu-percent=80
说明:当 CPU 使用率超过 80% 时,自动扩展副本数(1~5)。
16. 管理密钥 (secrets
)
用途:创建、查看、删除 Secret(敏感信息)。
示例:
kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=123456
说明:创建一个包含用户名和密码的 Secret。
17. 管理持久化卷 (pv
/pvc
)
用途:查看持久化卷(PV)和持久化卷声明(PVC)。
示例:
kubectl get pvc -n <namespace>
说明:查看指定命名空间下的 PVC 状态。
18. 管理网络策略 (networkpolicy
)
用途:查看或创建网络策略(NetworkPolicy)。
示例:
kubectl get networkpolicy
说明:列出所有网络策略(需集群支持 Calico 等网络插件)。
19. 管理服务账户 (serviceaccount
)
用途:查看或创建服务账户(ServiceAccount)。
示例:
kubectl create serviceaccount my-sa
说明:创建一个名为 my-sa
的服务账户。
20. 查看版本信息 (version
)
用途:查看 Kubernetes 客户端和服务器版本。
示例:
kubectl version --short
说明:显示客户端和服务器的版本号(如 Client Version: v1.25.3
)。
21. 查看帮助 (help
)
用途:查看命令的帮助信息。
示例:
kubectl help
说明:列出所有可用命令,或使用 kubectl <command> --help
查看具体命令的帮助。
22. 管理 CRD(自定义资源)
用途:管理自定义资源定义(CustomResourceDefinition)。
示例:
kubectl get crd
说明:列出所有自定义资源类型(如 Ingress
、Operator
等)。
23. 查看资源使用情况 (top
)
用途:查看资源使用情况(需 Heapster 或 Metrics Server)。
示例:
kubectl top pods
说明:显示 Pod 的 CPU 和内存使用情况。
24. 管理 RBAC 权限
用途:管理角色(Role)、角色绑定(RoleBinding)。
示例:
kubectl create role my-role --verb=get --resource=pods
说明:创建一个允许 get
操作 Pod 的 Role。
25. 查看标签 (label
)
用途:为资源添加或修改标签(Label)。
示例:
kubectl label pods <pod-name> env=prod
说明:为 Pod 添加标签 env=prod
,后续可通过 kubectl get pods -l env=prod
查询。
26. 查看注解 (annotate
)
用途:为资源添加注解(Annotation)。
示例:
kubectl annotate pods <pod-name> description="Production Pod"
说明:为 Pod 添加描述信息。
27. 管理 Ingress
用途:查看或创建 Ingress 资源。
示例:
kubectl get ingress
说明:列出所有 Ingress 规则(需 Ingress 控制器支持)。
28. 查看调试信息 (debug
)
用途:调试资源(如注入调试容器)。
示例:
kubectl debug -it <pod-name> --image=busybox --target=<container-name>
说明:为指定 Pod 注入调试容器并进入交互模式。
29. 查看 API 资源 (api-resources
)
用途:列出所有支持的 API 资源类型。
示例:
kubectl api-resources
说明:显示所有可操作的资源(如 pods
、services
、deployments
等)。
30. 查看 API 版本 (api-versions
)
用途:列出所有支持的 API 版本。
示例:
kubectl api-versions
说明:显示 Kubernetes 集群支持的 API 版本(如 apps/v1
、batch/v1
等)。
31. 复制
旧版命令(v1.24 及以下):
kubectl cp [POD_NAME]:[容器内路径] [本地路径] # 或 kubectl cp [本地路径] [POD_NAME]:[容器内路径]
示例:
-
从 Pod 复制到本地:
kubectl cp my-pod:/app/data.txt ./local-folder/kubectl cp /path/to/local/file <namespace>/<pod-name>:/path/in/pod
说明:将 Pod
my-pod
中的/app/data.txt
复制到本地./local-folder/
。 -
从本地复制到 Pod:
kubectl cp ./local-file.txt my-pod:/app/kubectl cp ./expense_report.xlsx 命名空间/node名字:/workspace/tmp kubectl cp ./myfile.txt default/my-pod:/app/
说明:将本地
./local-file.txt
复制到 Podmy-pod
的/app/
目录。
4. Kubernetes 新版(v1.25+)替代方案
方法 1:通过 kubectl exec
和 tar
-
从本地复制到 Pod:
tar cf - ./local-file.txt | kubectl exec -i my-pod -- tar xf - -C /app/
说明:将本地
./local-file.txt
打包并通过kubectl exec
解压到 Pod 的/app/
目录。 -
从 Pod 复制到本地:
kubectl exec my-pod -- tar cf - -C /app/ data.txt | tar xf - -O > ./local-data.txt
说明:从 Pod 的
/app/data.txt
读取并保存到本地./local-data.txt
。
总结
命令 | 用途 | 示例 |
---|---|---|
get | 查看资源列表 | kubectl get pods |
describe | 查看资源详情 | kubectl describe pod <pod-name> |
logs | 查看容器日志 | kubectl logs <pod-name> |
apply | 应用配置文件 | kubectl apply -f deployment.yaml |
delete | 删除资源 | kubectl delete pod <pod-name> |
exec | 进入容器执行命令 | kubectl exec -it <pod-name> -- /bin/bash |
rollout | 管理滚动更新 | kubectl rollout status deployment <deployment-name> |