我有一个Bitnami WordPress helm版本,我需要浏览文件并编辑它创建的持久卷中的一些文件。理想情况下,我可以使用GUI浏览文件(如Nautilus/GNOME文件(,并使用VS代码编辑文件以便于使用。
我应该在装载的容器中编辑文件吗?我该怎么做?还有其他方法吗?
首先我要提到的是,下面的一切都是针对开发环境的。不要考虑在生产中手动更改容器应用程序。对于生产,您应该使其自动应用所有必要的更改。
从远程计算机复制文件并返回
# 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
如果pod中只有一个容器,则可以省略-c <container_name>
。
如果您不确定使用哪个<namespace_name>
或<pod_name>
,可以尝试使用kubectl get pods --all-namespaces
来确定。
如果您不确定应该键入哪个远程路径,可以尝试在远程容器中使用ls
和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
添加到吊舱的示例:
- 通过添加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
- 使用
kubectl port-forward
与吊舱建立连接:
kubectl port-forward -n <namespace> <pod_name> 8888:8888
之后,您可以在localhost:8888
上访问jupyter。请参阅jupyter日志以获取访问密钥(kubectl logs -n <namespace> <pod_name> -c jupyter
(。