更好用的kubectl
by 伊布
kubectl是管理kubernetes集群的命令行工具,实际使用的频率非常之高,因此一个更方便的kubectl通常会带来很大的便利性。下面介绍几个很棒的工具。
zsh
其实我更喜欢用fish(传说中90后都在用),但是fish针对kubectl的生态还不够完善(主要是没有auto completion),因此还是先用zsh。
推荐用oh-my-zsh。
kubectl auto completion
早期在敲kubectl命令行的时候,一个很头大的事情就是很多资源的名字需要鼠标复制粘贴。其实kubectl已经支持了自动补齐(auto completion),安装也很简单,参考官方文档就可以了。
为了方便我粘贴一下命令:
yum install bash-completion -y
echo "source <(kubectl completion bash)" >> ~/.bashrc
之后退出重新登录,或者source下~/.bashrc
就可以了。
配置对多集群的访问
kubectl可以从个人pc上管理多个远端的kubernetes集群。
kubectl是通过.kube/config
文件连接到集群,和在集群master上其实是类似的。config文件的结构如下。
apiVersion: v1
kind: Config
preferences: {}
clusters:
- cluster:
name: development
- cluster:
name: scratch
users:
- name: developer
- name: experimenter
contexts:
- context:
name: dev-frontend
cluster: development
user: developer
- context:
name: exp-scratch
cluster: scratch
user: experimenter
官方文档写的比较详细,实际有一个比较简单的做法,就是将两个集群的config文件做一下merge,创建2个context,关联到不同的cluster-user就可以了。
注意context不能以数字开头。配置好以后会有多个context。
~ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* c180 cluster180 kubernetes-admin-180 default
c200 cluster200 kubernetes-admin-200 default
之后可以通过 kubectl config set-context xxx
切换到不同的上下文来操作不同的集群。
kube-ctx/kubens
毕竟上面的命令还是太长了,社区还有kubectx项目来方便切换kubectx。
kubectx项目还提供了kubens
命令,用来在同一个context下切换不同的namespace,切换后,输入kubectl命令就不需要总是-n {namespace}
,很方便。
kube-ps1
由于经常需要切换不同的集群,俗话说常在河边站哪有不湿鞋,很可能会误操作集群,这个时候有个提示就很帮了。
kube-ps1可以很方便的修改PS1。
不过由于用的是oh-my-zsh,其实可以不安装,直接在~/.zshrc
开启plugin加上kube-ps1就可以了。
然后自定义一下。
PROMPT='$(kube_ps1)'$PROMPT
KUBE_PS1_PREFIX=""
KUBE_PS1_SYMBOL_DEFAULT=""
KUBE_PS1_DIVIDER="-"
KUBE_PS1_SUFFIX=" "
kube-ps1
项目是给bash/zsh用的,fish的话可以用我的gist。
到这里就可以了,我们有了自动完成、集群切换、namespace切换、命令行提示,很完美了。
其实fish除了kubectl自动补齐,其他的也都能完成。社区有一个插件号称可以达到自动补齐的功能,但是非常慢,基本不可用了(反应太慢)。有时间我看看能不能改进一下。
Ref:
Subscribe via RSS