yum报错:[Errno 12] Timeout on repomd.xml: (28, ‘Connection time-out‘)

在使用Dockerfile基于CentOS7构建镜像并用yum安装软件时,遇到无法解析主机和网络超时的问题。尽管服务器DNS配置和网络正常,且在宿主机上能正常执行yum命令,但在Docker容器内却出现网络错误。尝试通过删除Dockerfile中yum安装命令后,直接在容器内执行yum install则恢复正常。最终发现是由于Docker构建过程中的网络设置导致的问题,通过在构建命令中添加`--network=host`参数,使Docker使用宿主机网络,成功解决了该问题。

遇到的问题:

使用docker build编译镜像时,使用的是centos 7,用yum安装软件时

时不时的报下面两种错误:

Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"

yum报错:[Errno 12] Timeout on repomd.xml: (28, 'Connection time-out')

在dockerfile没改的情况下,之前是成功的

尝试解决问题:

1.在baidu和google一通搜索后,要么就是说dns配置有问题,要么就是网络设置问题,事实上服务器上配置一切正常,可以正常使用外网,在服务器宿主机执行yum install 也是正常的,这条路不通

2.把dockerfile里使用yum  install的命令全部删除,只保留from centos:7,编译好镜像后,启动容器,进入容器执行yun install,奇迹般的正常,再恢复dockerfile执行还是出现相同问题

最终解决:

怀疑是build时和宿主机和docker的桥接的关系,可能导致这一现象,我用的是Oracle的云服务器,国内服务器没遇到过,最终通过以下命令执行成功,通过加参数--network确保docker使用与宿主机同一网络来解决。

docker build --network=host . -t test

<think>我们注意到用户的问题是关于Kubernetesyum源连接超时的问题,具体错误是访问packages.cloud.google.com时出现连接超时。根据提供的引用内容,我们可以发现几个关键点:1.引用[1]显示直接访问Google的Kubernetes源超时(https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64/repodata/repomd.xml)2.引用[3]和[4]提供了使用阿里云镜像源替代的方案因此,解决这个问题的核心思路是:由于国内网络访问Google服务不稳定,我们可以切换Kubernetes的yum源到国内镜像源(如阿里云)。具体步骤:1.创建或修改Kubernetes的yum源配置文件(/etc/yum.repos.d/kubernetes.repo)2.将源地址替换为阿里云的镜像地址3.清除yum缓存并重新生成4.安装kubelet,kubeadm,kubectl根据引用[3]和[4],我们可以写出具体的配置内容。下面我们将详细说明解决方案:</think>### Kubernetes yum 源连接超时问题解决方案 当访问 Kubernetes 官方 yum 源 `packages.cloud.google.com` 出现连接超时错误时(如 `[Errno 12] Timeout`),通常是由于网络限制或地理位置导致的访问延迟。以下是完整解决方案: #### 1. **问题原因分析** - 官方源 `packages.cloud.google.com` 位于海外,国内访问常出现高延迟或阻断 - 防火墙可能拦截 Google 服务端口(默认 443) - 错误示例: ```bash [Errno 12] Timeout on https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64/repodata/repomd.xml ``` #### 2. **解决方案:切换国内镜像源** 使用阿里云 Kubernetes 镜像源替代官方源: ```bash # 创建 Kubernetes yum 源配置文件 cat > /etc/yum.repos.d/kubernetes.repo << 'EOF' [kubernetes] name=Kubernetes Repository baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 repo_gpgcheck=0 EOF ``` #### 3. **验证配置有效性** ```bash # 清除 yum 缓存 yum clean all # 检查源列表 yum repolist | grep kubernetes # 预期输出 kubernetes Kubernetes Repository ``` #### 4. **安装 Kubernetes 组件** ```bash # 安装核心组件(使用阿里云源) yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes # 启用服务 systemctl enable --now kubelet ``` #### 5. **Docker 配置优化(可选)** 若需同时配置 Docker 镜像加速: ```bash # 创建 Docker 配置文件 mkdir /etc/docker cat > /etc/docker/daemon.json << EOF { "registry-mirrors": [ "https://11777p0c.mirror.aliyuncs.com", "https://hub-mirror.c.163.com" ], "exec-opts": ["native.cgroupdriver=systemd"] } EOF # 重启 Docker systemctl restart docker ``` #### 6. **验证安装** ```bash # 检查组件版本 kubectl version --client kubeadm version ``` > **关键说明**: > - 阿里云镜像源通过国内 CDN 加速,可解决 `packages.cloud.google.com` 连接超时问题[^3] > - 若企业网络有特殊限制,需额外配置代理或防火墙白名单 > - 配置后仍超时请检查 DNS 设置(建议使用 `8.8.8.8` 或 `114.114.114.114`)[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值