k8s踩坑记录:details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file..)

本文档记录了在安装k8s过程中遇到的证书错误及其解决方案,包括通过yum安装rhsm来修复,以及在无法从registry访问镜像时,手动下载并更新证书。此外,还解决了外部无法访问k8s容器的问题,通过开启防火墙的包转发功能实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

k8s安装踩坑

1. 报错提示:details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory)

解决方案:

查看/etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt 是一个软链接,但是链接过去后并没有真实的/etc/rhsm,所以需要使用yum安装:

yum install *rhsm*

安装完成后,执行一下(这个大概率拉取不到,如果拉取到可以直接重启k8s)

docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest

如果依然报错,可参考下面的方案:

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm
rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem

再执行拉取

docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest

然后重启服务 systemctl restart kubelet

这里就可以看到节点正常运行了

[root@VM-0-11-centos k8sdemo]# kubectl get pods
NAME             READY     STATUS    RESTARTS   AGE
mytomcat-3l64r   1/1       Running   0          15h
mytomcat-bnrfk   1/1       Running   0          15h

2.此外还有一个外部无法访问k8s容器的问题

网上给出的很多方案时关闭防火墙,但我这里并没有用,需要开启防火墙( systemctl start firewalld )并开启防火墙的包转发功能

firewall-cmd --add-masquerade --permanent && firewall-cmd --reload
### 解决方案 当遇到 `docker: Get https://registry-1.docker.io/v2/` 请求被取消的问题时,可以尝试以下方法来解决问题: #### 方法一:配置国内镜像加速器 为了提高下载速度并减少超时错误的发生,建议使用国内的 Docker Hub 加速器。编辑 `/etc/docker/daemon.json` 文件,添加或更新如下内容[^3]: ```json { "registry-mirrors": [ "https://hub.geekery.cn/", "https://ghcr.geekery.cn", "https://docker.registry.cyou", "https://docker-cf.registry.cyou", "https://dockercf.jsdelivr.fyi", "https://docker.jsdelivr.fyi", "https://dockertest.jsdelivr.fyi", "https://mirror.aliyuncs.com", "https://dockerproxy.com", "https://mirror.baidubce.com", "https://docker.m.daocloud.io", "https://docker.nju.edu.cn", "https://docker.mirrors.sjtug.sjtu.edu.cn", "https://docker.mirrors.ustc.edu.cn", "https://mirror.iscas.ac.cn", "https://docker.rainbond.cc" ] } ``` 保存文件后执行命令使更改生效: ```bash sudo systemctl daemon-reload sudo systemctl restart docker ``` #### 方法二:调整 Docker 客户端请求超时时间 如果仍然存在连接问题,则可能是由于默认的客户端请求超时设置过短所致。可以在启动容器时指定更长的超时时限,例如: ```bash docker run --rm -it --name my_container \ --network host \ --env HTTPS_PROXY=https://your.proxy.server:port \ image_name command_to_run ``` 注意替换其中的代理服务器地址和端口号。 另外也可以通过修改全局配置文件的方式增加超时参数,在 `/etc/systemd/system/docker.service.d/http-proxy.conf` 中加入: ```ini [Service] Environment="HTTP_PROXY=http://your.proxy.server:port/" "HTTPS_PROXY=https://your.proxy.server:port/" ``` 之后同样需要重新加载守护进程和服务: ```bash sudo systemctl daemon-reload sudo systemctl restart docker ``` #### 方法三:检查本地网络环境 确保主机能够正常访问外部互联网资源,并且防火墙规则允许必要的通信端口开放。对于企业内网用户来说,可能还需要配置合适的 Web 代理服务才能顺利拉取远程镜像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值