Wood Sharp 2023-12-29 17:43 采纳率: 0%
浏览 9
已结题

docker desktop安装centos7,在centos7中安装k8s失败

问题遇到的现象和发生背景

我在docker desktop启动了三个centos容器,打算用这三个centos搞一个k8s集群,使用的是kubeadm,在执行kubeadm init时卡住。
centos容器(作k8s master节点)启动命令:

docker run -itd --name hadoop01 -p 2201:22 --privileged=true --net bigdata --ip 172.20.0.2 mycentos:latest /sbin/init

master节点的ip是容器启动时指定的,连接到一个自建bridge网络,名为bigdata
k8s初始化命令:

kubeadm init --apiserver-advertise-address=172.20.0.2 --kubernetes-version v1.19.8 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16

img


查看kubelet状态:

img

img


发现kubelet一直在重启,使用journalctl -xefu kubelet查看详情

img

操作环境、软件版本等信息

docker desktop的版本是4.23.0
centos7
centos7中装的docker是最新版本
centos7中的k8s版本是v1.19.8

尝试过的解决方法

网上没找到答案,很疑惑为什么连接172.20.0.2:6443被拒绝?
/etc/hosts文件如下

127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.20.0.2      4f48341b0b98
172.20.0.2      k8s-master
172.20.0.3      k8s-node01
173.20.0.4      k8s-node02

ifconfig如下:

[root@4f48341b0b98 ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:5e:db:72:be  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.20.0.2  netmask 255.255.0.0  broadcast 172.20.255.255
        ether 02:42:ac:14:00:02  txqueuelen 0  (Ethernet)
        RX packets 21572  bytes 2261620 (2.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 25929  bytes 3235118 (3.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 3466  bytes 173912 (169.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3466  bytes 173912 (169.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

  • 写回答

17条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2023-12-29 17:47
    关注
    获得0.45元问题酬金

    这个问题可能是kubelet无法找到正确的网络组件或者网络配置错误。Kubeadm init的默认行为就是在所有的kubelet都正常运行后才会继续执行。如果kubelet启动不起来,kubeadm init就会一直卡住。

    在k8s中,组件之间的通讯都是走网络的, 而kubelet作为node节点上跑的代理,必须要在网络正常的情况下才能于master上的kube-apiserver通信。而你看到的 connection refuse 可能是master节点kube-apiserver没有起来,或者网络不通。
    另外,这也可能是cgroup driver不匹配导致kubelet启动失败。你可以通过 docker info | grep -i cgroup 查看Docker的cgroup driver,然后到 /var/lib/kubelet/kubeadm-flags.env 里设置 --cgroup-driver。
    建议你查看kubectl和kube-apiserver的日志,看看是否有其他提示。如果确定是网络问题,可以考虑检查防火墙、端口开放等。
    另一点需要注意的是,Docker Desktop不支持使用Kubernetes进行虚拟化,因为它是针对单节点开发的。如果你愿意进行单节点部署,你可以直接在Docker Desktop的设置中启动Kubernetes。如果你想创建一个多节点Kubernetes集群,建议你使用专门的虚拟机软件,例如VirtualBox。

    评论

报告相同问题?

问题事件

  • 系统已结题 1月6日
  • 修改了问题 12月29日
  • 创建了问题 12月29日

悬赏问题

  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据