一文详解所有kubernetes常用命令
本文介绍了kubernetes常用命令以及参数,这些命令和参数应该能帮助你更全面地管理和操作Kubernetes集群中的各种资源。
·
1. 获取资源信息
命令: kubectl get <resource>
- 功能: 列出指定资源的信息。
- 参数:
-o <output_format>: 指定输出格式,如yaml、json、wide、name等。-n <namespace>: 指定命名空间。--all-namespaces: 在所有命名空间中查找资源。--watch或-w: 实时监视资源的变化。--field-selector=<selector>: 使用字段选择器过滤资源。--selector=<label_selector>: 使用标签选择器过滤资源。
示例:
- 查看所有Pod(默认命名空间):
kubectl get pods - 查看所有Pod(指定命名空间):
kubectl get pods -n my-namespace - 查看所有Pod(所有命名空间):
kubectl get pods --all-namespaces - 查看所有Pod的详细信息(JSON格式):
kubectl get pods -o json - 查看所有标签为
app=web的Pod:kubectl get pods --selector=app=web - 实时监视所有Pod的变化:
kubectl get pods -w
2. 查看资源详情
命令: kubectl describe <resource> [NAME]
- 功能: 显示指定资源或资源实例的详细信息。
- 参数:
-n <namespace>: 指定命名空间。-o <output_format>: 指定输出格式,如yaml、json等。
示例:
- 查看名为
my-pod的Pod的详细信息:kubectl describe pod my-pod - 查看名为
my-pod的Pod的详细信息(指定命名空间):kubectl describe pod my-pod -n my-namespace
3. 创建资源
命令: kubectl create -f <file.yaml>
- 功能: 根据提供的YAML文件创建资源。
- 参数:
-n <namespace>: 指定命名空间。--validate=false: 不验证YAML文件。--save-config: 将配置保存到资源对象中,以便以后使用kubectl edit进行编辑。
示例:
- 使用名为
deployment.yaml的文件创建一个Deployment:kubectl create -f deployment.yaml - 使用名为
deployment.yaml的文件在指定命名空间中创建一个Deployment:kubectl create -f deployment.yaml -n my-namespace
4. 应用配置更改
命令: kubectl apply -f <file.yaml>
- 功能: 更新资源配置,如果资源不存在,则创建之。
- 参数:
-n <namespace>: 指定命名空间。--dry-run=client: 只在客户端模拟应用,不实际执行。--record: 记录此次应用的操作历史。--force: 如果资源已经存在,强制更新。
示例:
- 更新或创建名为
service.yaml的服务定义:kubectl apply -f service.yaml - 更新或创建名为
service.yaml的服务定义(指定命名空间):kubectl apply -f service.yaml -n my-namespace - 模拟更新或创建名为
service.yaml的服务定义:kubectl apply -f service.yaml --dry-run=client
5. 删除资源
命令: kubectl delete <resource> [NAME] | -f <file.yaml>
- 功能: 删除指定的资源。
- 参数:
-n <namespace>: 指定命名空间。--force: 强制删除资源,即使资源处于终止状态。--grace-period=<seconds>: 设置优雅终止的时间(秒)。--now: 立即删除资源,不等待优雅终止。--cascade=<true|false>: 是否级联删除子资源。
示例:
- 删除名为
my-service的服务:kubectl delete service my-service - 删除由
configmap.yaml文件定义的所有资源:kubectl delete -f configmap.yaml - 强制删除名为
my-pod的Pod:kubectl delete pod my-pod --force --grace-period=0 - 立即删除名为
my-deployment的Deployment及其所有副本:kubectl delete deployment my-deployment --now --cascade=true
6. 执行命令
命令: kubectl exec -it <pod-name> -- <command>
- 功能: 在Pod中的容器内执行命令。
- 参数:
-c <container-name>: 指定容器名称(如果Pod中有多个容器)。-n <namespace>: 指定命名空间。--stdin或-i: 打开标准输入。--tty或-t: 分配伪TTY。
示例:
- 在名为
my-pod的Pod中打开bash:kubectl exec -it my-pod -- /bin/bash - 在名为
my-pod的Pod中执行ls命令(指定容器名称):kubectl exec -it my-pod -c my-container -- ls
7. 查看日志
命令: kubectl logs <pod-name>
- 功能: 输出Pod的日志。
- 参数:
-c <container-name>: 指定容器名称(如果Pod中有多个容器)。-n <namespace>: 指定命名空间。--since=<duration>: 只显示最近一段时间的日志。--tail=<lines>: 只显示最后几行日志。--follow或-f: 实时查看日志。--previous: 查看上一个容器实例的日志(适用于重启后的容器)。
示例:
- 查看名为
my-pod的Pod的日志:kubectl logs my-pod - 查看名为
my-pod的Pod的日志(指定容器名称):kubectl logs my-pod -c my-container - 查看名为
my-pod的Pod的最后10行日志:kubectl logs my-pod --tail=10 - 实时查看名为
my-pod的Pod的日志:kubectl logs my-pod -f - 查看名为
my-pod的Pod的上一个容器实例的日志:kubectl logs my-pod --previous
8. 端口转发
命令: kubectl port-forward <pod-name> <local-port>:<pod-port>
- 功能: 将本地端口转发到Pod中的端口。
- 参数:
-n <namespace>: 指定命名空间。--address=<ip-address>: 指定绑定的IP地址。
示例:
- 将本地端口8080转发到名为
my-pod的Pod的9000端口:kubectl port-forward my-pod 8080:9000 - 将本地端口8080转发到名为
my-pod的Pod的9000端口(指定命名空间):kubectl port-forward my-pod 8080:9000 -n my-namespace - 将本地端口8080转发到名为
my-pod的Pod的9000端口,并绑定到特定IP地址:kubectl port-forward --address 127.0.0.1 my-pod 8080:9000
9. 暴露服务
命令: kubectl expose <resource> <name> --port=<port> --target-port=<port> --type=<type>
- 功能: 创建一个新的Service来暴露某个Pod或RC。
- 参数:
--port=<port>: 服务监听的端口。--target-port=<port>: Pod中容器的端口。--type=<type>: 服务类型,如ClusterIP、NodePort、LoadBalancer。-n <namespace>: 指定命名空间。--external-ip=<ip>: 指定外部IP地址(适用于LoadBalancer类型)。--labels=<labels>: 为服务添加标签。
示例:
- 暴露名为
my-deployment的Deployment为NodePort类型的服务:kubectl expose deployment my-deployment --port=80 --target-port=8080 --type=NodePort - 暴露名为
my-pod的Pod为ClusterIP类型的服务(指定命名空间):kubectl expose pod my-pod --port=80 --target-port=8080 --type=ClusterIP -n my-namespace - 暴露名为
my-deployment的Deployment为LoadBalancer类型的服务,并指定外部IP地址:kubectl expose deployment my-deployment --port=80 --target-port=8080 --type=LoadBalancer --external-ip=192.168.1.100
10. 缩放副本
命令: kubectl scale --replicas=<num> <resource> <name>
- 功能: 调整指定资源的副本数量。
- 参数:
-n <namespace>: 指定命名空间。--current-replicas=<num>: 当前副本数(用于条件缩放)。--timeout=<duration>: 设置操作超时时间。
示例:
- 将名为
my-deployment的Deployment的副本数设置为3:kubectl scale --replicas=3 deployment/my-deployment - 将名为
my-statefulset的StatefulSet的副本数设置为2(指定命名空间):kubectl scale --replicas=2 statefulset/my-statefulset -n my-namespace - 将名为
my-deployment的Deployment的副本数从2个缩放到3个(条件缩放):kubectl scale --current-replicas=2 --replicas=3 deployment/my-deployment
11. 编辑资源
命令: kubectl edit <resource> [NAME]
- 功能: 使用默认编辑器编辑指定资源的配置。
- 参数:
-n <namespace>: 指定命名空间。--output-version=<version>: 指定输出的API版本。--windows-line-endings: 使用Windows行尾格式。
示例:
- 编辑名为
my-deployment的Deployment:kubectl edit deployment my-deployment - 编辑名为
my-deployment的Deployment(指定命名空间):kubectl edit deployment my-deployment -n my-namespace
12. 替换资源
命令: kubectl replace -f <file.yaml>
- 功能: 替换现有资源的配置。
- 参数:
-n <namespace>: 指定命名空间。--force: 如果资源已经存在,强制替换。--cascade=<true|false>: 是否级联删除子资源。
示例:
- 替换名为
deployment.yaml的Deployment配置:kubectl replace -f deployment.yaml - 替换名为
deployment.yaml的Deployment配置(指定命名空间):kubectl replace -f deployment.yaml -n my-namespace
13. 滚动更新
命令: kubectl rollout <subcommand> <resource> [NAME]
- 功能: 管理资源的滚动更新。
- 子命令:
status: 查看滚动更新的状态。history: 查看滚动更新的历史记录。undo: 回滚到之前的版本。pause: 暂停滚动更新。resume: 恢复暂停的滚动更新。
参数:
-n <namespace>: 指定命名空间。--to-revision=<revision>: 回滚到指定的版本。
示例:
- 查看名为
my-deployment的Deployment的滚动更新状态:kubectl rollout status deployment/my-deployment - 查看名为
my-deployment的Deployment的滚动更新历史:kubectl rollout history deployment/my-deployment - 回滚名为
my-deployment的Deployment到上一个版本:kubectl rollout undo deployment/my-deployment - 回滚名为
my-deployment的Deployment到指定版本:kubectl rollout undo deployment/my-deployment --to-revision=3 - 暂停名为
my-deployment的Deployment的滚动更新:kubectl rollout pause deployment/my-deployment - 恢复名为
my-deployment的Deployment的滚动更新:kubectl rollout resume deployment/my-deployment
14. 设置资源属性
命令: kubectl set <subcommand> <resource> [NAME]
- 功能: 设置资源的属性。
- 子命令:
image: 设置容器镜像。env: 设置环境变量。resources: 设置资源限制和请求。selector: 设置选择器。subject: 设置RBAC主体。triggers: 设置触发器。
参数:
-n <namespace>: 指定命名空间。--containers=<container-names>: 指定容器名称。--local: 在本地修改文件,不应用到集群。
示例:
- 设置名为
my-deployment的Deployment的容器镜像:kubectl set image deployment/my-deployment my-container=my-new-image:latest - 设置名为
my-pod的Pod的环境变量:kubectl set env pod/my-pod KEY1=value1 KEY2=value2 - 设置名为
my-deployment的Deployment的资源限制:kubectl set resources deployment/my-deployment -c=my-container --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi
15. 获取资源配置
命令: kubectl get <resource> [NAME] -o yaml
- 功能: 获取资源的完整配置并以YAML格式输出。
- 参数:
-n <namespace>: 指定命名空间。--export: 导出资源配置,去除与集群相关的字段。
示例:
- 获取名为
my-deployment的Deployment的完整配置:kubectl get deployment my-deployment -o yaml - 导出名为
my-deployment的Deployment的配置(去除与集群相关的字段):kubectl get deployment my-deployment -o yaml --export
这些命令和参数应该能帮助你更全面地管理和操作Kubernetes集群中的各种资源。如果有更多问题或其他疑问欢迎留言讨论!
更多推荐
所有评论(0)