如何在CoreOS集群上创建并运行服务

13、控制依赖与切片的新基础及递归While程序的摘要 本文探讨了控制依赖和程序切片的新研究进展,并提出了一种用于递归While程序的广义过程摘要概念和验证框架。文章介绍了控制依赖的新定义及其优势,程序切片的相关工作,以及递归While程序的过程摘要在完全正确性和终止性证明中的应用。通过阶乘和插入排序程序的示例分析,展示了过程摘要的有效性。未来的研究将聚焦于并发程序的依赖计算、依赖关系的语义连接以及时间属性的保留。 阅读详情

提供:ZStack云计算

系列教程

本教程为《CoreOS上手指南》系列九篇中的第五篇。

内容简介

CoreOS的一大核心优势在于,其能够立足于一点跨越完整集群实现服务管理。CoreOS平台提供多种集成化工具以简化这一工作流程。

在本篇教程中,我们将演示将服务运行于CoreOS集群之上的典型工作流程。这一流程将涉及CoreOS当中最具吸引力的几项机制与功能,而这些也成为简化应用程序设置的关键所在。

先决条件与目录

为了推进本篇教程,大家至少需要配置三台设备以构建Core集群。各位可以参阅CoreOS集群构建指南以完成准备工作。

在本示例中,这三个节点将分别为:

  • coreos-1
  • coreos-2
  • coreos-3

这三个节点应当利用其专有网络接口对其etcd客户端地址、对端地址以及集群地址进行设置。相关cloud-config文件的具体设置方式请参见前面提到的教程。

在这里,我们将遵循各基本步骤以将服务运行在CoreOS集群之上。为了便于演示,我们将设置一套简单的Apache Web服务器。我们将利用Docker设置一套容器化服务环境,而后创建一个systemd类型的单元文件,用以描述该项服务及其运行参数。

在另一个单元文件内,我们可以告知本服务如何注册至etcd,从而允许其它服务追踪本服务的细节信息。我们还需要将两项服务提交至集群,并在这里通过集群在对应设备上实现服务启动与管理。

接入一个节点并发送SSH代理

我们首先需要通过配置让服务利用SSH接入其中一台节点。

为了保证fleetctl工具能够起效以实现相邻节点间的通信,我们需要在连接过程中传递SSH代理信息。

在通过SSH进行连接之前,大家必须启动自己的SSH代理。如此一来,我们就能将证书转发至正在接入的服务器处,从而利用该设备登录其它节点。输入以下命令以启动设备上的用户代理:

eval $(ssh-agent)

接下来通过以下命令将专有密钥添加到该代理的内存存储当中:

ssh-add

现在我们的SSH代理就已经开始运行并获得了正确的专有SSH密钥。下面接入集群中的某台节点,而后转发我们的SSH代理信息。大家可以使用-A标记实现这一目标:

ssh -A core@coreos_node_public_IP

在接入一台节点后,我们即可以着手构建服务本身了。

创建Docker容器

我们首先需要创建运行服务所需要的Docker容器。大家可以采取两种方式:其一为手动创建Docker容器并加以配置,其二为创建一个Dockerfile用以描述构建所需镜像的全部必要步骤。

在本示例中,我们将利用第一种更为直观的方式构建镜像。大家可以参阅 利用Dockerfile构建Docker镜像以了解更多相关信息。我们的目标是利用Docker以Ubuntu 14.04为基础创建一套安装有Apache的镜像。

在开始之前,我们首先需要登录Docker Hub注册表。输入以下命令:

docker login

这时我们需要提供用户名、密码以及电子邮箱地址。如果大家是第一次使用,则必须提供准确信息并点击邮箱收到的验证链接。如果大家已经拥有账户,则利用已有凭证登录即可。

要创建这套镜像,首先需要利用我们使用的基础镜像启动一套Docker容器。具体命令为:

docker run -i -t ubuntu:14.04 /bin/bash

其中的具体参数解释如下:

  • run: 告知Docker我们希望利用以下参数启动一套容器。
  • -i: 以交互模式启动Docker容器。这将确保STDIN可用于该容器环境——但是否添加可按实际需求选择。
  • -t: 创建一个伪终端,允许我们利用终端访问该容器环境。
  • ubuntu:14.04: 这是是我们希望运行的库与镜像结合体。在本示例中,我们将运行Ubuntu 14.04。该镜像来自 Docker Hub中的Ubuntu Docker库。
  • /bin/bash: 这是我们希望在容器中运行的命令。由于我们希望实现终端访问,因此需要生成一条shell会话。

