Skip to content

kubectl 常用命令

kubeclt 备忘单:https://kubernetes.io/zh/docs/reference/kubectl/cheatsheet/
kubectl 介绍:https://kubernetes.io/zh/docs/reference/kubectl/overview/
配置多集群:https://kubernetes.io/zh/docs/tasks/access-application-cluster/configure-access-multiple-clusters/

命令自查

平时可通过帮助命令来查询命令用法:

  • kubectl -h 所有命令概览
  • kubectl config <command> --help 具体命令的详细用法
  • kubectl options 全局命令参数

kubeconfig 配置文件相关命令

查看配置信息

bash
# 多个汇总配置也可以查到
kubectl config view

列出所有 context

bash
kubectl config get-contexts

切换 context

bash
kubectl config use-context {CONTEXT_NAME}

切换当前默认命名空间

bash
kubectl config set-context --current --namespace=my-namespace

指定 config 文件

bash
kubectl --kubeconfig=.kube/aws-test-config

通过 apiServer 和 apiToken 来指定集群

bash
kubectl --insecure-skip-tls-verify=true --server='<apiServer>' --token='<apiToken>' get pods -n

资源管理命令

查询

bash
kubectl get pods -A                     # 查看所有命名空间 pod 列表
kubectl get pods -n <namespace>         # 查看指定命名空间 pod 列表
kubectl get deployments -A              # 查看所有命名空间 deployment 列表
kubectl logs -f <pod>                   # 查看 pod 容器日志
kubectl describe secret <secretName>    # 查看指定 secret 的详细信息

创建

bash
kubectl create -f 1.yaml                # 创建,已存在时报错

更新

bash
kubectl apply -f 1.yaml                 # 存在则更新,不存在则创建
kubectl replace -f 1.yaml               # 替换,不存在时报错

删除

bash
kubectl delete deployments kubernetes-dashboard -n kubernetes-dashboard

其它命令

拷贝文件到 pod 中

bash
kubectl cp --help
kubectl cp /tmp/foo <namespace>/<pod>:/tmp/bar
kubectl cp <namespace>/<pod>:/tmp/foo /tmp/bar

登录 pod 终端

bash
kubectl exec -it <pod> -n <namespace> -- bash

映射本地端口到 pod 端口

https://kubernetes.io/zh-cn/docs/tasks/access-application-cluster/port-forward-access-application-cluster/#forward-a-local-port-to-a-port-on-the-pod

bash
kubectl port-forward <pod> -n <namespace> <local-port>:<pod-port>

proxy 代理

https://kubernetes.io/zh-cn/docs/tasks/extend-kubernetes/http-proxy-access-api/

bash
kubectl proxy --address=10.221.0.102 --port=8801 --disable-filter=true
  • 不加 --disable-filter=true 可能会报 forbidden 的错误
  • 代理后就可以使用代理地址端口来使用 kubectl 命令和 python sdk 了
  • 我当时使用是为了加速访问谷歌云 k8s 集群

伸缩副本数

bash
# 将指定命名空间的所有 deployment 副本数均置为 0
kubectl scale deploy --replicas=0 --all -n <namespace>