说明
本人依照黑马k8s教程学习部署集群,但nginx始终无法访问,试了评论区的解决方案也无法解决。
故写此文给予一种解决方法。
无法访问的原因:
教程中给的Docker镜像地址有问题,第4步镜像地址有问题。以下是黑马教程中安装docker的讲义:
# 1 切换镜像源
[root@master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
//上面这里出错了,这个镜像地址不可用
命令切换成下面这个:
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 2 查看当前镜像源中支持的docker版本
[root@master ~]# yum list docker-ce --showduplicates
# 3 安装特定版本的docker-ce
# 必须指定--setopt=obsoletes=0,否则yum会自动安装更高版本
[root@master ~]# yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y
# 4 添加一个配置文件
# Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes推荐使用systemd来代替cgroupfs
[root@master ~]# mkdir /etc/docker
[root@master ~]# cat <<EOF > /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
# "registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"] //这个镜像源有问题,kn0t2bca是阿里云用户的id(视频作者的阿里账号id),替换成下面的
# 如果在一开始安装docker的时候使用下面这个镜像源才不会出错
"registry-mirrors":["https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn","https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com", "https://rncxm540.mirror.aliyuncs.com"]
}
EOF
# 5 启动docker
[root@master ~]# systemctl restart docker
[root@master ~]# systemctl enable docker
# 6 检查docker状态和版本
[root@master ~]# docker version
解决方法
docker我们已经安装过了,接下来我们更改镜像源即可。
注意:步骤1-3在所有节点上执行,步骤4在master节点执行即可。
步骤 1:检查 /etc/docker/daemon.json
文件内容
重新打开编辑 /etc/docker/daemon.json
文件,确保内容格式正确。
vim /etc/docker/daemon.json
替换镜像源,文件内容应如下:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors":["https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn","https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com", "https://rncxm540.mirror.aliyuncs.com"]
}
注意:
- 确保 JSON 格式正确,没有多余的逗号或括号。
- 如果文件中有多余的空格或换行符,可能会导致解析失败。
步骤 2:重新加载和重启 Docker
保存文件后,重新加载和重启 Docker 服务:
systemctl daemon-reload
systemctl restart docker
步骤3:重新拉取镜像
docker pull nginx:latest
//这里可能要等一会
成功示例:
latest: Pulling from library/nginx
5e2f64156d88: Pull complete
0576d6c6d93f: Pull complete
7039b85d9e7b: Pull complete
Digest: sha256:7f488a54766c64559d9a02f5712a16b758d14795c5764a50b9d81c65e54399e0
Status: Downloaded newer image for nginx:latest
步骤4:查看nginx状态,访问nginx
在master节点上执行即可
在外部浏览器上访问nginx。
// 无法查看niginx的,看看你的nginx运行在哪个节点先。在master节点执行kubectl get pod找到nginx的id,然后kubectl describe pod 你的nginxid,在第4行的Node才是你要访问的ip