基础镜像层将取自Docker Hub的在线Docker注册表,同时启动一条bash会话。这时我们的当前进程正是该shell会话。

在这里,我们可以进一步创建服务环境。首先是安装Apache Web稆,因此我们应当更新本地软件包目录并利用apt命令完成安装:

apt-get update
apt-get install apache2

在安装结束后,我们可以对其默认index.html文件进行编辑:

echo”<h1>Running from Docker on CoreOS</h1>” > /var/www/html/index.html

完成之后,大家可以退出bash会话:

exit

现在回到主机设备,大家需要获取该Docker容器的容器ID。我们可以通过以下命令要求Docker显示其最新进程信息:

docker ps -l

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
cb58a2ea1f8f        ubuntu:14.04"/bin/bash"8 minutes ago       Exited (0) 55 seconds ago                       jovial_perlman

我们需要的是“CONTAINER ID”一列。在以上示例中,其ID为cb58a2ea1f8f。为了能够在之后重新启动该容器并应用做出的全部变更,我们需要将各项变更提交至对应用户名的库中,同时为该镜像选定一个名称。

在本示例中,我们将用户名设定为user_name,但大家需要将其替换成自己的实际Docker Hub账户名称。我们将自己的镜像命名为apache。提交镜像变更的命令为:

docker commit container_IDuser_name/apache

这条命令将保存镜像,帮助我们在需要时随时回调容器的当前状态。各位可以通过以下命令进行验证:

docker images

REPOSITORY           TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
user_name/apache     latest              42a71fb973da        4 seconds ago       247.4 MB
ubuntu               14.04               c4ff7513909d        3 weeks ago         213 MB

接下来,我们应当将该镜像发布至Docker Hub,这样节点就能够正常获取并运行该镜像了。具体命令如下:

docker push user_name/apache

现在我们已经拥有了Apache实例所需要的容器镜像。

创建Apache Service Unit文件

现在我们已经拥有可用的Docker容器了,接下来开始构建服务文件。

Fleet管理着整套CoreOS集群中的服务调度工作。其为用户提供一套集中化界面,同时亦通过本地方式操作每台主机的systemd init系统以完成必要的执行活动。

用于定义每项服务之具体属性的各文件基本上就是稍加修改过的systemd unit文件。如果大家曾经使用过systemd,应该不会对其相关语法感到陌生。

我们首先在主目录下创建一个apache@.service的文件。其中的@表示其属于模板服务文件。CoreOS镜像中自带vim文件编辑器:

vim apache@.service

要进行服务定义,我们首先创建一个[Unit]分标题,并为该unit设置部分元数据。我们需要添加描述并指定关联性信息。由于我们的两个unit将需要同时运行在etcd与Docker当中,因此需要对相关要求做出定义。

我们还需要添加另一个服务文件,将利用它容纳具体要求。这第二个服务文件将负责利用服务信息对etcd进行更新。将其添加至要求中能够确保服务启动时这个文件也随之一同运行。我们稍后再来解释服务名称中%i的含义:

[Unit]
Description=Apache web server service
After=etcd.service
After=docker.service
Requires=apache-discovery@%i.service

接下来我们需要告知系统,此unit在启动或者停止时需要执行哪些操作。这些任务可通过[Service]部分实现,毕竟咱们设置的就是服务嘛。

我们首先需要禁用该服务在超时情况下进行重启的设定。由于我们的服务属于Docker容器,因此每当在各主机上进行首次启动时,相关镜像都需要自Docker Hub服务器处获取——这可能会带来较正常情况更长的启动时间。

我们还需要将KillMode设置为“none”,这样systemd将允许我们利用“stop”命令以关闭该Docker进程。如果不加修改,那么systemd会在我们调用stop命令时认为该Docker进行发生了错误。

确保这套环境会优先启动我们的服务。这一点非常重要,因为我们需要利用名称对服务进行引用,而Docker只允许一套容器以惟一名称加以运行。

