Tag: kubernetes

如何优雅安全地最大化分配给Kubernetes中的Java应用程序的堆空间量?

我有一个Kubernetes部署,它基于anapsix / alpine-java映像部署Java应用程序。 容器中没有其他任何东西可以用于Java应用程序和容器开销。 我想最大化Java进程在docker容器中可以使用的内存量,并最小化将保留但从未使用过的ram数量。 例如我有: 两个Kubernetes节点,每个节点有8个ram,没有交换 运行Java进程的Kubernetes部署,最多消耗1 gig堆以实现最佳运行 如何安全地最大化在两个节点上运行的pod的数量,而由于内存限制,从不让Kubernetes终止我的POD? apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-deployment spec: replicas: 1 template: metadata: labels: app: my-deployment spec: containers: – name: my-deployment image: myreg:5000/my-deployment:0.0.1-SNAPSHOT ports: – containerPort: 8080 name: http resources: requests: memory: 1024Mi limits: memory: 1024Mi Java 8 update 131+有一个标志-XX:+ UseCGroupMemoryLimitForHeap来使用来自Kubernetes部署的Docker限制。 我的Docker实验向我展示了Kubernetes正在发生的事情 如果我在Docker中运行以下代码: docker run -m […]

为什么Cassandra客户端在没有epoll的情况下失败?

当我在本地运行我的服务时,我收到epoll不可用的警告,因此它正在使用NIO。 很公平。 当我在Kubernetes中部署它时,我得到了这个,这阻止了服务运行: 2017-03-29T19:09:22.739482458Z 19:09:22.739 WARN com.datastax.driver.core.NettyUtil – Found Netty’s native epoll transport in the classpath, but epoll is not available. Using NIO instead. 2017-03-29T19:09:22.739505903Z java.lang.UnsatisfiedLinkError: could not load a native library: netty-transport-native-epoll 2017-03-29T19:09:22.739509966Z at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:224) 2017-03-29T19:09:22.739513326Z at io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:269) 2017-03-29T19:09:22.739516421Z at io.netty.channel.epoll.Native.(Native.java:64) 2017-03-29T19:09:22.739519628Z at io.netty.channel.epoll.Epoll.(Epoll.java:33) 2017-03-29T19:09:22.739522527Z at java.lang.Class.forName0(Native Method) 2017-03-29T19:09:22.739525253Z at java.lang.Class.forName(Class.java:264) 2017-03-29T19:09:22.739528047Z at com.datastax.driver.core.NettyUtil.(NettyUtil.java:68) […]

Kafurn in Kubernetes – 将协调员标记为团体死亡

我对Kubernetes很新,并想用它来设置Kafka和zookeeper。 我能够使用StatefulSets在Kubernetes中设置Apache Kafka和Zookeeper。 我按照这个来构建我的清单文件。 我制作了1张kafka和zookeeper的复制品,并且还使用了持久卷。 所有pod都在运行并准备就绪。 我尝试通过指定nodePort(30010)来公开kafka并使用Service 。 看起来这会将kafka暴露给外界,在那里他们可以向kafka经纪人发送消息并从中消费。 但是在我的Java应用程序中,我创建了一个使用者并将bootstrapServer添加为:30010 ,显示了以下日志: INFO oakcciAbstractCoordinator – Discovered coordinator kafka-0.kafka-hs.default.svc.cluster.local:9093 (id: 2147483647 rack: null) for group workerListener. INFO oakcciAbstractCoordinator – Marking the coordinator kafka-0.kafka-hs.default.svc.cluster.local:9093 (id: 2147483647 rack: null) dead for group workerListener 有趣的是,当我使用kubectl命令测试集群时,我能够生成和使用消息: kubectl run -ti –image=gcr.io/google_containers/kubernetes-kafka:1.0-10.2.1 produce –restart=Never –rm \ — kafka-console-producer.sh –topic test –broker-list kafka-0.kafka-hs.default.svc.cluster.local:9093 done; […]

将Spring Cloud与Orchestration工具一起使用,如Docker Swarm和Kubernetes

我有一个云原生应用程序,它是使用Spring Cloud Netflix 。 所以在我的应用程序中,我正在使用Eureka服务发现来管理应用程序的不同服务的所有实例。 当每个服务实例想要与另一个服务实例通信时,它使用Eureka获取有关目标服务的所需信息(例如,ip和port)。 服务编排也可以使用Docker Swarm和Kubernetes等工具实现,看起来Eureka和Docker Swarm和Kubernetes之间存在一些重叠。 例如,想象一下,我在Docker Swarm创建了一个具有5个实例的服务,并且swarm确保这5个实例始终正常运行。 此外,该应用程序的每项服务都在内部向Eureka发送定期心跳,以表明它仍然存在。 看起来我们有两层健康检查,一个用于Docker ,另一个用于Spring Cloud本身。 或者,例如,您可以在整个swarm中公开服务的端口,这消除了一些服务发现的需求(端口始终是明显的)。 另一个例子可能是由docker中的routing mesh执行的负载平衡,以及由Ribbon组件或Eureka本身在内部发生的负载平衡。 在这种情况下,具有硬件负载平衡器,引导我们到3层负载平衡系统。 所以我想知道将这些工具一起使用是否合理? 似乎使用这些技术的组合会极大地增加应用程序的复杂性并且可能是多余的。 谢谢你的阅读!