Kubernetes 是一个颇受欢迎的容器编排系统。它可能最常用在那些能够处理巨大负载的强劲硬件上。不过,它也能在像树莓派 3 这样轻量级的设备上运行。让我们继续阅读,来了解如何运行它。
虽然 Kubernetes 在云计算领域风靡一时,但让它在小型单板机上运行可能并不是常见的。不过,我们有非常明确的理由来做这件事。首先,这是一个不需要昂贵硬件就可以学习并熟悉 Kubernetes 的好方法;其次,由于它的流行性,市面上有 大量应用 进行了预先打包,以用于在 Kubernetes 集群中运行。更不用说,当你遇到问题时,会有大规模的社区用户为你提供帮助。
最后但同样重要的是,即使是在家庭实验室这样的小规模环境中,容器编排也确实能够使事情变得更加简单。虽然在学习曲线方面,这一点并不明显,但这些技能在你将来与任何集群打交道的时候都会有帮助。不管你面对的是一个单节点树莓派集群,还是一个大规模的机器学习场,它们的 *** 作方式都是类似的。
一个“正常”安装的 Kubernetes(如果有这么一说的话)对于物联网来说有点沉重。K8s 的推荐内存配置,是每台机器 2GB!不过,我们也有一些替代品,其中一个新人是 k3s —— 一个轻量级的 Kubernetes 发行版。
K3s 非常特殊,因为它将 etcd 替换成了 SQLite 以满足键值存储需求。还有一点,在于整个 k3s 将使用一个二进制文件分发,而不是每个组件一个。这减少了内存占用并简化了安装过程。基于上述原因,我们只需要 512MB 内存即可运行 k3s,极度适合小型单板电脑!
安装 k3s 非常简单。直接运行安装脚本:
它会下载、安装并启动 k3s。安装完成后,运行以下命令来从服务器获取节点列表:
需要注意的是,有几个选项可以通过环境变量传递给安装脚本。这些选项可以在 文档 中找到。当然,你也完全可以直接下载二进制文件来手动安装 k3s。
对于实验和学习来说,这样已经很棒了,不过单节点的集群也不能算一个集群。幸运的是,添加另一个节点并不比设置第一个节点要难。只需要向安装脚本传递两个环境变量,它就可以找到第一个节点,而不用运行 k3s 的服务器部分。
上面的 example-url 应被替换为第一个节点的 IP 地址,或一个完全限定域名。在该节点中,(用 XXX 表示的)令牌可以在 /var/lib/rancher/k3s/server/node-token 文件中找到。
现在我们有了一个 Kubernetes 集群,我们可以真正做些什么呢?让我们从部署一个简单的 Web 服务器开始吧。
这会从名为 nginx 的容器镜像中创建出一个名叫 my-server 的 部署 (默认使用 docker hub 注册中心,以及 latest 标签)。
为了访问到 pod 中运行的 nginx 服务器,首先通过一个 服务 来暴露该部署。以下命令将创建一个与该部署同名的服务。
服务将作为一种负载均衡器和 Pod 的 DNS 记录来工作。比如,当运行第二个 Pod 时,我们只需指定 my-server(服务名称)就可以通过 curl 访问 nginx 服务器。有关如何 *** 作,可以看下面的实例。
默认状态下,一个服务只能获得一个 ClusterIP(只能从集群内部访问),但你也可以通过把它的类型设置为 LoadBalancer 为该服务申请一个外部 IP。不过,并非所有应用都需要自己的 IP 地址。相反,通常可以通过基于 Host 请求头部或请求路径进行路由,从而使多个服务共享一个 IP 地址。你可以在 Kubernetes 使用 Ingress 完成此 *** 作,而这也是我们要做的。Ingress 也提供了额外的功能,比如无需配置应用即可对流量进行 TLS 加密。
Kubernetes 需要 Ingress 控制器来使 Ingress 资源工作,k3s 包含 Traefik 正是出于此目的。它还包含了一个简单的服务负载均衡器,可以为集群中的服务提供外部 IP。这篇 文档 描述了这种服务:
Ingress 控制器已经通过这个负载均衡器暴露在外。你可以使用以下命令找到它正在使用的 IP 地址。
找到名为 traefik 的服务。在上面的例子中,我们感兴趣的 IP 是 10008。
让我们创建一个 Ingress,使它通过基于 Host 头部的路由规则将请求路由至我们的服务器。这个例子中我们使用 xipio 来避免必要的 DNS 记录配置工作。它的工作原理是将 IP 地址作为子域包含,以使用 10008xipio 的任何子域来达到 IP 10008。换句话说,my-server10008xipio 被用于访问集群中的 Ingress 控制器。你现在就可以尝试(使用你自己的 IP,而不是 10008)。如果没有 Ingress,你应该会访问到“默认后端”,只是一个写着“404 page not found”的页面。
我们可以使用以下 Ingress 让 Ingress 控制器将请求路由到我们的 Web 服务器的服务。
将以上片段保存到 my-ingressyaml 文件中,然后运行以下命令将其加入集群:
你现在应该能够在你选择的完全限定域名中访问到 nginx 的默认欢迎页面了。在我的例子中,它是 my-server10008xipio。Ingress 控制器会通过 Ingress 中包含的信息来路由请求。对 my-server10008xipio 的请求将被路由到 Ingress 中定义为 backend 的服务和端口(在本例中为 my-server 和 80)。
想象如下场景:你的家或农场周围有很多的设备。它是一个具有各种硬件功能、传感器和执行器的物联网设备的异构集合。也许某些设备拥有摄像头、天气或光线传感器。其它设备可能会被连接起来,用来控制通风、灯光、百叶窗或闪烁的 LED。
这种情况下,你想从所有传感器中收集数据,在最终使用它来制定决策和控制执行器之前,也可能会对其进行处理和分析。除此之外,你可能还想配置一个仪表盘来可视化那些正在发生的事情。那么 Kubernetes 如何帮助我们来管理这样的事情呢?我们怎么保证 Pod 在合适的设备上运行?
简单的答案就是“标签”。你可以根据功能来标记节点,如下所示:
一旦它们被打上标签,我们就可以轻松地使用 nodeSelector 为你的工作负载选择合适的节点。拼图的最后一块:如果你想在所有合适的节点上运行 Pod,那应该使用 DaemonSet 而不是部署。换句话说,应为每个使用唯一传感器的数据收集应用程序创建一个 DaemonSet,并使用 nodeSelector 确保它们仅在具有适当硬件的节点上运行。
服务发现功能允许 Pod 通过服务名称来寻找彼此,这项功能使得这类分布式系统的管理工作变得易如反掌。你不需要为应用配置 IP 地址或自定义端口,也不需要知道它们。相反,它们可以通过集群中的命名服务轻松找到彼此。
随着集群的启动并运行,收集数据并控制灯光和气候,可能使你觉得你已经把它完成了。不过,集群中还有大量的计算资源可以用于其它项目。这才是 Kubernetes 真正出彩的地方。
你不必担心这些资源的确切位置,或者去计算是否有足够的内存来容纳额外的应用程序。这正是编排系统所解决的问题!你可以轻松地在集群中部署更多的应用,让 Kubernetes 来找出适合运行它们的位置(或是否适合运行它们)。
为什么不运行一个你自己的 NextCloud 实例呢?或者运行 gitea ?你还可以为你所有的物联网容器设置一套 CI/CD 流水线。毕竟,如果你可以在集群中进行本地构建,为什么还要在主计算机上构建并交叉编译它们呢?
这里的要点是,Kubernetes 可以更容易地利用那些你可能浪费掉的“隐藏”资源。Kubernetes 根据可用资源和容错处理规则来调度 Pod,因此你也无需手动完成这些工作。但是,为了帮助 Kubernetes 做出合理的决定,你绝对应该为你的工作负载添加 资源请求 配置。
尽管 Kuberenetes 或一般的容器编排平台通常不会与物联网相关联,但在管理分布式系统时,使用一个编排系统肯定是有意义的。你不仅可以使用统一的方式来处理多样化和异构的设备,还可以简化它们的通信方式。此外,Kubernetes 还可以更好地对闲置资源加以利用。
容器技术使构建“随处运行”应用的想法成为可能。现在,Kubernetes 可以更轻松地来负责“随处”的部分。作为构建一切的不可变基础,我们使用 Fedora IoT。
via: >
1、ActiveDirectory改进
在Windows2000引入的MicrosoftActiveDirectory服务简化了复杂网络目录的管理,并使用户即使在最大的网络上也能够很容易地查找资源。此企业级目录服务是可扩展的,完全是基于Internet标准技术创建的,并与WindowsNETServer2003标准版、WindowsNETServer2003企业版和WindowsNETServer2003Datacenter版中的 *** 作系统完全集成。
WindowsServer2003为ActiveDirectory提供许多简捷易用的改进和新增功能,包括跨森林信任、重命名域的功能以及使架构中的属性和类别禁用,以便能够更改其定义的功能。
2、组策略管理控制台
管理员可以使用组策略定义设置以及允许用户和计算机执行的 *** 作。与本地策略相比,企业用户可以使用组策略在ActiveDirectory中设置应用于指定站点、域或组织单位的策略。基于策略的管理简化了系统更新 *** 作、应用程序安装、用户配置文件和桌面系统锁定等任务。
组策略管理控制台(GPMC)预计可作为WindowsServer2003的附加程序组件使用,它为管理组策略提供了新的框架。有了GPMC,组策略使用起来将更简单,此优势将使更多的企业用户能够更好地使用ActiveDirectory并利用其强大的管理功能。
3、策略结果集
策略结果集(RSoP)工具允许管理员查看目标用户或计算机上的组策略效果。有了RSoP,企业用户将具有强大灵活的基本工具来计划、监控组策略和解决组策略问题。
RSoP是以一组Microsoft管理控制台(MMC)管理单元的形式提供的结构。这些管理单元让管理员以两种模式确定并分析当前的策略集:登录模式和计划模式。在登录模式中,管理员可以访问已应用到特定目标的信息。在计划模式中,管理员可以看到策略将如何应用到目标,然后在部署组策略的更改之前进行检查其结果。
4、卷影子副本恢复
作为卷影子副本服务的一部分,此功能使管理员能够在不中断服务的情况下配置关键数据卷的即时点副本。然后可使用这些副本进行服务还原或存档。用户可以检索他们文档的存档版本,服务器上保存的这些版本是不可见的。
5、InternetInformationServices60
InternetInformationServices(IIS)60是启用了Web应用程序和XMLWeb服务的全功能的Web服务器。IIS60是使用新的容错进程模型完全重新搭建的,此模型很大程度上提高了Web站点和应用程序的可靠性。
现在,IIS可以将单个的Web应用程序或多个站点分隔到一个独立的进程(称为应用程序池)中,该进程与 *** 作系统内核直接通信。当在服务器上提供更多的活动空间时,此功能将增加吞吐量和应用程序的容量,从而有效地降低硬件需求。这些独立的应用程序池将阻止某个应用程序或站点破坏服务器上的XMLWeb服务或其他Web应用程序。
IIS还提供状态监视功能以发现、恢复和防止Web应用程序故障。在WindowsServer2003上,MicrosoftASPNET本地使用新的IIS进程模型。这些高级应用程序状态和检测功能也可用于现有的在InternetInformationServer40和IIS50下运行的应用程序,其中大多数应用程序不需要任何修改。
6、集成的NET框架
MicrosoftNET框架是用于生成、部署和运行Web应用程序、智能客户应用程序和XMLWeb服务的MicrosoftNET连接的软件和技术的编程模型,这些应用程序和服务使用标准协议(例如SOAP、XML和>
NET框架为将现有的投资与新一代应用程序和服务集成起来而提供了高效率的基于标准的环境。
另外,它帮助企业用户解决部署和 *** 作Internet范围的应用程序所遇到的问题。
有了完全集成在WindowsServer2003 *** 作系统内的NET框架,开发人员可以从编写“管道”代码中解放出来,从而可以将他们的精力集中在实现真正的商业价值方面。NET框架兼顾了集成和管理细节,降低了编码复杂性并增加了一致性。
7、命令行管理
WindowsServer2003系列的命令行结构得到了显著增强,使管理员无须使用图形用户界面就能执行绝大多数的管理任务。最重要的是通过使用Windows管理规范(WMI)启用的信息存储来执行大多数任务的功能。此WMI命令行(WMIC)功能提供简单的命令行界面,与现有的外壳程序和实用工具命令交互 *** 作,并可以很容易地被脚本或其他面向管理的应用程序扩展。
总之,WindowsServer2003系列中更强大的命令行功能与现成的脚本相结合,可与其他通常具有更高所有权成本的 *** 作系统的功能相抗衡。习惯使用命令行管理UNIX或Linux系统的管理员可以继续从WindowsServer2003系列中的命令行进行管理。
8、集群(8节点支持)
此服务仅用于WindowsServer2003企业版和WindowsServer2003Datacenter版,它为任务关键型应用程序(例如数据库、消息系统以及文件和打印服务)提供高可用性和伸缩性。通过启用多服务器(节点)集中工作从而保持一致通讯。如果由于错误或维修使得集群中的某个节点不可用,另一个节点将立即开始提供服务,此过程称为故障转移。正在访问该服务的用户将继续他们的活动,而不会察觉到该服务现在是由另一台服务器(节点)提供。
WindowsServer2003企业版和WindowsServer2003Datacenter版都支持多达8个节点的服务器集群配置。
9、安全的无线LAN(8021X)
根据WindowsServer2003系列对8021X的支持,公司可以寻求一种安全模型,该模型将确保所有物理访问都是已授权和加密的。使用基于8021X的无线访问点或选项,公司可以确保只有受信任的系统才能与受保护的网络连接并交换数据包。因为是由8021X决定动态密钥,因此通过解决与有线设备隐私(WEP)(由IEEE80211网络使用)相关联的许多已知问题将会显著改善8021X无线网络加密。
此功能为无线局域网(LAN)提供了安全和性能方面的改进,如访问LAN之前的自动密钥管理、用户身份验证和授权。当有线以太网在公共场所使用时,它还提供对以太网络的访问控制。
10、紧急管理服务:无外设服务器支持
“无外设服务器”功能使IT管理员在没有监视器、VGA显示适配器、键盘或鼠标的情况下也能安装和管理计算机。紧急管理服务是一种新增功能,它使IT管理员在无法使用服务器时通过网络或其他标准的远程管理工具和机制,执行远程管理和系统恢复任务。
设置说明如下:iot 有如下两个设备:testA,testB
A、B分别有两个不同的证书 ,两个证书分别有不同的策略。
现在需要通过testA设备, *** 作testB设备的shadow,testA策略如下:
注意:
iot:Publish、iot:Receive、iot:Subscribe以及topic / topicfilter的设置,与aws文档说明稍有不同。按aws文档会有问题之前一直想要使用mqtt协议模拟tcp协议的实时返回监控参数的功能,经过几个月的摸索和试验,终于将同步服务的开发摸透,仅仅看飞燕平台的技术文档是看不懂的,核心文档链接如下:
1、什么是rrpc,同步服务如何使用rrpc实现实时返回的效果
>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)