我们还需要关闭一切与所需要容器重名的容器并将其移除。这一过程与自Docker Hub处获取镜像同时发生。我们也需要核定/etc/environment文件的来源,其中包含运行当前服务之主机的公共与专有IP地址等变量:

[Unit]
Description=Apache web server service
After=etcd.service
After=docker.service
Requires=apache-discovery@%i.service

[Service]
TimeoutStartSec=0
KillMode=none
EnvironmentFile=/etc/environment
ExecStartPre=-/usr/bin/docker kill apache%i
ExecStartPre=-/usr/bin/docker rm apache%i
ExecStartPre=/usr/bin/docker pull user_name/apache

其中ExecStartPre行内的=-语法代表,这两行准备可以失败,而unit文件仍能够继续运行。由于这些命令只能在容器名称存在时成功运行,因此容器不存在时其需要正常失败。

大家可能注意到了该apache容器名称结尾的%i字样。我们创建的这个服务文件实际上属于 unit文件模板。这意味着在运行该文件时,fleet将自动利用正确值替换其中的部分信息。

在本示例中,文件中的全部%i都将被替换为.service后缀文件中@前面的部分。不过我们的文件名比较简单,为apache@.service。

虽然我们利用apache@.service名称将该文件提交至flletctl,但在载入该文件时,我们需要将其加载为apache@PORTNUM.service——其中”PORT_NUM”代表我们启动此服务器所使用的端口。我们会根据该端口标记服务的运行位置,从而轻松对其加以区分。

接下来启动该Docker容器:

[Unit]
Description=Apache web server service
After=etcd.service
After=docker.service
Requires=apache-discovery@%i.service

[Service]
TimeoutStartSec=0
KillMode=none
EnvironmentFile=/etc/environment
ExecStartPre=-/usr/bin/docker kill apache%i
ExecStartPre=-/usr/bin/docker rm apache%i
ExecStartPre=/usr/bin/docker pull user_name/apache
ExecStart=/usr/bin/docker run --name apache%i -p ${COREOS_PUBLIC_IPV4}:%i:80 user_name/apache /usr/sbin/apache2ctl -D FOREGROUND

我们要求该docker容器运行命令并向其提供几条参数。这里发送的名称格式与之前提到的相同。我们还需要在Docker容器内向主机设备的公共接口发布一个端口。该主机设备的端口编号将取自%i变量,这意味着我们能够指定该端口。

我们将使用COREOS_PUBLIC_IPV4变量(来自我们之前进行过溯源的环境文件)以声明所要绑定的主机接口。这里不声明亦可,但做出声明能够帮助我们在未来将其变更为专有接口(例如需要进行负载均衡)时更轻松地完成修改。

我们引用此前上传至Docker Hub的Docker容器。最后,我们调用该命令以在容器环境下启动这项Apache服务。只要与之对应的命令退出,该Docker容器就会关闭——我们希望将服务运行在前台中,而非守护进程中。通过这种方式,我们的容器就能够持续运行,而不会在生成子进程后退出。

接下来,我们需要在服务需要停止时指定该命令进行调用。这样容器就会被正常关闭。每次重启时,容器都会被清空。

我们还需要添加名为[X-Fleet]的部分。这部分内容专门用于向fleet发送指令以实现服务调度。在这里,大家可以添加一些约束条件,从而根据其它服务或者设备本身的状态设定本服务必须运行或者不可运行。

我们希望这项服务只运行在尚未运行Apache Web服务器的主机之上,因为这能保证我们更轻松地创建高可用性服务。下面我们将使用一条通配符来捕捉一切可能正在运行的apahce服务文件:

[Unit]Description=Apache web server serviceAfter=etcd.serviceAfter=docker.serviceRequires=apache-discovery@%i.service[Service]TimeoutStartSec=0KillMode=noneEnvironmentFile=/etc/environmentExecStartPre=-/usr/bin/docker kill apache%iExecStartPre=-/usr/bin/docker rm apache%iExecStartPre=/usr/bin/docker pull user_name/apacheExecStart=/usr/bin/docker run --name apache%i -p ${COREOS_PUBLIC_IPV4}:%i:80user_name/apache /usr/sbin/apache2ctl -D FOREGROUNDExecStop=/usr/bin/docker stop apache%i[X-Fleet]X-Conflicts=apache@*.service

