kubectl 别名配置
我习惯把 kubectl alias 成 k
mac为例
vi ~/.bashrc
alias k='kubectl'
alias ka='kubectl apply --recursive -f'
alias kex='kubectl exec -i -t'
alias klo='kubectl logs -f'
alias kg='kubectl get'
alias kd='kubectl describe'
alias kcp='kubectx config_pro'
alias kct='kubectx config_test'
alias kip='kubectl get pods -o=custom-columns=NAME:.metadata.name,Node-IP:.status.hostIP,Pod-IP:.status.podIP'
别名使用
kg po //获取pod
kg po podname 获取pod描述
Context 和 Namespace 切换
一直敲 --context=xxx -n=xxx 是很麻烦的事情,而 kubectl 切换 Context 和 Namespace 又比较繁琐。好在 kubectx 项目能很好地解决这个问题(结合 fzf 体验更棒)。
brew install kubectx
brew install fzf # 辅助做 context 和 namespace 的模糊搜索
装完之后基本操作,重命名成 kubectl 插件的格式:
mv /usr/local/bin/kubectx /usr/local/bin/kubectl-ctx
mv /usr/local/bin/kubens /usr/local/bin/kubectl-ns
使用
k ctx
k ns
tail 多个 Pod 的日志
kubectl logs 有一个限制是不能同时 tail 多个 Pod 中容器的日志(可以同时查看多个,但是此时无法使用 -f 选项来 tail)。这个需求很关键,因为请求是负载均衡到网关和微服务上的,要追踪特定的访问日志最方便的办法就是 tail 所有的网关再 grep。比较好的解决方案是 stern 这个项目,除了可以同时 tail 多个容器的日志之外,stern 还:
允许使用正则表达式来选择需要 tail 的 PodName
为不同 Pod 的日志展示不同的颜色
tail 过程中假如有符合规则的新 Pod 被创建,那么会自动添加到 tail 输出中
可以说是非常方便了。老样子,还是加入到我们的 kubectl 插件中:
brew install stern
mv /usr/local/bin/stern /usr/local/bin/kubectl-tail
# tail 当前 namespace 所有 pod 中所有容器的日志
k tail .