除了与hana紧密耦合之外,kubernetes吊舱还能扩展吗?

smdncfj3  于 2021-06-04  发布在  Kafka
关注(0)|答案(2)|浏览(300)

我们有一个kubernetes集群,其后端服务从外部hana提取数据并将其发送到kafka。导入过程在pod启动时开始,大约需要90分钟。由于与hana的紧密耦合,我们无法运行这些后端服务的多个pod。我觉得这是可以改进的。但我不知道怎么做。
有什么办法可以为后端服务提供多个pod,而不必将相同的数据三次拉入kafka?
关于这个设置还有其他想法吗?

p8h8hvxi

p8h8hvxi1#

通常,最好让容器只执行一个操作。
如果您想并行运行下载和推送,我会考虑以下几点:
下载数据的运行容器。
推送数据的正在运行的容器。
两个数据的共享卷。
每个容器都有自己的资源和准备就绪探测器。
如果下载和推送不能并行进行,您可以:
用于下载数据的init容器
用于推送数据的正在运行的容器。
两个数据的共享卷。
每个容器都有自己的资源和准备就绪探测器。这将有一个额外的优势,即如果数据推送出现问题,则不需要再次下载所有内容,并且数据推送将根据需要重试多次(取决于就绪探测配置)

zbdgwd5y

zbdgwd5y2#

k8ns中有init容器的概念,请仔细阅读文档。
在gist中,如果导入过程作为一个单独的例程移动到init container,那么实际服务可以在多个示例中启动。
下面给出了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"]

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

相关问题