这样一来,Apache服务器的unit文件就设置完成了。接下来创建一个与之配合的服务文件,用于将该服务注册至etcd。

将服务状态注册至ETCD

为了记录该服务自启动后的状态,我们需要在etcd当中写入一些条目——也就是所谓注册至etcd。

要实现这项目标,我们将启动一个最小化配合服务,其负责在服务器可接收流量时对etcd进行更新。

这个新的服务文件将被命名为apache-discovery@.service。将其打开:

vim apache-discovery@.service

我们首先来看[Unit]部分。与之前提到的一样,我们需要在这里描述该服务的作用,而后设置一条名为BindsTo的指令。

BinddsTo指令用于标记该服务获取状态信息时所需要的关联性。如果被列入其中的服务已经停止,那么我们所编写的这个unit文件将同时停止。通过这种方式,一旦我们的Web服务器发生意外故障,此服务将更新etcd以反映此信息。另外,这也防止了etcd中的状态信息被其它服务错误使用的潜在可能性:

[Unit]
Description=Announce Apache@%i service
BindsTo=apache@%i.service

在[Service]部分,我们希望利用主机IP地址信息对该环境文件进行重新溯源。

为了启动这项命令,我们需要运行一个简单的无限bash循环。在该循环中,我们将使用etcdctl命令,其用于修改etcd值,并在存储于/announce/services/apache%i处的etcd中设定一个key。其中%i将被替换为我们所需载入的服务名称中@与.service后缀之间的部分,也就是该Apache服务的端口编号。

该key的值将被设定为该节点的公共IP地址与端口编号。我们还将为该值设定60秒有效期,这样该key就将在服务关闭后被移除。在此之后休眠45秒,由此实现的过期时效重叠能够保证TTL(即生存时间)值始终能在超时前得到更新。

要结束活动,我们可以直接利用etcdctl移除该key,并将该服务标记为不可用:

[Unit]
Description=Announce Apache@%i service
BindsTo=apache@%i.service

[Service]
EnvironmentFile=/etc/environment
ExecStart=/bin/sh -c "while true; do etcdctl set /announce/services/apache%i ${COREOS_PUBLIC_IPV4}:%i --ttl 60; sleep 45; done"
ExecStop=/usr/bin/etcdctl rm /announce/services/apache%i

最后一项任务则是添加一个条件,以确保此服务启动时所处的主机与其报告给Web服务器的结果相符。这样在该主机发生故障时,etcd信息将得到正确变更:

[Unit]
Description=Announce Apache@%i service
BindsTo=apache@%i.service

[Service]
EnvironmentFile=/etc/environment
ExecStart=/bin/sh -c "while true; do etcdctl set /announce/services/apache%i ${COREOS_PUBLIC_IPV4}:%i --ttl 60; sleep 45; done"
ExecStop=/usr/bin/etcdctl rm /announce/services/apache%i

[X-Fleet]
X-ConditionMachineOf=apache@%i.service

现在我们已经拥有了自己的配合服务,它能够在etcd当中正确记录Apache服务器的当前运行状态了。

与Unit文件与Fleet协作

现在我们已经拥有两套服务模板。大家可以将其直接提交至fleetctl当中,从而让集群意识到它们的存在:

fleetctl submit apache@.service apache-discovery@.service

通过以下命令,我们就能查看到自己的新服务文件:

fleetctl list-unit-files

UNIT                HASH    DSTATE      STATE       TMACHINE
apache-discovery@.service   26a893f inactive    inactive    -
apache@.service         72bcc95 inactive    inactive    -

这些模板如今已经存在于我们集群内的init系统中。

由于我们需要根据特定主机的调度情况使用这些模板,因此接下来需要进行文件载入。在这里,我们要利用端口编号为这些文件指定新的名称。如此一来,fleetctl就会在[X-Fleet]部分寻找具体调度要求。

由于我们不需要进行负载均衡,因此将Web服务器运行在端口80上即可。我们可以通过指定@与.service后缀之间的部分来载入每项服务:

fleetctl load apache@80.service
fleetctl load apache-discovery@80.service

这时我们已经能够了解到该服务被载入到了集群内的哪台主机之上:

