You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在labs.play-with-k8s中如何向其他Kubernetes节点复制文件?附连接拒绝报错

在Play-with-K8s环境中跨节点复制文件的解决方案

嘿,我来帮你搞定这个问题!你用scp复制证书时遇到22端口连接被拒,核心原因是Play-with-K8s(简称PwK)的节点本质是Docker容器,默认没开启SSH服务,也没暴露22端口,所以传统的SSH/scp方式根本行不通。下面给你几个适配这个环境的实用方法:

方法1:用Docker命令直接在容器间复制(最推荐)

既然PwK的节点都是Docker容器,直接用docker cp是最直接高效的:

  • 先在node1终端里列出所有PwK节点对应的容器(容器名一般就是node1、node2这类):
    docker ps
    
    找到对应192.168.0.7的容器名(比如node2)。
  • 直接把文件从node1复制到目标容器的指定路径:
    docker cp /etc/kubernetes/pki/front-proxy-ca.crt node2:/etc/kubernetes/pki/front-proxy-ca.crt
    
    执行完就搞定了,不用折腾SSH。

方法2:通过Kubernetes特权Pod复制(适合集群内操作)

如果你的节点已经加入K8s集群,可以用特权Pod挂载目标节点的文件系统来复制:

  1. 创建一个临时Pod配置文件file-copier.yaml(记得替换<目标节点名称>):
    apiVersion: v1
    kind: Pod
    metadata:
      name: file-copier
    spec:
      containers:
      - name: copier
        image: busybox
        command: ["sleep", "3600"]  # 让Pod保持运行
        volumeMounts:
        - name: node-pki
          mountPath: /target-pki
      volumes:
      - name: node-pki
        hostPath:
          path: /etc/kubernetes/pki
          type: Directory
      nodeName: node2  # 替换成你要复制到的节点名
      securityContext:
        privileged: true  # 需要特权才能挂载节点文件系统
    
  2. 应用配置创建Pod:
    kubectl apply -f file-copier.yaml
    
  3. 把node1上的证书复制到Pod的挂载目录(这个目录直接映射到目标节点的/etc/kubernetes/pki):
    kubectl cp /etc/kubernetes/pki/front-proxy-ca.crt file-copier:/target-pki/front-proxy-ca.crt
    
  4. 复制完成后删掉临时Pod:
    kubectl delete pod file-copier
    

方法3:手动粘贴文件内容(适合少量文件)

如果只是复制单个小文件,直接用终端复制粘贴更省事:

  • 在node1终端里查看证书内容并复制:
    cat /etc/kubernetes/pki/front-proxy-ca.crt
    
    选中所有输出内容复制。
  • 打开目标节点(192.168.0.7对应的节点)的终端,执行命令创建文件并粘贴内容:
    cat > /etc/kubernetes/pki/front-proxy-ca.crt
    
    粘贴刚才复制的内容,按Ctrl+D保存退出就完成了。

小提示

PwK是临时体验环境,节点都是轻量容器,不是传统虚拟机,所以别用常规的SSH跨节点操作思路。优先选方法1,简单又高效。

内容的提问来源于stack exchange,提问作者Henry Sun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 18:15:36