如何把kubernetes pod中的文件拷贝到宿主机上或者把宿主机上文件拷贝到kubernetes pod中

1. 创建一个 Kubernetes Pod

首先,下面是一个示例Pod的定义文件(pod.yaml):

cat > nginx.yaml << EOF
apiVersion: v1
kind: Pod
metadata:
  name: my-nginx
spec:
  containers:
  - name: nginx
    image: nginx
EOF
kubectl apply -f nginx.yaml
[root@k8s-ke-cloud ~]# cat nginx.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: my-nginx
spec:
  containers:
  - name: nginx
    image: nginx
[root@k8s-ke-cloud ~]# kubectl apply -f nginx.yaml 
pod/my-nginx created
[root@k8s-ke-cloud ~]# kubectl get pods
NAME       READY   STATUS    RESTARTS   AGE
my-nginx   1/1     Running   0          69s
[root@k8s-ke-cloud ~]# kubectl exec -it my-nginx -- /bin/bash
root@my-nginx:/# pwd
/
root@my-nginx:/# ls
bin  boot  dev  docker-entrypoint.d  docker-entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@my-nginx:/# cd tmp/
root@my-nginx:/tmp# ls
root@my-nginx:/tmp# pwd
/tmp
root@my-nginx:/tmp# 

在这个定义文件中,我们创建了一个名为nginx的Pod,并在其中定义了一个名为nginx的容器。

2. 将文件复制到 Pod 中

我们需要将文件复制到Pod中。可以使用kubectl cp命令将文件复制到正在运行的Pod中。以下是复制文件到Pod的命令示例:

kubectl cp /root/kingbase.yaml.bak  my-nginx:/tmp
#新打开一个窗口
[root@k8s-ke-cloud ~]# pwd
/root
[root@k8s-ke-cloud ~]# ls
kingbase.tar  kingbase.yaml  kingbase.yaml.bak  nginx.yaml
[root@k8s-ke-cloud ~]# kubectl cp /root/kingbase.yaml.bak  my-nginx:/tmp
[root@k8s-ke-cloud ~]# kubectl exec -it my-nginx -- /bin/bash
root@my-nginx:/# pwd
/
root@my-nginx:/# ls
bin  boot  dev  docker-entrypoint.d  docker-entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@my-nginx:/# cd tmp/
root@my-nginx:/tmp# ls
root@my-nginx:/tmp# pwd
/tmp
root@my-nginx:/tmp# ls
kingbase.yaml.bak
root@my-nginx:/tmp# 

3. 通过 kubectl 命令将文件从 Pod 复制到宿主机

我们可以使用kubectl cp命令将文件从Pod复制到宿主机。以下是将文件从Pod复制到宿主机的命令示例:

#提前创建好的pod
[root@k8s-ke-cloud ~]# kubectl get pods
NAME       READY   STATUS    RESTARTS   AGE
my-nginx   1/1     Running   0          7m34s
[root@k8s-ke-cloud ~]# kubectl exec -it my-nginx -- /bin/bash
root@my-nginx:/# cd /tmp/
root@my-nginx:/tmp# ls
kingbase.yaml.bak
root@my-nginx:/tmp# mv kingbase.yaml.bak kingbase.txt      
root@my-nginx:/tmp# ls
kingbase.txt
root@my-nginx:/tmp# pwd
/tmp
root@my-nginx:/tmp# 
kubectl cp my-nginx:/tmp/  /root/mqq/
#kubectl cp <pod-name>:<source-path> <local-destination-path>

是Pod的名称;
是要从Pod中复制文件的源路径;
是要将文件复制到的本地计算机上的目标路径。

[root@k8s-ke-cloud mqq]# pwd
/root/mqq
[root@k8s-ke-cloud mqq]# ls
[root@k8s-ke-cloud mqq]# kubectl cp my-nginx:/tmp/   /root/mqq/
tar: Removing leading `/' from member names
[root@k8s-ke-cloud mqq]# ls
kingbase.txt  qq.txt
[root@k8s-ke-cloud mqq]# 

最近更新

  1. TCP协议是安全的吗?

    2023-12-10 16:40:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-10 16:40:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-10 16:40:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-10 16:40:02       20 阅读

热门阅读

  1. 信息学奥赛一本通2058

    2023-12-10 16:40:02       28 阅读
  2. ElasticSearch之线程池

    2023-12-10 16:40:02       43 阅读
  3. HIVE学习(hive基础)

    2023-12-10 16:40:02       39 阅读
  4. React富文本编辑器wangEditor

    2023-12-10 16:40:02       40 阅读
  5. 12.9每日一题(备战蓝桥杯循环结构)

    2023-12-10 16:40:02       27 阅读