Unit apache@80.service loaded on 41f4cb9a.../10.132.248.119
Unit apache-discovery@80.service loaded on 41f4cb9a.../10.132.248.119

如大家所见,这两项服务被载入到同一台设备上,也就是我们所指定的主机。由于我们的apache-discovery服务文件与Apache服务进行了绑定,所以我们可以直接启动后者以实现两项服务的初始化:

fleetctl start apache@80.service

现在,如果大家查看集群内有哪些unit文件正在运行,则可获得以下结果:

fleetctl list-units

UNIT                MACHINE             ACTIVE  SUB
apache-discovery@80.service 41f4cb9a.../10.132.248.119  active  running
apache@80.service       41f4cb9a.../10.132.248.119  active  running

看起来我们的Web服务器已经启动并开始运行了。在服务文件中,我们要求Docker绑定至该主机服务器的公共IP地址。但fleetctl中显示的IP为专有地址(这是因为我们创建这套示例集群时,在cloud-config文件中使用了$private_ipv4)。

不过我们已经将该公共IP地址与端口编号注册至etcd,因此要获取对应值,可以使用etcdctl以查询此前设定的值。大家应该还记得,我们此前设置的key为/announce/services/apachePORT_NUM。要获取服务器细节信息,可以使用以下命令:

etcdctl get /announce/services/apache80

104.131.15.192:80

通过浏览器访问此页面时,大家应该看到如下所示的简单页面:

到这里我们的服务就已经部署成功了。下面尝试利用其它端口载入另一个实例。按照预期,该Web服务器与相关配合容器将被调度至同一主机。然而由于我们在Apache服务文件中加入了约束条件,因此实际承载新实例的主机应该不同于承载端口80服务的主机。

下面将新服务运行在端口9999上:

fleetctl load apache@9999.service apache-discovery@9999.service

Unit apache-discovery@9999.service loaded on 855f79e4.../10.132.248.120
Unit apache@9999.service loaded on 855f79e4.../10.132.248.120

可以看到两项新服务都被调度到了同一台新主机上。启动此Web服务器:

fleetctl start apache@9999.service

现在我们可以看到这台新主机的公共IP地址了:

etcdctl get /announce/services/apache9999

104.131.15.193:9999

如果我们访问其指定的地址与端口编号,则应该能看到另一套Web服务器:

到这里,我们的集群已经部署有两套Web服务器。

如果大家关闭其中一套Web服务器,则与之匹配的容器也将同时关闭:

fleetctl stop apache@80.service
fleetctl list-units

UNIT                MACHINE             ACTIVE      SUB
apache-discovery@80.service 41f4cb9a.../10.132.248.119  inactive    dead
apache-discovery@9999.service   855f79e4.../10.132.248.120  active  running
apache@80.service       41f4cb9a.../10.132.248.119  inactive    dead
apache@9999.service     855f79e4.../10.132.248.120  active  running

通过检查,大家会发现其etcd key也被一并移除:

etcdctl get /announce/services/apache80

Error:  100: Key not found (/announce/services/apache80) [26693]

圆满成功,所有结果都符合预期。

总结

通过今天的教程,大家应该已经熟悉了CoreOS各组件的常见用法。

我们已经立足于需要运行的服务构建起自己的Docker容器,同时创建了fleet unit文件以告知CoreOS如何管理这些容器。另外,我们还实现了一项匹配服务,负责利用Web服务器的状态信息对etcd数据存储内容进行更新。总而言之,大家已经了解了如何利用fleetctl调度服务在不同主机上实现服务管理。

本文来源自DigitalOcean Community。英文原文:How To Create and Run a Service on a CoreOS Cluster by Justin Ellingwood

翻译:diradw

微信开发 - 最新第三方网站接入微信登录、微信支付时,本地 redirect_uri 参数错误导致无法调试的解决方案(微信开放平台)完美解决每次都需要部署到线上测试,在本地使用本地 ip 就能轻松调试 redirect_uri参数错误,微信第三方登录,没有服务器时的测试方法,微信开放平台的回调域名怎么设置为本地域名IP,微信登录微信支付每次调试都需要放到服务器上怎么办,微信登录支付业务在本地调试不了怎么办,在本地怎么测试微信支付和登录,微信第三方登陆本地测试,怎么在本地进行测试,微信回调域怎么设置为本地IP,微信扫码登录redirect_uri参数错误,微信开放平台,微信开放平台开发的第三方登录和支付,vue2,nuxt2,vue3,nuxt3,uniapp,微信开放平台,公众号,微信支付,微信登录授权, 阅读详情

