我可以通过kubernetes创建一组具有不同环境的独特docker容器吗?

时间:2019-11-18 20:01:48

标签: docker kubernetes

我有20个用户。我需要为每个用户使用单独的容器。我想通过环境传递“ user_id”。当我收到消息时,我需要使用“ user_id”创建另一个容器。如何以最佳方式在kubernetes中进行组织

3 个答案:

答案 0 :(得分:1)

如果您有多个用户,建议您使用service accounts来识别他们。

为每个用户创建服务帐户后,您可以使用spec.serviceAccountName关键字将其分配给Pod。使用Downward Api在Pod内部可以使用此字段。例如:

apiVersion: v1
kind: Pod
metadata:
  name: pod-name
spec:
  containers:
    - name: container-name
      image: busybox
      command: [ "sh", "-c", "echo $SERVICE_ACCOUNT"]
      env:
        - name: SERVICE_ACCOUNT
          valueFrom:
            fieldRef:
              fieldPath: spec.serviceAccountName

答案 1 :(得分:0)

因此,您尝试使用特定的env变量从应用程序运行pod。

为此,您需要使用kubernetes中的原始rest apikubernetes client libraries中的一个向k8s发送请求。

您还需要为应用程序容器正确设置一个service account,以便允许它创建新的容器。

Read more here关于kubernetes中的角色和授权。

创建新容器时,只需添加所需的环境。

让我知道它是否有帮助。

答案 2 :(得分:0)

您可以通过以下示例来实现它:

kubectl run nginx1 --image=nginx --env=user_id=1

kubectl run nginx2 --image=nginx --env=user_id=2

kubectl运行将被弃用。等效的kubectl create可以与部署yml一起使用。

另一种方法是创建helm图表,并通过set for helm install命令设置userid env到deployment.yml中的容器env。