问题现象 最近在处理项目上问题发现之前同事构建的AlpineLinux的镜像不能执行jstack等JDK命令,报错如下. Unable to get pid of LinuxThreads manager thread 问题原因 问题的根本原因有两点: Alpine Linux 使用的不是标准gnu libc (glibc),而是musl libc apk包管理器安装的OpenJDK是IceTea补丁版本的,已经停止维护了 这两个原因导致了一个神奇的现象:当Java进程PID=1时,通过Open…
使用alpine镜像,jstack和arthas等无法连接到pid为1的java进程 k8s容器中执行结果 / # jstack 1 1: Unable to get pid of LinuxThreads manager thread 解决办法: 启动参数通过变量取代,比如: CMD java $JAVA_OPTS -jar /order.jar 通过top可以看到,进程1就被上面命令占用, 参数替换后的命令是非1的进程,此时就可以使用jstack和arthas等命令了. PID PPID U…
为了使主机和虚拟机在同一个无线网络中,而虚拟机的系统是Windows Server 2008 R2 64位的,使用360免费wifi,始终无法开启.在网上查找解决方案,终于找到了原因:Windows Server 2008 R2默认没有开启无线WLAN的功能,所以需要将该功能打开.具体操作方法如下:计算机-管理(右键)-功能-添加功能-选择无线LAN服务,然后下一步安装. 启发: 以后遇到类似功能无法使用的情况,也可以试试添加某项功能,或许就能解决. 参考自:http://blog.sina.c…
Arthas(阿尔萨斯)是阿里巴巴开源的性能分析神器. k8s中使用arthas的三种方式 [bak]https://www.cnblogs.com/uncleyong/p/15498842.html 1.复制文件:从本机复制到k8s容器,https://www.cnblogs.com/uncleyong/p/15498199.html 2.初始化容器 3.打到镜像里面 示例:初始化容器 资源文件yaml配置 初始化容器 initContainers: - image: 192.168.117.…
为什么多线程.junit 中无法使用spring 依赖注入? 这个问题,其实体现了,我们对spring已依赖太深,以至于不想自己写实例了. 那么到底是为什么在多线程和junit单元测试中不能使用依赖注入呢? 一.为什么多线程下spring的依赖注入失效了呢? 答:因为spring为了考虑安全性问题,在多线程情况下,不支持直接使用 @Resouce 注解方式进行直接的bean注入,那么也就是说,如果在多线程调用该注入实例化的变量时,将会报NullPointerException . 解决办法: 多…
在K8s中创建StatefulSet 遇到的问题: 使用Deployment创建的Pod是无状态的,当挂在Volume之后,如果该Pod挂了,Replication Controller会再run一个来保证可用性,但是由于是无状态的,Pod挂了的时候与之前的Volume的关系就已经断开了,新起来的Pod无法找到之前的Pod.但是对于用户而言,他们对底层的Pod挂了没有感知,但是当Pod挂了之后就无法再使用之前挂载的磁盘了. 解决方案 使用K8s v1.5版本推出的StatefulSet可以保留P…
在K8s中创建StatefulSet 遇到的问题: 使用Deployment创建的Pod是无状态的,当挂在Volume之后,如果该Pod挂了,Replication Controller会再run一个来保证可用性,但是由于是无状态的,Pod挂了的时候与之前的Volume的关系就已经断开了,新起来的Pod无法找到之前的Pod.但是对于用户而言,他们对底层的Pod挂了没有感知,但是当Pod挂了之后就无法再使用之前挂载的磁盘了. 解决方案 使用K8s v1.5版本推出的StatefulSet可以保留P…
Kubernetes的网络通信问题: 1. 容器间通信: 即同一个Pod内多个容器间通信,通常使用loopback来实现. 2. Pod间通信: K8s要求,Pod和Pod之间通信必须使用Pod-IP 直接访问另一个Pod-IP 3. Pod与Service通信: 即PodIP去访问ClusterIP,当然,clusterIP实际上是IPVS 或 iptables规则的虚拟IP,是没有TCP/IP协议栈支持的.但不影响Pod访问它. 4. Service与集群外部Client的通信,即K8s中P…
目录 一.网络前提条件-网络模型 二.需要解决的网络问题 1.容器和容器之间的网络 2.pod与pod之间的网络 同一台node节点上pod和pod通信 不同node节点上pod和pod通信 3.pod与service之间的网络 4.Internet与service之间的网络 Internet到k8s的流量 本文参考戳该链接可以看原文,原文作者整理非常好 一.网络前提条件-网络模型 k8s组网要求 所有的Pods之间可以在不使用NAT网络地址转换的情况下相互通信 所有的Nodes之间可以在不使用…
k8s的namespace一直Terminating的完美解决方案 在k8s集群中进行测试删除namespace是经常的事件,而为了方便操作,一般都是直接对整个名称空间进行删除操作. 相信道友们在进行此步操作的时候,会遇到要删除的namespace一直处于Terminating.下面我将给出一个完美的解决方案, 测试demo 创建demo namespace # kubectl create ns test namespace/test created 删除demo namespace # ku…