相关推荐

Perplexity SPACE沙箱平台:安全AI开发环境实战解析

沙箱技术通过资源隔离和权限控制创建受限执行环境,其核心原理是容器化隔离机制。在AI开发领域,这种技术解决了环境配置复杂性和安全风险等关键问题。SPACE沙箱平台作为AI代码执行环境,提供了标准化的开发沙箱,支持Python生态和主流AI框架。通过实战案例展示,该平台特别适用于情感分析等NLP任务的快速原型验证,帮助开发者在安全隔离的环境中测试AI模型和算法,显著提升开发效率并降低系统风险。

weixin_29029995的博客 275

CoreOS集群ISO方式安装指南

最近在研究CoreOS,准备架设三个节点的CoreOS玩玩,想直接在虚拟机中通过ISO安装CoreOS,发现坑真多,特此记录,希望对初次接触CoreOS的童鞋有所借鉴和帮助。 主机名 IP地址 coreos1

极客海哥 2324

群晖存储空间损毁不等于硬盘损坏:排查与修复实战

NAS存储系统中,物理硬盘、存储池与文件系统空间构成层级结构,任何一层出现异常都可能在管理界面汇总为“存储空间损毁”。事实上,异常断电、卷未正常挂载等软性问题也会触发这一红色告警,而存储池和硬盘SMART状态往往完全正常。理解这一机制后,用户无需急于格式化重建,通过事件日志审查、SSH确认挂载状态,再借助btrfs scrub等文件系统自愈工具,即可在数据不丢失的前提下恢复存储空间正常。该方案对家庭及小型办公环境中的群晖NAS尤其适用,特别是在供电不稳或硬盘休眠频繁的场景下,能有效规避误判风险。本文完整记录

weixin_30843121的博客 267

整理coreos集群配置

VMware虚拟机集群配置 1、创建新的虚拟机,选择稍后安装系统。创建完成后修改内存最少1G,并挂载IOS镜像,启动进入系统。可先在/etc/systemd/network下创建static.network文件,编写内容如下: [Match] Name=ens33 [Network] A...

chugu6050的博客 232

CST高阶技巧:用周期性边界快速仿真共面波导色散特性(含JDM求解器优化)

本文详细介绍了在CST仿真软件中,利用周期性边界条件结合JDM本征模求解器,高效分析共面波导色散特性的高阶技巧。该方法通过仿真一个单元胞而非整条传输线,大幅提升计算效率,并提供了从建模、边界设置、求解器优化到后处理的完整工作流程,是高频电路设计的实用指南。

weixin_29280219的博客 403

4、LTE无人机认证:保障通信安全的新方案

本文针对LTE网络中无人机通信存在的安全风险,提出了一种基于可信第三方GCS的新型认证协议。该协议通过非对称加密和哈希函数保护IMSI等敏感信息,防止身份泄露、中间人攻击、拒绝服务攻击和位置追踪等威胁。利用Scyther工具对协议进行形式化分析,验证了其在机密性、一致性和活性等方面的安全属性,证明该方案能有效提升无人机在LTE网络中的通信安全性与隐私保护能力。

pink的博客 64

如何利用fleet单元文件为CoreOS集群创建高灵活性服务

提供:ZStack云计算 系列教程本教程为CoreOS上手指南系列九篇中的第六篇。内容简介CoreOS能够利用一系列工具以集群化与Docker容器化方式简化服务管理工作。其中etcd负责将各独立节点联系起来并提供全局数据平台,而大部分实际服务管理任务则由fleet守护进程实现。在上一篇教程中,我们了解了如何利用fleetctl命令操纵服务及集群成员。在今天的教程中,我们将了解如何利用单元文件定义服务

zstack_org的博客 1515

T507 buildroot linux4.9之RLT8211F 1000M以太网开发调试

调试T507的gmac,解决该RTL8211F 1000m以太网中调试遇到的问题

目前从事linux驱动开发,多交流多学习吧 690

