【问题标题】:How to run commands from a pod to the host in kubernetes如何在 Kubernetes 中从 pod 运行命令到主机
【发布时间】:2018-07-30 17:31:35
【问题描述】:

是否可以在 kubernetes 的 pod 中在主机上运行命令。

例如,我有一个运行 python 图像的 pod,它计算操作系统的大小。但它使用的命令在 pod 内部运行,而不是在主机中运行。是否可以从 pod 在主机上运行命令。

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    实际上,在 pod 内运行的命令是在主机上运行的。它是一个容器(Docker),而不是虚拟机。 这意味着当您在 pod 中执行某些操作(例如检索 RAM 的大小)时,它通常会返回整个机器的 RAM。 如果你想得到“操作系统的大小”并且你的意思是硬盘驱动器,你需要安装硬盘驱动器来计算它。

    如果你的实际问题是你想做一些普通容器不允许做的事情,你可以在 privileged 模式下运行一个 pod 或配置你真正需要的任何东西。 您需要像这样将 security context 添加到您的 pod(取自文档):

    apiVersion: v1
    kind: Pod
    metadata:
      name: security-context-demo
    spec:
      securityContext:
        runAsUser: 1000
        fsGroup: 2000
      volumes:
      - name: sec-ctx-vol
        emptyDir: {}
      containers:
      - name: sec-ctx-demo
        image: gcr.io/google-samples/node-hello:1.0
        volumeMounts:
        - name: sec-ctx-vol
          mountPath: /data/demo
        securityContext:
          privileged: true
    

    来源:

    【讨论】:

    • 但是如果我运行ifconfig,它会显示 Pod 网络而不是主机。
    • Kubernetes 和 Docker 正在从您那里抽象出一些东西。网络是其中之一,文件系统是另一个。是否有一个特殊的用例为什么您需要主机的网络接口,或者您只是想弄清楚 Kubernetes 是如何工作的? :-)
    • 除非您别无选择,否则我不建议 pod 访问主机(无论是文件系统还是网络)。但为了让 ifconfig 正常工作,您可能需要在 pod 中将 hostNetwork 设置为 true。
    猜你喜欢
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多