Please enable Javascript to view the contents

在 Kubernetes 集群部署 Dragonfly

 ·  ☕ 1 分钟

1. 部署 NFS 存储

1.1 在存储节点配置 NFS 服务

  • 存储节点安装 NFS 服务
1
apt-get install -y nfs-kernel-server
  • 启动并设置 NFS 服务开机自启
1
systemctl start nfs-server.service & systemctl enable nfs-server.service
  • 配置 NFS 共享目录
1
mkdir -p /data/nfs
1
vim /etc/exports
/data/nfs  *(rw,sync,no_root_squash,no_all_squash)
  • 重启 NFS 服务
1
systemctl restart nfs-server.service

1.2 在全部节点配置 NFS 客户端

1
apt-get install -y nfs-common

2 配置 StorageClass

1
2
helm repo add csi-driver-nfs https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts
helm install csi-driver-nfs csi-driver-nfs/csi-driver-nfs --namespace kube-system --version v4.9.0
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
export NFS_SERVER_IP=x.x.x.x
```

```bash
kubectl apply -f - <<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-csi-storageclass
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: nfs.csi.k8s.io
parameters:
  server: ${NFS_SERVER_IP}
  share: /data/nfs
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
  - nfsvers=4.1
EOF

3 部署 Dragonfly

  • 添加 Helm 仓库
1
2
helm repo add dragonfly https://dragonflyoss.github.io/helm-charts/
helm repo update
  • 安装 Dragonfly
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
cat <<EOF > dragonfly-values.yaml
manager:
  image:
    repository: dragonflyoss/manager
    tag: latest
  metrics:
    enable: true

scheduler:
  image:
    repository: dragonflyoss/scheduler
    tag: latest
  metrics:
    enable: true

seedClient:
  image:
    repository: dragonflyoss/client
    tag: latest
  metrics:
    enable: true

client:
  image:
    repository: dragonflyoss/client
    tag: latest
  metrics:
    enable: true
EOF
1
helm install --create-namespace --namespace dragonfly-system dragonfly dragonfly/dragonfly -f dragonfly-values.yaml

卸载

1
helm uninstall dragonfly --namespace dragonfly-system
  • 修改缓存目录
1
kubectl -n dragonfly-system edit ds dragonfly-client
1
2
3
volumes:
  - emptyDir: {}
    name: storage

改为

1
2
3
4
5
volumes:
  - hostPath:
      path: /data/dragonfly
      type: DirectoryOrCreate
    name: storage
  • 修改 Client 超时配置
1
kubectl -n dragonfly-system edit cm dragonfly-client

调整一下 download 中的 pieceTimeout 以便于下载大镜像文件。

1
kubectl -n dragonfly-system rollout restart ds dragonfly-client

4 配置使用 Dragonfly

旧版本默认的代理端口是 65001,使用 gen-containerd-hosts.sh 生成配置文件;新版本是 4001,gen-containerd-hosts2.sh 生成配置文件。

1
2
3
4
5
wget -O /tmp/gen-containerd-hosts.sh https://raw.githubusercontent.com/shaowenchen/demo/master/dragonfly/gen-containerd-hosts2.sh

bash /tmp/gen-containerd-hosts.sh docker.io
bash /tmp/gen-containerd-hosts.sh registry.cn-beijing.aliyuncs.com
bash /tmp/gen-containerd-hosts.sh registry.cn-shanghai.aliyuncs.com
1
ls /etc/containerd/certs.d/

微信公众号
作者
微信公众号