Kubernetes集群中containerd运行时集成Harbor与阿里云私有仓库及镜像加速器的实战配置指南
1. 为什么需要集成多种镜像仓库在Kubernetes生产环境中容器镜像的来源往往不是单一的。你可能需要从多个渠道获取镜像企业内部搭建的Harbor私有仓库存放核心业务镜像阿里云私有仓库托管第三方组件公共镜像加速器则用于加速Docker Hub等官方镜像的下载。这种混合使用场景下如何让containerd运行时高效、安全地拉取不同来源的镜像就成了每个DevOps工程师必须掌握的技能。我最近为一个金融客户部署Kubernetes集群时就遇到了典型问题当Pod同时需要从Harbor拉取自研中间件镜像、从阿里云拉取商业数据库镜像、从Docker Hub获取开源工具时默认配置会导致镜像下载速度慢、认证失败等问题。通过本文的配置方案最终实现了不同仓库的无缝切换镜像拉取时间缩短了60%。2. 基础环境准备2.1 版本兼容性检查在开始配置前务必确认你的环境符合以下版本要求Kubernetes ≥ v1.28本文使用v1.28.2验证containerd ≥ 1.6本文使用1.6.33可以通过以下命令快速检查版本kubectl version --short containerd --version2.2 配置文件定位containerd的核心配置文件默认位于/etc/containerd/config.toml。如果该文件不存在比如全新安装的containerd需要先生成默认配置containerd config default /etc/containerd/config.toml建议修改前先备份原配置cp /etc/containerd/config.toml /etc/containerd/config.toml.bak3. 配置镜像加速器3.1 公共镜像加速原理当你的Pod需要拉取docker.io/library/nginx这类公共镜像时默认会直接从Docker Hub下载。但在国内网络环境下这往往速度缓慢甚至超时。镜像加速器的原理是将这些请求路由到国内的镜像站点。以阿里云加速器为例它的工作流程是这样的containerd收到拉取docker.io镜像的请求根据配置将请求转发到https://br003st4.mirror.aliyuncs.com加速器节点返回缓存的镜像内容3.2 具体配置步骤编辑/etc/containerd/config.toml在[plugins.io.containerd.grpc.v1.cri.registry.mirrors]段落下添加[plugins.io.containerd.grpc.v1.cri.registry.mirrors.docker.io] endpoint [ https://br003st4.mirror.aliyuncs.com, https://registry-1.docker.io, https://08c765900e00f5d20f0dc0005a40c3a0.mirror.swr.myhuaweicloud.com ]这里我配置了多个备用端点containerd会按顺序尝试直到成功。建议将最快的加速器放在首位。配置完成后需要重启服务systemctl restart containerd3.3 验证加速效果使用crictl测试拉取公共镜像crictl pull nginx:latest观察拉取速度正常情况下应该比直接连接Docker Hub快很多。你可以通过时间统计来量化加速效果time crictl pull nginx:latest4. Harbor私有仓库集成4.1 HTTP模式特殊配置很多企业内部部署的Harbor默认使用HTTP协议特别是测试环境。containerd出于安全考虑默认要求HTTPS因此需要特殊配置。在config.toml中添加以下内容[plugins.io.containerd.grpc.v1.cri.registry.mirrors.192.168.209.182] endpoint [http://192.168.209.182] [plugins.io.containerd.grpc.v1.cri.registry.configs.192.168.209.182.auth] username admin password Harbor12345注意替换IP地址为你的Harbor服务器实际地址。如果Harbor启用了HTTPS则需要将协议改为https并配置CA证书。4.2 Kubernetes Secret认证方式除了在containerd配置中直接写入凭证更安全的做法是通过Kubernetes Secret管理认证信息创建docker-registry类型的Secretkubectl create secret docker-registry harbor-secret \ --docker-usernameadmin \ --docker-passwordHarbor12345 \ --docker-server192.168.209.182在Pod定义中引用该SecretapiVersion: v1 kind: Pod metadata: name: nginx-from-harbor spec: containers: - name: nginx image: 192.168.209.182/library/nginx:latest imagePullSecrets: - name: harbor-secret这种方式特别适合多租户场景不同命名空间可以使用不同的访问凭证。5. 阿里云私有仓库配置5.1 认证信息管理阿里云容器镜像服务(ACR)提供企业级私有仓库配置方式与Harbor类似但域名不同[plugins.io.containerd.grpc.v1.cri.registry.configs.registry.cn-hangzhou.aliyuncs.com.auth] username your_aliyun_username password your_aliyun_password建议使用RAM子账号的AccessKey作为密码而不是主账号密码。这样可以在必要时快速撤销权限。5.2 多地域仓库支持如果你的业务部署在多个地域可以为每个地域的ACR单独配置# 杭州地域 [plugins.io.containerd.grpc.v1.cri.registry.configs.registry.cn-hangzhou.aliyuncs.com.auth] username user1 password pass1 # 上海地域 [plugins.io.containerd.grpc.v1.cri.registry.configs.registry.cn-shanghai.aliyuncs.com.auth] username user1 password pass15.3 测试阿里云镜像拉取使用crictl验证配置是否生效crictl pull registry.cn-hangzhou.aliyuncs.com/your_namespace/your_image:tag如果出现认证错误可以检查用户名密码是否正确是否开启了ACR的公开访问或正确配置了访问权限网络策略是否允许节点访问阿里云仓库6. 生产环境最佳实践6.1 配置同步策略在多节点集群中你需要确保所有节点的containerd配置一致。推荐使用以下方法之一使用Ansible等配置管理工具批量部署将config.toml放入Golden Image作为节点模板通过DaemonSet动态注入配置6.2 认证信息加密直接明文存储密码在config.toml中存在安全风险。可以考虑使用Kubernetes Secret imagePullSecrets配合阿里云KMS或HashiCorp Vault管理凭证定期轮转密码6.3 监控与调优建议对镜像拉取操作进行监控使用Prometheus监控containerd的镜像拉取耗时设置Alertmanager规则当拉取失败率超过阈值时告警定期分析镜像拉取日志优化端点配置顺序对于大型集群可以调整containerd的并发下载参数[plugins.io.containerd.grpc.v1.cri.containerd] snapshotter overlayfs max_concurrent_downloads 107. 常见问题排查7.1 镜像拉取失败分析当遇到Failed to pull image错误时可以按照以下步骤排查确认镜像地址拼写正确检查网络连通性curl -v https://registry-1.docker.io/v2/验证认证信息是否有效查看containerd日志journalctl -u containerd --no-pager -n 1007.2 证书相关问题如果使用自签名证书的Harbor需要在所有节点信任CA证书mkdir -p /etc/containerd/certs.d/harbor.example.com cp harbor-ca.crt /etc/containerd/certs.d/harbor.example.com/ca.crt7.3 配置热重载修改config.toml后不一定每次都需要重启containerd服务。可以先尝试发送SIGHUP信号pkill -SIGHUP containerd这能避免重启导致正在运行的容器中断。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2485060.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!