Kubernetes 部署,其中一个 Pod 具有不同的环境

2024-01-02

有什么方法可以使用 kubernetes 进行 AWS 部署,其中我的应用程序有可变且可扩展数量的 pod,但虚拟机上的环境对于单个主机来说是不同的?

基本上,我希望我的一个 Pod 执行一项其他 Pod 不会一直执行的任务。我计划使用环境变量来控制它。


您可以进行多个部署,但是如果您需要uniqueness在豆荚之间,你应该考虑statefulsets过度部署。然而,在两者之间做出决定statefulset and deployment is 主要取决于应用程序的类型,这是一个重大决定。所以,使用statefulset可能不适合作为部署的 100% 替代。

In statefulsets每个 Pod 通过其主机名获得其唯一但非随机的身份。

例如,您可以创建一个mysql有状态集使用以下内容:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  creationTimestamp: null
  labels:
    app: foo
  name: foo
spec:
  serviceName: mysql
  replicas: 3
  selector:
    matchLabels:
      app: foo
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: foo
    spec:
      containers:
      - image: mysql
        name: mysql
      containers:
      - env:
        - name: MYSQL_ROOT_PASSWORD
          value: root
        image: mysql
        name: mysql

这将创建 pod 的三个副本:

k get pod -l app=foo
NAME    READY   STATUS    RESTARTS   AGE
foo-0   1/1     Running   0          5m17s
foo-1   1/1     Running   0          5m14s
foo-2   1/1     Running   0          5m10s

现在您可以获取 pod 的主机名,第一个 pod 将始终带有后缀0和第二个1等等。

exec -it foo-0 --  hostname
foo-0
k exec -it foo-1 --  hostname
foo-1
k exec -it foo-2 --  hostname
foo-2

您可以使用hostname因为选择器决定对哪个 pod 需要执行什么操作。Here https://stackoverflow.com/a/41733207/6309601这是一本很好的读物。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kubernetes 部署,其中一个 Pod 具有不同的环境 的相关文章

随机推荐