热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

不同方式实现集群的可行性&&部分不建议踩的坑

路标1.Systemhasnotbeenbootedwithsystemdasinitsystem(PID1).Can’toperate.2.CannotconnecttotheD

路标

1.System has not been booted with systemd as init system (PID 1). Can’t operate.
2.Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
3.Package virtualbox is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Package ‘virtualbox’ has no installation candidate

  1. grep -E –color ‘vmx|svm’ /proc/cpuinfo 返回 0

结论

无论学习docker swarms还是minikubes,如果你碰到了以上的报错信息,并且检索到这篇文章,很遗憾的说,这是一条死路(有点深的坑),别(不建议)浪费时间了………

背景

从docker swarms向k8s过渡时,我碰到了很多坑,最终被docker for mac捞出来。这期间我一共使用了以下模式来探索可行性:

  1. 直接放弃了windows系统…….
  2. windows内通过VirtualBox安装ubuntu系统,失败:不支持二次虚拟化
  3. windows内通过串联主机搭建docker swarms集群节点,成功:参见我另一篇blog

    Docker Swarms 跨主机集群搭建

    只是针对docker swarms的解决方案,为了学习minikube继续探索

  4. 尝试使用WSL搭建集群,失败:支持虚拟化,报(PID 1)的问题

    这一条有替代解决方案,后续会给出。

  5. 尝试使用AliCloud的ECS搭建集群,失败:不支持二次虚拟化
  6. Mac for docker。docker swarms成功,k8s成功

中间碰到的问题大致归结为3类

  1. 众所周知的网络原因(tizi 或 换镜像源)
  2. 不支持二次虚拟化
  3. WSL,非线程1 (PID 1)

分析

将以上情形,根据所使用宿主系统的结构方式差异,我大致将接触docker swarms和minukube的方式大致分了2类:

  1. 常规模式

    • windows操作系统
    • linux操作系统
    • Mac的OS操作系统
  2. 非常规模式

    • windows的linux内核:WSL
    • 在宿主系统内安装linux系统虚拟机
    • 使用云服务商的ECS

逐条解释:

  1. windows操作系统:……
  2. linux操作系统

推荐,此处说的linux操作系统是指直接安装在物理设备上、作为宿主系统的linux系统,而不是在虚拟机安装的linux系列系统。对于前者,建议安装双系统,对于后者,替代解决方案参见:Docker Swarms 跨主机集群搭建

  1. Mac的OS操作系统

推荐,docker for mac还是很方便的,尤其在装k8s的时候,由于某些众所周知的原因,我被卡了一个星期也跑不起来minikube,但是使用docker for mac和内置k8s安装器,非常轻松的完成了k8s的安装。

下面开始几乎都是死路

  1. WSL:windows subsystem for linux

不想装虚拟机的用户win用户可能会想到这条路,但是会报出以下错误:

System has not been booted with systemd as init system (PID 1). Can't operate.

大致意思就是WSL并非系统id为1的线程,无法完成你想要进行的操作。这是一条“死路“,但并非完全不可解,国外有位大佬想到一条替代解决方案:将docker安装在win系统,连接windows的docker与WSL。Running Docker containers on Bash on Windows,如果有感兴趣的可以尝试。

  1. 在宿主系统内安装linux系统虚拟机
  2. 使用云服务商的ECS

以上两个情形的问题一样,都是不支持”二次虚拟化“,也即不能在虚拟机里再装虚拟机。

无论是docker swarms还是minikube,仔细观察会发现他们都是在宿主系统的虚拟软件中创建了新的虚拟机(通过命令行)

《不同方式实现集群的可行性 && 部分不建议踩的坑》

其中,myvm1、myvm2为docker swarms节点

minikube为minikbe主节点

是否支持二次虚拟化的判断标准很简单,在当前系统(linux为例)命令行中执行以下指令即可:(其他系统参见kubernetes document)

grep -E --color 'vmx|svm' /proc/cpuinfo

如果无返回或返回0,则不支持虚拟化
若返回具体数字如4 or 8,则表示可虚拟化

以上

后记

对于云服务商的ECS不可二次虚拟这点我初始是有些惊讶的,因为如果使用ECS的用户想要搭建集群该怎么办呢?在我和其中一个云服务商的工程师联系后,得到了的回复是:CES和云虚拟主机都不支持二次虚拟化,裸金属主机支持。云服务商也有单独的集群相关产品,但是实现方式无法透露,他们只在使用中提供技术支持。

最后贴上最低配的弹性裸金属服务器的性能和价格截图:
《不同方式实现集群的可行性 && 部分不建议踩的坑》

要获取更多Haytham原创文章,请关注公众号”许聚龙”:
《不同方式实现集群的可行性 && 部分不建议踩的坑》


推荐阅读
  • Python第三方库安装的多种途径及注意事项
    本文详细介绍了Python第三方库的几种常见安装方法,包括使用pip命令、集成开发环境(如Anaconda)以及手动文件安装,并提供了每种方法的具体操作步骤和适用场景。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • 20100423:Fixes:更新批处理,以兼容WIN7。第一次系统地玩QT,于是诞生了此预备式:【QT版本4.6.0&#x ... [详细]
  • 本主题面向IT专业人士,介绍了Windows Server 2012 R2和Windows Server 2012中的组托管服务账户(gMSA),涵盖了其应用场景、功能改进、硬件和软件要求以及相关资源。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 基于Node.js、Express、MongoDB和Socket.io的实时聊天应用开发
    本文详细介绍了使用Node.js、Express、MongoDB和Socket.io构建的实时聊天应用程序。涵盖项目结构、技术栈选择及关键依赖项的配置。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 本文详细介绍了如何在PHP中进行数组删除、清空等操作,并提供了在Visual Studio Code中创建PHP文件的步骤。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 在Fedora 31上部署PostgreSQL 12
    本文详细介绍如何在Fedora 31操作系统上安装和配置PostgreSQL 12数据库。包括环境准备、安装步骤、配置优化以及安全设置,确保数据库能够稳定运行并提供高效的性能。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
  • 解读Hyperion年度报告:应用驱动的HPC市场新趋势
    Hyperion Research发布的2023年HPC市场报告首次将“应用”作为独立章节,探讨了其在高性能计算(HPC)领域的关键作用。去年,云HPC首次成为独立分析对象。本文深入解析这些变化,并探讨应用场景对HPC用量的重要性。 ... [详细]
author-avatar
漫漫瞹fyS-1908
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有