coreos集群搭建,以及flannel服务安装和mpi应用测试

容器技术已经成为了当前技术的潮流,学习容器技术已经刻不容缓。除了原始的warden容器,docker容器之外,coreos也在发展自己的容器技术,rocket,就连之前不看好容器技术的microsoft也开始创建自己的容器技术,nano server。我们这里尝试搭建coreos集群,并安装了flannel服务,利用mpi应用来测试

u014333158的专栏 2460

【CUDA Runtime】第一个“Hello World“程序

CUDA(Compute Unified Device Architecture)是 NVIDIA 提供的一个并行计算平台和编程模型,旨在通过利用 GPU 的强大计算能力来加速计算密集型应用。对于许多开发者而言,开始学习 CUDA 编程的第一步通常是编写一个简单的“Hello World”程序。尽管 CUDA 的实际应用远远超出一个简单的例子,但这个初步的示例能帮助开发者快速入门,理解基本的 CUDA 编程流程。

m0_62599305的博客 1508

基于注意力机制的行人重识别(Reld)模型论文解读----Relation-Aware Global Attention for Person Re-identification

任务概述:在多摄像头的复杂场景中,快速定位查找指定目标的所有结果。

qq_52053775的博客 1895

CoreOS实践指南(二):架设CoreOS集群

摘要:CoreOS是一个采用了高度精简的系统内核及外围定制的操作系统。ThoughtWorks的软件工程师林帆将带来“行走在云端:构建CoreOS集群”系列文章,介绍CoreOS的精华和推荐的实践方法。本文为基础第二篇:架设CoreOS集群。 【编者按】作为一个操作系统,CoreOS 采用了高度精简的系统内核及外围定制,将许多原本需要复杂人工操作或者第三方软件支持的功能在操作系统级别进行

Daemon的专栏 1494

会计引擎:交易与核算分离的前世今生

一、为什么需要会计引擎 金融产品的设计,一如一块硬币需要兼顾两面:一面是为客户提供好的金融服务,满足客户支付结算、借贷、资产保值增值等方面的需求,并在这个过程中,以数字化的方式做好客户资产的登记,登记的载体,则是“分户”或“台账”,如客户存款户,是一种典型的分户--资金的增减变化都在一个账户中进行体现,而客户购买的银行理财,因为收益率、期限、投资标的不同,每一笔持有就形成一行记录,即为“台账”--这当然是不严谨但相对形象的表述。但是,“分户”和“台账”并没有必然的区别,以贷款为例,一些银行仍然存在所谓“

银行信息系统应用架构详解 986

CoreOS实践(2)—在coreos上安装Kubernetes

下载kubernetes sudomkdir-p /opt/bin sudowgethttps://storage.googleapis.com/kubernetes/binaries.tar.gz sudotar -xvfbinaries.tar.gz -C /opt/bin gitclone https://github.com/kelseyhightower/ku...

weixin_33962923的博客 88

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

CoreOS实践(1)—CoreOS初体验

CoreOS主要包含以下一些东西: (1)最小的OS:kernel+systemd (2)使用Docker运行应用 (3)使用fleet管理集群 (4)使用etcd实现服务发现:一个分布式的K/V存储引擎存储配置数据 下载vagrant的coreos配置文件 $gitclonehttps://github.com/coreos/coreos-vagrant.git $va...

weixin_34150224的博客 164

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

解读OpenShift的逻辑架构和技术架构

导读:OpenShift的架构设计主要是针对企业需求进行高可用架构设计,包括计算、网络、存储等。接下来我们针对这些问题逐一展开介绍。作者:魏新宇 郭跃军来源:大数据DT(ID:hzdashuju)01 OpenShift的逻辑架构OpenShift的逻辑架构图如图2-6所示。▲图2-6 OpenShift逻辑架构图2-6中的关键组件介绍如下。底层基础设施:OpenShif...

大数据 3236

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Etcd 使用入门

etcd简介 etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。 etcd作为服务发现系统,有以下的特点: 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单 安全:支持SSL证书验证 快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作 可靠:采用raft算法,实现分布式系统数据的可用性和一致性 etcd项目地址:h

大叶子不小的博客 1544

如何用 coreos-vagrant 搭建 3 节点 CoreOS 集群:etcd 服务发现实战指南

