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

如何在Google Cloud Kubernetes节点安装Python库(以gcsfs为例)

我平时在管理GKE集群的时候,常用这几种方法来安装Python库(包括你需要的gcsfs),分享给你:

一、通用方法:在GKE节点上安装Python库

1. 直接登录节点执行命令(适合小集群或临时操作)

这种方法最直接,手动登录每个节点安装:

  • 先获取集群的节点列表:
    kubectl get nodes
    
  • 用gcloud登录目标节点(替换<节点名称>和<节点区域>):
    gcloud compute ssh <节点名称> --zone <节点所在区域>
    
  • 登录后先安装pip(如果节点没装的话),再安装目标库:
    # 更新包索引(针对Debian/Ubuntu系节点,COS节点可能需要调整)
    sudo apt-get update && sudo apt-get install python3-pip -y
    # 安装Python库,比如gcsfs
    sudo pip3 install gcsfs
    

    注意:如果是Container-Optimized OS(COS)节点,默认的Python环境可能需要用pip3的完整路径,或者先安装必要的依赖包。

2. 用DaemonSet自动批量安装(适合大集群)

如果集群节点数量多,手动一个个登太麻烦,可以用DaemonSet让每个节点自动执行安装命令:
创建一个daemonset-install-gcsfs.yaml文件,内容如下:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: install-gcsfs
spec:
  selector:
    matchLabels:
      app: gcsfs-installer
  template:
    metadata:
      labels:
        app: gcsfs-installer
    spec:
      containers:
      - name: installer
        image: python:3.9-slim
        command: ["sh", "-c", "apt-get update && apt-get install -y python3-pip && pip3 install gcsfs && sleep infinity"]
        securityContext:
          privileged: true
        volumeMounts:
        - name: host-python-site-packages
          mountPath: /usr/local/lib/python3.9/site-packages
      volumes:
      - name: host-python-site-packages
        hostPath:
          path: /usr/local/lib/python3.9/site-packages
          type: Directory
  • 应用这个DaemonSet:
    kubectl apply -f daemonset-install-gcsfs.yaml
    
  • 安装完成后可以删除这个DaemonSet:
    kubectl delete daemonset install-gcsfs
    

提示:要根据节点实际的Python版本调整site-packages的路径,比如Python3.8的话路径是/usr/local/lib/python3.8/site-packages。

3. 自定义节点镜像(适合长期稳定的集群)

如果你的集群需要长期运行,不想每次添加节点都重复安装,可以自定义GKE节点镜像,预先把需要的库装进去:

  1. 先找到当前集群使用的节点镜像版本,比如COS镜像:
    gcloud container get-server-config --zone <集群区域>
    
  2. 创建Dockerfile:
    # 替换成你获取到的节点镜像
    FROM cos-cloud/cos-89-16108-544-43:latest
    RUN apt-get update && apt-get install -y python3-pip
    RUN pip3 install gcsfs
    
  3. 构建并推送到Google Container Registry(GCR):
    gcloud builds submit --tag gcr.io/<你的GCP项目ID>/custom-gke-node:v1 .
    
  4. 创建新的节点池时指定这个自定义镜像:
    gcloud container node-pools create custom-pool \
      --cluster <集群名称> \
      --zone <集群区域> \
      --image-type=custom \
      --image-url=gcr.io/<你的GCP项目ID>/custom-gke-node:v1
    
二、gcsfs的额外权限配置

安装完gcsfs后,节点还需要有访问GCS Bucket的权限:

  • 找到节点使用的服务账号(可以通过kubectl describe node <节点名>查看Node Labels里的cloud.google.com/service-account)
  • 给这个服务账号添加GCS访问权限,比如只读权限:
    gcloud projects add-iam-policy-binding <你的GCP项目ID> \
      --member=serviceAccount:<节点服务账号邮箱> \
      --role=roles/storage.objectViewer
    
三、更推荐的方式:在Pod内安装(符合K8s最佳实践)

其实在Kubernetes里,更推荐在Pod层面管理依赖,而不是节点层面,这样不会污染节点环境,也更灵活。比如用Init Container提前安装gcsfs:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-data-processing-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: data-app
  template:
    metadata:
      labels:
        app: data-app
    spec:
      initContainers:
      - name: install-gcsfs
        image: python:3.9-slim
        command: ["pip", "install", "gcsfs"]
        volumeMounts:
        - name: python-libs
          mountPath: /usr/local/lib/python3.9/site-packages
      containers:
      - name: app-container
        image: <你的应用镜像>
        volumeMounts:
        - name: python-libs
          mountPath: /usr/local/lib/python3.9/site-packages
      volumes:
      - name: python-libs
        emptyDir: {}

这样每个Pod启动前都会先安装gcsfs,应用容器直接就能用,而且不会影响其他Pod或节点。

内容的提问来源于stack exchange,提问作者Brendan Martin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:21:28