How to copy files from kubernetes Pods to local system

后端 未结 10 1490
暖寄归人
暖寄归人 2020-12-24 10:22

I\'m trying to copy files from Kubernetes Pods to my local system. I am getting the below error while running following command:

kubectl cp aks-ssh2-6cd4948         


        
相关标签:
10条回答
  • 2020-12-24 11:11

    Kubernetes gives a file not found error when user does not have permissions to a pod. That was my problem.

    0 讨论(0)
  • 2020-12-24 11:16

    If anyone uses windows pods, it may be hard to get files copied to the pods from local machine with those linux paths for kubectl cp command:

    Procedure to copy files from local machine to kubernetes pod: (especially windows container)

    1. I want to copy node.aspx from my local machine to podname:\c:\inetpub\wwwroot
    2. First upload Node.aspx to your cloud drive, path will be /home/{your_username} in my case /home/pranesh
    3. Then find out the pod name, in my case its aspx-deployment-84597d88f5-pk5nh, follow below command
    PS /home/pranesh> kubectl cp /home/pranesh/Node.aspx aspx-deployment-84597d88f5-pk5nh:/Node.aspx
    
    1. This copies the file to c drive of container,
    2. then move file from c drive to required path with powershell
    PS /home/pranesh> kubectl exec aspx-deployment-84597d88f5-pk5nh powershell "Copy-Item "C:\Node.aspx" -Destination "C:\inetpub\wwwroot""
    
    1. Use the reverse procedure for copying from container to cloud drive and download.
    0 讨论(0)
  • 2020-12-24 11:17

    You can mount a local directory into the pod.

    Update your aks-ssh yaml file:

    spec:
      ...
      containers:
        ...
        volumeMounts:
        - name: test-dir
          mountPath: /home/azureuser
        ...
      volumes:
      - name: test-dir
        hostPath:
          path: /path/to/your/local/dir
    

    Now you can access your files in the local directory.

    0 讨论(0)
  • 2020-12-24 11:18

    As stated inkubectl help:

    kubectl cp --help
    Copy files and directories to and from containers.
    Examples:
    # !!!Important Note!!!
    # Requires that the 'tar' binary is present in your container
    # image.  If 'tar' is not present, 'kubectl cp' will fail.
    
    # Copy /tmp/foo_dir local directory to /tmp/bar_dir in a remote pod in the default namespace
    kubectl cp /tmp/foo_dir <some-pod>:/tmp/bar_dir
    
    # Copy /tmp/foo local file to /tmp/bar in a remote pod in a specific container
    kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>
    
    # Copy /tmp/foo local file to /tmp/bar in a remote pod in namespace <some-namespace>
    kubectl cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar
    
    # Copy /tmp/foo from a remote pod to /tmp/bar locally
    kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar
    
    Options:
    -c, --container='': Container name. If omitted, the first container in the pod will be chosen
    
    Usage:
    kubectl cp <file-spec-src> <file-spec-dest> [options]
    
    Use "kubectl options" for a list of global command-line options (applies to all commands).
    

    You can also login to your Containter and check if file is there:

    kubectl exec -it aks-ssh2-6cd4948f6f-fp9tl /bin/bash
    ls -la /home/azureuser/test.cap
    

    If this still doesn't work, try:

    You may try to copy your files to workdir and then retry to copy them using just their names. It's weird, but it works for now.`

    Consider advice of kchugalinskiy here #58692.

    0 讨论(0)
提交回复
热议问题