如何执行K8s吊舱,但从外部使用bash_配置文件?

如何执行K8s吊舱,但从外部使用bash_配置文件?,bash,kubernetes,Bash,Kubernetes,我的.bash\u档案有许多我经常使用的别名。不过,当我进入库伯内特斯吊舱时,这些别名就变得(可以理解)不可访问了。当我说“执行进入”时,我的意思是: kubectl exec-it[pod name]-c[container name]bash 有没有办法让我在执行后仍然可以使用bash配置文件?你说这些只是别名。在这种情况下,并且只有在这种情况下,您才能使用--从env文件在ConfigMap中保存.code>bash\u配置文件 kubectl create configmap bash-

我的
.bash\u档案
有许多我经常使用的别名。不过,当我进入库伯内特斯吊舱时,这些别名就变得(可以理解)不可访问了。当我说“执行进入”时,我的意思是:

kubectl exec-it[pod name]-c[container name]bash


有没有办法让我在执行后仍然可以使用bash配置文件?

你说这些只是别名。在这种情况下,并且只有在这种情况下,您才能使用
--从env文件
ConfigMap
中保存.code>bash\u配置文件

kubectl create configmap bash-profile --from-env-file=.bash_profile
请记住,env文件中的每一行都必须采用VAR=VAL格式

将忽略开头带有#的行和空行。

然后可以将所有键值对作为容器环境变量加载:

apiVersion: v1
kind: Pod
metadata:
  name: bash-test-pod
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "env" ]
      envFrom:
      - configMapRef:
          name: bash-profile
  restartPolicy: Never
或:

@提到的想法也应该有效


如果您需要
kubectl cp.bash\u profile:/root/
如果您需要将其放入特定的容器中,您可以添加选项
-c,--container='':容器名称。如果省略,将选择pod中的第一个容器

我的第一个想法是使用kubectl copy将本地~/.bashrc文件首先复制到pod。可能需要特别注意不要删除远程~/.bashrc的当前内容。将-l选项传递给load/etc/profile如何?
apiVersion: v1
kind: Pod
metadata:
  name: bash-test-pod
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "ls /etc/config/" ]
      volumeMounts:
      - name: config-volume
        mountPath: /root/.bash_profile
  volumes:
    - name: config-volume
      configMap:
        # Provide the name of the ConfigMap containing the files you want
        # to add to the container
        name: bash-profile
  restartPolicy: Never