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]# 
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