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 '[email protected]/[email protected]/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 持久化存储数据。