如何在 kubernetes 中浏览持久卷并使用 GUI 编辑文件?

2024-01-08

我有一个 Bitnami WordPress helm 版本,我需要浏览文件并从它创建的持久卷中编辑一些文件。理想情况下,我能够使用 GUI 浏览文件(如 Nautilus/GNOME 文件)并使用 VS Code 编辑文件以方便使用。

我应该从已安装的容器中编辑文件吗?我怎样才能做到这一点?还有其他方法可以解决这个问题吗?


首先我应该提到以下所有内容都是针对开发环境的。 不要考虑在生产中对容器应用程序进行手动更改。对于生产,您应该确保自动应用所有必要的更改。

从远程计算机复制文件并返回

# Copy TO local machine
kubectl cp <namespace_name>/<pod_name>:<remote_file_path> <local_file_path> -c <container_name>

# Copy FROM local machine
kubectl cp <local_file_path> <namespace_name>/<pod_name>:<remote_file_path> -c <container_name>

# More examples
kubectl cp --help

-c <container_name>如果 pod 中只有一个容器,则可以省略。

如果您不确定哪个<namespace_name> or <pod_name>要使用,你可以尝试用kubectl get pods --all-namespaces.

如果您不确定应该输入哪个远程路径,您可以尝试使用ls and pwd在远程容器中:

