1. 获取资源信息

命令: kubectl get <resource>
  • 功能: 列出指定资源的信息。
  • 参数:
    • -o <output_format>: 指定输出格式,如yamljsonwidename等。
    • -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>: 指定输出格式,如yamljson等。
示例:
  • 查看名为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>: 服务类型,如ClusterIPNodePortLoadBalancer
    • -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集群中的各种资源。如果有更多问题或其他疑问欢迎留言讨论!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