1. 創建一個 Kubernetes Pod
首先,下面是一個示例Pod的定義文件(pod.yaml):
cat > nginx.yaml << EOF
apiVersion: v1
kind: Pod
metadata:name: my-nginx
spec:containers:- name: nginximage: 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: nginximage: 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]#