我有一个 C# 中的发布者订阅者(Pub-Sub 模型)应用程序,我想将它托管在 Kubernetes 上以实现高可用性。使用 helm 好还是我应该在我的应用程序中使用运算符。什么最适合 Pub-Sub 模型应用程序?
2 回答
如果你有一个(dockerized)应用程序并且你想在 Kubernetes 中运行它,那么创建 Kubernetes 部署配置就足够了。
因此,您可以做的最简单的事情就是创建一个deployment.yaml
包含以下内容的文件。
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
labels:
app: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: <your-docker-image>
然后使用以下命令将其部署到 Kubernetes 中。
kubectl apply -f deployment.yaml
关于Helm和Operators,您通常将它们用于一些更复杂的部署、组织和模板化多个 Kubernetes 配置、与您的应用程序交互、执行备份以及更多操作任务。
正如前面答案中已经提到的,简单的部署足以让您在 Kubernetes 中启动应用程序。
helm 的想法是通过模板拥有可重用的 yaml 工件。因此,它允许您定义具有某些属性的 Kubernetes yamls 文件。这些属性的值存储在单独的文件中。helm 的大多数用例是为具有不同配置的相同应用程序工作负载创建自定义 yaml,或在不同环境中安排这些部署。
另一方面,Kubernetes Operator 是一个特定于应用程序的控制器,它扩展了 Kubernetes API 的功能,以代表 Kubernetes 用户创建、配置和管理复杂应用程序的实例。它建立在基本的 Kubernetes 资源和控制器概念之上,但包含特定领域或应用程序的知识,以自动化其管理的软件的整个生命周期。
因此,如果您的应用程序需要一些特殊要求,您可能希望对创建自定义运算符更感兴趣。
总而言之,可以说 helm 是 Kubernetes 的一种包管理器,其中 Kubernetes 操作员是一个控制器,它管理特定 kubernetes 资源/应用程序/软件/的生命周期
这是一篇很好的文章,两者有何不同以及它们的共同点。