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