Kubernetes1.2版本最近刚发布就立马成为容器(Docker,Rocket,Hyper等等)的事实上的集群管理路径。这里是一些关于1.2版本的有趣特色:docker
集群如今能够扩容到30,000个容器一个集群json
优雅的关闭节点,过渡到集群里运行的其余节点bootstrap
自定义指定指标做为自动扩容的基础windows
动态配置管理app
当你在本地笔记本上面开发微服务的时候,你可使用Kubernetes来运行你的本地Docker容器,而且在你配置你的应用程序的时候,获得开发人员/QA/生产过程等类似过程。
对于Java开发人员来讲,有一件事确定会发生:就是你如何看日志、作远程调试以及如何追踪协议栈。文章如下的内容是一些小提示:ssh
为你的Pod跟踪日志微服务
在一些集群管理系统中,你基本上不得不查找应用程序的本地IP(若是是在容器里运行的话),不管如何都要ssh到它,而后找到日志而且跟踪它。有了Kubernetes,你就不用必须作上述的任意事情了。除了你正在运行的那台机器(也就是你运行Kubernetes client的地方),你能够按照下面的来:post
在你的集群里列出如下podsspa
追踪日志插件
如今选择你想要追踪的日志,而且运行它!
若是必须的话,经过Shell链接
若是你因为某些缘由必须登录到pod(在文件系统中试探一下,查看其它配置文件等等)
虚拟机远程调试你的应用程序
这样的话,查看你的应用程序上面发生了什么就会变得十分方便。为了作到这个,你只要作跟今天作的同样的事情就行了。当你bootstrap你的JVM,你应该有方法启动JVM调试。例如,HawtApp Maven plugin就是一个简单的mvn 插件,能够将Java Main做为可执行的、简单的、灵活的bootrtrap bin/run.sh
脚本(或者windows的批处理文件),容许你控制路径和经过环境变量调试。
令Bootstrap Java能够暴露到调试端口
好比:
经过Kubernetes密钥清单在docker容器里定义调试端口
如今你须要在你的Docker容器里面经过你的Kubernetes密钥清单(json/yaml)曝光端口 5005 (在这个例子里)
注意,咱们已经添加了一个env变量到Kubernetes密钥清单文件到能够控制咱们是否想要远程调试打开或者关闭(true/false)。Bootstrap脚本(以上所述)会检查env 变量,而且你能够经过kube密钥清单控制它(如今Kube1.2有了ConfigMap,或者OpenShift templates)。
最后一步是代理服务调试端口到你的本地机器。若是你在本地运行 kubectlclient,就会十分容易:
列出集群里的pods
代理pod到一个特殊端口
ceposta@postamac(~) $ kubectl port-forward file-ingress-events-3artj 5005:5005
上述代码会从你的本地环境(5005)端口转发到pod的端口5005。如今你能够将你的远程调试器附加到 localhost:5005
。
但愿这篇帖子能够帮助你调试你的Java apps!