docker+dragonfly+harbor

背景

之前介绍过使用containerd作为底层runtime,但是环境中有很多底层是docker,没有切换到containerd,所以需要做一下适配。

docker版本:19.03.15
k8s版本:1.20.15,单节点

步骤

参考官方文档:https://d7y.io/zh/docs/setup/runtime/docker/
https://d7y.io/zh/docs/setup/install/helm-charts

file

官方文档中需要为http代理生成CA证书,并挂载到dfdaemon的/etc/dragonfly/dfget.yaml 文件中,即dragonfly-dfdaemon的configmap。但是我这个版本是支持私有仓库的,就不用生成证书了。亲测加不加证书效果是一样的。

修改values.yaml

启用docker,不重启docker服务,不自动注入hosts,开启insecure,registryDomains中和commonName都改为harbor的域名。cacert其他的可以不改。

file

禁用containerd。

file

根据实际情况修改scheduler,manager,seedPeer的副本数。

修改storageClass

vim charts/mysql/values.yaml
vim charts/redis/values.yaml

file

修改manager svc

改为NodePort,方便后面连接harbor。

file

安装

k create ns dragonfly
helm install dragonfly-n dragonfly .

file

配置Docker daemon

在文件中添加下面的配置,开启live-restore是为了重启docker不重启容器。

vim /etc/docker/daemon.json
{
  "insecure-registries": ["your.private.registry"],
  "live-restore": true
}

设置代理

设置dfdaemon为docker daemon的HTTP_PROXY和HTTPS_PROXY代理:

mkdir /etc/systemd/system/docker.service.d
vim /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:65001"
Environment="HTTPS_PROXY=http://127.0.0.1:65001"

拉取镜像

docker pull your.private.registry/namespace/image:latest

进入容器查看日志:

k exec -it -n dragonfly dragonfly-dfdaemon-rl5gf -- sh
cd /var/log/dragonfly/daemon/
grep 'peer task done' core.log

file

拉取成功。

1.无需生成证书

官方文档可能很久都没有维护了,设置docker的http代理不需要添加ca证书,也不需要在dfdaemon的配置文件中添加hijackHTTPS的配置

2.dfdaemon卡在init状态。

describe没有有效信息。登录到pod所在的节点,查看update-docker-config容器日志,有如下的报错信息:
cp: cant't create '/host/etc/dragonfly-ca/cakey.pem': No such file or directory

file

解决

查看statefulset配置文件中update-docker-config容器的启动命令,发现没有创建/host/etc/dragonfly-ca/目录的步骤,且只挂载了/etc目录到/host/etc目录。所以这里可以在本地创建etc/dragonfly-ca/目录,也可以在容器中创建/host/etc/dragonfly-ca/目录。

file

再次启动,容器日志输出正常。

file

3.dfdaemon无法启动

没有任何日志输出。只能看到启动dfdaemon容器失败了。

file

解决

查看dfdaemon的Dockerfile:

file

容器会映射本地的65001端口,values.yaml文件中也定义了hostPort为65001,节点上65001端口未在监听,猜测可能是hostPort未生效。我这里网络插件为calico,k8s是用rke搭建的。

file

根据官方文档修改hostNetwork为true。再次启动可以正常启动。

file

4.拉取镜像失败

报错无法解析harbor的域名。

file

解决

我这里本地已经添加了harbor的域名解析,但并没有生效。所以这里添加容器内host解析。

hostAliases:
  - ip: "1.1.1.1"
    hostnames:
    - "harbor.harbor.com"

file

重启服务,镜像可以正常拉取。

0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部
0
希望看到您的想法,请您发表评论x