Skip to main content

在托管 Kubernetes 中使用 JuiceFS

阿里云

  1. Kubernetes 集群需要开启 SNAT 访问公网,登录集群的节点访问公网确认网络是否正常。如果创建集群的时候没有开启,请参考官方文档 开启 SNAT

  2. 在集群的 集群信息连接信息 标签页,按照文档配置 kubectl

    alicloud-K8s-kubectl

  3. 参考文档 在 Kubernetes 中使用 JuiceFS 安装和使用 JuiceFS。

腾讯云

腾讯云 EKS (弹性集群)暂不支持通过 CSI 方式使用自定义存储。下面文档展示在 TKE 集群中如何使用 JuiceFS。

  1. Kubernetes 集群节点需要能访问公网,登录集群的节点访问公网确认网络是否正常。如果不能访问公网,请参考 VPC 连接公网 对集群所在的 VPC 配置公网访问,比如配置 SNAT。

  2. 在集群基本信息页面,根据需要开启内网或者公网访问,后续需要使用 kubectl 操作集群。 tencent-tke-kubectl

  3. 根据 Kubernetes 集群的版本安装对应的 kubectl,详见连接集群

  4. TKE 无法访问 CSI 需要的部分在 quay.io 的 sidecar 镜像,需要自行同步到 CCR。比如将其同步到 juicedata 命名空间并使用 CCR 的镜像地址替换 quay.io 的镜像地址:

    $ cat k8s.yaml | grep 'image: quay.io' | awk '{print $NF}' | sort | uniq
    quay.io/k8scsi/csi-node-driver-registrar:v1.1.0
    quay.io/k8scsi/csi-provisioner:v1.6.0
    quay.io/k8scsi/livenessprobe:v1.1.0

    $ docker login ccr.ccs.tencentyun.com
    Username: <Registry username>
    Password: <Registry password>

    $ docker pull quay.io/k8scsi/csi-node-driver-registrar:v1.1.0
    $ docker image tag quay.io/k8scsi/csi-node-driver-registrar:v1.1.0 ccr.ccs.tencentyun.com/juicedata/csi-node-driver-registrar:v1.1.0
    $ docker push ccr.ccs.tencentyun.com/juicedata/csi-node-driver-registrar:v1.1.0

    $ docker pull quay.io/k8scsi/csi-provisioner:v1.6.0
    $ docker image tag quay.io/k8scsi/csi-provisioner:v1.6.0 ccr.ccs.tencentyun.com/juicedata/csi-provisioner:v1.6.0
    $ docker push ccr.ccs.tencentyun.com/juicedata/csi-provisioner:v1.6.0

    $ docker pull quay.io/k8scsi/livenessprobe:v1.1.0
    $ docker image tag quay.io/k8scsi/livenessprobe:v1.1.0 ccr.ccs.tencentyun.com/juicedata/livenessprobe:v1.1.0
    $ docker push ccr.ccs.tencentyun.com/juicedata/livenessprobe:v1.1.0

    $ sed -i 's@quay.io/k8scsi@ccr.ccs.tencentyun.com/juicedata@g' k8s.yaml
  5. 实际使用中请用自己的仓库命名空间替换 juicedata

  6. 参考文档在 Kubernetes 中使用 JuiceFS 安装和使用 JuiceFS,注意文档中的 k8s.yaml 使用上述改过镜像地址的 k8s.yaml

AWS

Amazon Elastic Kubernetes Service (Amazon EKS) 是一个托管服务,它将 Kubernetes 运行在 AWS 上,无需自行安装、操作和维护 Kubernetes 控制平面或节点。

节点类型选择

创建 AWS EKS 集群时有两种节点类型可以选择:

  1. Managed nodes - 使用 EC2 作为集群节点
  2. Faragate nodes - 使用 Fargate 作为集群节点

需要注意的是,由于 AWS Faragate 是 Serverless 引擎,不支持安装自定义 CSI Driver,因此使用 Faragate 作为集群节点时无法使用 JuiceFS CSI Driver。请创建 Managed nodes 类型的集群。

工具安装

为了管理集群,需要在本地安装以下工具:

  • kubectl - 管理 Kubernetes 集群的命令行工具,版本需要大于或等于 Kubernetes 集群的版本,请参考文档安装和更新 kubectl
  • eksctl – 管理 EKS 集群的命令行工具,建议安装最新版,请参考文档安装和更新 eksctl.
  • awscli - 管理 AWS 资源的命令行工具,建议安装最新版,请参考文档安装和更新 awscli

IAM 权限

为了便于创建和管理集群,可以创建一个 IAM 用户并授予 AdministratorAccess 权限。

eks-IAM-permissions

在“安全凭证”中为该用户创建一个 Access Key,用于配置 AWS CLI。

注意

本文出于演示目的使用了 AdministratorAccess 权限,该权限具有对 AWS 账号中所有资源的创建、管理和删除能力,因此请妥善保管 Access Key,长期不使用应停用或删除。对于生产环境,建议创建一个仅具有创建和管理 EKS 集群的 IAM 用户。

配置 AWS CLI 凭证

在本地配置 AWS CLI 凭证,根据命令行提示输入 Access Key ID、Secret Access Key、Default region name 和 Default output format 等信息。

$ aws configure
AWS Access Key ID [None]: xxxxx
AWS Secret Access Key [None]: xxxxx
Default region name [None]: cn-northwest-1
Default output format [None]: json

创建 EKS 集群

使用 eksctl 创建 EKS 集群:

eksctl create cluster --name my-cluster --region region-code

eksctl 会创建一个 kubeconfig 文件 ~/.kube/config,用于访问集群。如果配置文件已存在,eksctl 会将 EKS 集群配置追加到该文件中。

至此,即可使用 kubectl 访问和管理 EKS 集群,例如:

$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-192-168-1-1.cn-northwest-1.compute.internal Ready <none> 10m v1.18.9-eks-d1db3c
ip-192-168-1-2.cn-northwest-1.compute.internal Ready <none> 10m v1.18.9-eks-d1db3c

接下来可以参考文档 在 Kubernetes 中使用 JuiceFS 在 EKS 集群中安装 JuiceFS CSI Driver 并配置使用 JuiceFS 持久化存储数据。