kubectl
kubectl 自动补全
source < (kubectl completion bash) # setup autocomplete in bash, bash-completion package should be installed first.
source < (kubectl completion zsh) # setup autocomplete in zsh
更详细的使用方法参考 kubectl completion --help
。里面包含详细的说明,包含如何在 MacOS 上使用。
kubectl 上下文和配置
设置 kubectl 命令交互的 kubernetes 集群并修改配置信息。参阅 使用 kubeconfig 文件进行跨集群验证 获取关于配置文件的详细信息。
kubectl config view # 显示合并后的 kubeconfig 配置
# 同时使用多个 kubeconfig 文件并查看合并后的配置
KUBECONFIG=~/.kube/config:~/.kube/kubconfig2 kubectl config view
# 获取 e2e 用户的密码
kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}'
kubectl config current-context # 显示当前的上下文
kubectl config use-context my-cluster-name # 设置默认上下文为 my-cluster-name
# 向 kubeconf 中增加支持基本认证的新集群
kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword
# 使用指定的用户名和 namespace 设置上下文
kubectl config set-context gce --user=cluster-admin --namespace=foo \
&& kubectl config use-context gce
打印当前使用 API 调用过程
kubectl 的主要作用就是与 ApiServer 进行交互, 而交互的过程, 我们可以通过下面的方式来打印,
# 这个命令尤其适合调试自己的api接口时使用.
kubectl get ns -v=9
-v
参数会打印执行过程的日志。范围为 0-9
,9
最高,会打印最详细的信息。
生成yaml模板
# 有两种方式可以生成
# 方法一
kubectl create <resourcename> [parameters] --dry-run=client -o yaml > <filename>.yaml
# 方法二
kubectl explain <resourcename> --recursive > <filename>.yaml
第二种方法生成的更全面,但是会包含很多不必要的参数。
强制删除 Pod(即使处于Terminating)
kubectl delete pod $POD_ID --force --grace-period=0