coreos-vagrant 是一个提供极简 Vagrantfile 的开源项目,专为 Container Linux(CoreOS)打造,让你能用最少配置在本地快速搭建 CoreOS 集群。本文是一篇面向新手的实战指南,手把手教你如何用 coreos-vagrant 搭建 3 节点 CoreOS 集群,并详解 **etcd 服务发现** 的完整配置流程。从安装依赖到一键启动、验证集群,全程无需编

gitblog_00144的博客 379

[CoreOS 转载]CoreOS实践指南(二):架设CoreOS集群

转载:http://www.youkuaiyun.com/article/2015-01-04/2823399   摘要:CoreOS是一个采用了高度精简的系统内核及外围定制的操作系统。ThoughtWorks的软件工程师林帆将带来“漫步云端:CoreOS实践指南”系列文章,介绍CoreOS的精华和推荐的实践方法。本文为基础第二篇:架设CoreOS集群。 【编者按】作为一个操作系统,CoreOS 采...

weixin_33991418的博客 221

coreos_CoreOS简介

coreos 如果您正在阅读此博客,那么您将大致了解什么是容器以及为什么要使用它们。 Docker使容器的实验变得容易,并且正逐渐使其在生产环境中的部署和管理变得更加容易。 但是,Docker提供的(免费)仍然存在很多空白,并且其他人已经加紧弥补了这些空白。 CoreOS就是这样一种选择。 它不仅是容器管理系统,而且是旨在运行容器的整个(基于Linux)操作系统。 CoreOS的组件 ...

danpu0978的博客 548

CoreOS 学习指南(一)

随着越来越多的应用程序向云端迁移并使用服务器虚拟化,快速部署用户应用和服务并确保其可靠性,借助合适的服务器部署服务并保证 SLA,变得尤为必要。特别是当这些服务具有动态特性时,情况更加复杂,这要求这些服务能够在一组节点上自动化配置和自动扩展。用户应用的编排不仅限于在正确的服务器或虚拟机上部署服务,更要扩展到提供跨这些服务的网络连接,从而实现基础设施即服务IaaS计算、网络和存储是云服务商在提供 IaaS 时必须管理的三大资源。目前,已有多种机制以更抽象的方式处理这些需求。

龙哥盟 1207

CoreOS简介

如果您正在阅读此博客,那么您将大致了解什么是容器以及为什么要使用它们。 Docker使容器的实验变得容易,并且正逐渐使其在生产环境中的部署和管理变得更加容易。 但是,在Docker提供的产品(免费)上仍然存在很多空白,并且其他人已经加紧弥补了这些空白。 CoreOS就是这样一种选择。 它不仅是容器管理系统,而且是旨在运行容器的整个(基于Linux)操作系统。 CoreOS的组件 Co...

danpu0978的博客 1646

CoreOS-xhyve: 在macOS上运行CoreOS的简易指南

CoreOS-xhyve: 在macOS上运行CoreOS的简易指南 项目介绍 CoreOS-xhyve 是一个使您能够在macOS操作系统上轻松运行CoreOS的项目。它利用了xhyve,这是FreeBSD的bhyve虚拟化技术的一个macOS移植版本。该项目由CoreOS团队推出,旨在提供一种轻量级且高效的解决方案,使得开发者可以在本地环境中运行CoreOS,非常适合进行容器化应用的开发、测试...

gitblog_00364的博客 433

精通 CoreOS(二)

第五章 CoreOS 网络和 Flannel 内部结构微服务增加了对大量容器以及容器跨主机互联的需求。为了实现这一目标,必须有一个健壮的容器网络方案。本章将介绍容器网络的基础知识,重点讨论 CoreOS 如何通过 Flannel 实现容器网络。还将涵盖 Docker 网络和其他相关的容器网络技术。本章将包括以下主题:容器网络基础Flannel 内部结构使用 Vagrant、AWS 和 GCE 搭建的 CoreOS Flannel 集群Docker 网络和实验性 Docker 网络使用 Weave 和 Cal

龙哥盟 1249
上一篇: 在Ubuntu 14.04上设置私有Docker Registry
下一篇: 使用Git Hooks实现开发部署任务自动化
普通网友
博客等级 码龄10年 769粉丝 269原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值