首页 > 解决方案 > 除了与 Hana 紧密耦合之外,Kubernetes pod 还可以扩展吗?

问题描述

我们有一个带有后端服务的 Kubernetes 集群,这些服务从外部 Hana 提取数据并将它们发送到 Kafka。每当启动 pod 时,导入过程就会开始,大约需要 90 分钟。由于与 Hana 的紧密耦合,我们无法运行这些后端服务的多个 Pod。我觉得这可以通过某种方式得到改善。但我不知道怎么做。

在不将相同数据三次拉入 Kafka 的情况下,为后端服务提供多个 pod 的方法是什么?

对此设置还有其他想法吗?

标签: kubernetesapache-kafkamicroservices

解决方案


K8ns中有一个init容器的概念,请看文档。

简而言之,如果导入过程作为单独的例程移动到 init 容器,那么实际服务可以在多个实例中启动。

下面给出了一个示例 pod.yml - 它只是一个指示性示例,可以让您了解。

apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
  app: myapp
spec:
   containers:
     - name: myapp-container
     image: busybox:1.28
     command: ['sh', '-c', 'echo The app is running! && sleep 3600']
  initContainers:
     - name: init-myservice
     image: busybox:1.28
     command: ['sh', '-c', "until nslookup myservice.$(cat 
   /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; 
    do echo waiting for myservice; sleep 2; done"]
    - name: init-mydb
    image: busybox:1.28
    command: ['sh', '-c', "until nslookup mydb.$(cat 
  /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; 
  do echo waiting for mydb; sleep 2; done"]

最后,您必须将导入数据的功能分解为一个单独的功能 - 您可以水平扩展的帖子。


推荐阅读