kubectl exec -n <namespace_name> <pod_name> -c <container_name> ls <remote_path>` 
# e.g.
kubectl exec -n my_namespace my_pod -c wordpress ls /var/www
kubectl exec -n my_namespace my_pod -c wordpress pwd

使用控制台编辑器远程编辑文件

如果您的容器映像中有一个 shell 并且主进程由以下命令启动,则可以使用root用户。使用以下命令启动控制台会话:

kubectl exec -it -n <namespace_name> <pod_name> -c <container_name> sh

安装一些控制台文本编辑器(vim、nano 等)并使用它。如何安装取决于 Linux 用作映像的基础,您可以使用以下命令找到cat /etc/os-release.

使用 GUI 进行编辑

我认为使用 GUI 的一种方法是启动一个基于 Web 的文本编辑器(例如jupyter)与应用程序一起。您需要修改 Deployment(或 StatefulSet、DaemonSet 等),然后才能启动新容器的代理。

这是如何添加的示例jupyter到 Pod:

  1. 通过添加 jupyter 容器修改部署:
- name: jupyter
  image: jupyter/base-notebook
  securityContext:
    runAsUser:  # insert UID that uses your app
  args:
  - jupyter
  - notebook
  - --ip=0.0.0.0
  - --allow-root # if the UID is 0
  workingDir: /data
  ports:
  - containerPort: 8888
  volumeMounts:
    - mountPath: /data
      name: # insert name of the volume with files you want to modify
  1. Use kubectl port-forward与 pod 建立连接:
kubectl port-forward -n <namespace> <pod_name> 8888:8888

之后就可以访问jupyter了localhost:8888。查看jupyter日志以获取访问密钥(kubectl logs -n <namespace> <pod_name> -c jupyter).

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

如何在 kubernetes 中浏览持久卷并使用 GUI 编辑文件? 的相关文章

随机推荐

  • 如何 Dockerize Windows 应用程序

    我有一个 Windows 应用程序 我想将其容器化 它是一个 Windows 桌面应用程序 不是 Web 应用程序 我做了一些搜索 发现关于容器化桌面应用程序的信息很少 我想要容器化的应用程序在 WindowsServerCore 上运行良
  • Angular4 更改 md 按钮的波纹颜色

    我使用 Material for Angular4 在网页中创建了一个 md 按钮 有没有办法改变波纹效果的颜色并使其变为白色 我还可以更改其他波纹属性 例如波纹效果的持续时间吗 事实证明 为了更改波纹属性 应该在 mat ripple t
  • BehaviourSubject 初始值不适用于 share()

    share 运算符应用于BehaviorSubject BehaviourSubject 有初始值 目标是创建单个共享订阅 但是当BehaviorSubject有初始值时 这种共享订阅似乎不起作用 得到意想不到的结果 代码如下所示 let
  • 使用我自己的实体而不是 POCO 实体

    我正在使用实体框架 我可以使用自己的实体来代替 POCO 实体吗 我可以使用任何实体 或者实体名称和成员有任何限制吗 如果实体的成员与字段的名称不同 如何在 db 字段与实体的成员本身之间映射 UPDATE我已经拥有数据库广告一个大型项目
  • 将函数放入对象中与对其进行原型设计之间有什么区别?

    向对象添加函数和将函数原型化到对象上有什么区别 原型设计允许对象 模型调用自身吗 函数对象 通常用于对一组函数进行 命名空间 以便一个容器对象具有许多方法而不是许多全局函数 这样做的好处是保持代码组件按对象 可能还有对象层次结构 进行分类或
  • 三个值的中值

    我正在尝试编写一个 C 程序 它接受 3 个值作为函数参数并返回中位数 该程序运行得很好 直到我意识到它不能使用相同的值两次或更多次 例如 如果输入是 1 2 3 我得到 2 正确的中位数 但如果输入是 1 2 1 或 1 1 1 循环从头
  • 如何将列表转换为以索引作为值的字典?

    我正在尝试转换以下列表 l A B C 对于像这样的字典 d A 0 B 1 C 2 我尝试过其他帖子的答案 但没有一个对我有用 我现在有以下代码 d l i i for i in range len l 这给了我这个错误 unhashab
  • 检查类型是否可为 Null 的正确方法[重复]

    这个问题在这里已经有答案了 为了检查是否Type propertyType 可以为空 我正在使用 bool isNullable Nullable 1 Equals propertyType Name 有什么方法可以避免使用魔术字符串吗 绝
  • 当我的 JAR 位于类路径中时,为什么 Ant 会说“NoClassDefFound”?

    我正在使用 Java 1 6 Eclipse 和 Ant 以下是我创建 jar 文件并运行它的目标
  • 使用 scrapy 与 javascript __doPostBack 方法时出现问题

    尝试自动从公共搜索中抓取搜索结果 但遇到了一些麻烦 URL 的形式为 http www website com search aspx keyword page 1 sort Sorting 当我点击页面时 访问此页面后 它会略有变化 ht
  • 角度4,如何传递提供者实例

    我有一个 Mqtt 服务 我可以从中获取一些实时数据 几何和温度 Mqtt 服务 import Injectable from angular core import Paho from Own paho sript geomqttws31
  • 两个独立数据帧的距离矩阵

    我想创建一个矩阵 其中包含一个数据帧的行与另一个数据帧的行的欧几里德距离 例如 假设我有以下数据框 a lt c 1 2 3 4 5 b lt c 5 4 3 2 1 c lt c 5 4 1 2 3 df1 lt data frame a
  • Webdriver 支持 Python 的 pagefactory 吗?

    我正在读关于页面对象 http code google com p selenium wiki PageObjects和 Webdriver 项目网站上的设计模式 并遇到了页面工厂 http code google com p seleni
  • 使用 Web API 和 RavenDB 进行继承的自定义模型绑定器

    我正在开发一个简单的网络应用程序 我需要绑定特定类型的所有类型实现和接口 我的界面有一个像这样的属性 public interface IContent string Id get set 使用此接口的常见类如下所示 public clas
  • 计算机上的防火墙是否仅阻止来自计算机外部或计算机上进程的内容?

    计算机上运行的防火墙是否仅阻止来自该计算机外部的内容 或者它们是否阻止通过端口进行通信的计算机上的进程之间的通信 具体来说 我正在编写一个 Windows 服务 它将为计算机上的其他进程公开 http RESTful 服务 该服务将运行在非
  • Request.getAttribute("javax.servlet.request.X509Certificate") 返回 Null

    我遇到了 Request getAttribute javax servlet request X509Certificate 在客户端证书身份验证期间为某些用户返回 NULL 以及为其他用户返回有效证书的问题 对于失败的用户 如果我们删除
  • Python:引发 argparse.ArgumentError 后,argparse 引发一般错误

    我为需要遵循精确格式的参数定义了一个自定义正则表达式类型 我使用了另一篇文章中的代码 正则表达式自定义类型 https groups google com forum fromgroups topic argparse users tAC1
  • 创建指向二维数组的指针

    我需要一个指向静态二维数组的指针 这是怎么做到的 static uint8 t l matrix 10 20 void test uint8 t matrix ptr l matrix wrong idea 我收到各种错误 例如 警告 来自
  • 谷歌散点图,不同的点大小

    我在用Google 散点图 API https developers google com chart interactive docs gallery scatterchart尝试绘制一张打孔卡图表 就像 Github 上的那样 我不知道
  • 如何在 kubernetes 中浏览持久卷并使用 GUI 编辑文件?

    我有一个 Bitnami WordPress helm 版本 我需要浏览文件并从它创建的持久卷中编辑一些文件 理想情况下 我能够使用 GUI 浏览文件 如 Nautilus GNOME 文件 并使用 VS Code 编辑文件以方便使用 我应