kubernetes - 除了与 Hana 紧密耦合之外,Kubernetes pod 还可以扩展吗?
问题描述
我们有一个带有后端服务的 Kubernetes 集群,这些服务从外部 Hana 提取数据并将它们发送到 Kafka。每当启动 pod 时,导入过程就会开始,大约需要 90 分钟。由于与 Hana 的紧密耦合,我们无法运行这些后端服务的多个 Pod。我觉得这可以通过某种方式得到改善。但我不知道怎么做。
在不将相同数据三次拉入 Kafka 的情况下,为后端服务提供多个 pod 的方法是什么?
对此设置还有其他想法吗?
解决方案
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"]
最后,您必须将导入数据的功能分解为一个单独的功能 - 您可以水平扩展的帖子。
推荐阅读
- python - 使用 catch 执行部分列表项匹配到另一个列表项
- php - PHP在提交失败后保留表单数据
- hash - 在以太坊网络上进行私人交易
- google-cloud-platform - 如果 Google BigQuery 返回错误,我是否需要为使用资源付费?
- delphi - 即使放大,如何更改轴值以正确显示?
- flutter - Flutter中如何实现文本表单域的动画?
- mysql - 具有特定条件的 MySQL GROUP BY
- tensorflow - 使用 tf.float16 而不是 tf.float32 或 64 增加内存对吗?
- git - Git跳过提交后挂钩
- verilog - 为什么 Verilog 输出显示 x 和 z 而不是 0 和 1?