未加星标

stellar - a simplified container runtime cluster

字体大小 | |
[数据库(综合) 所属分类 数据库(综合) | 发布者 店小二04 | 时间 2018 | 作者 红领巾 ] 0人收藏点击收藏
_____ __ ____ / ___// /____ / / /___ ______ \__ \/ __/ _ \/ / / __ `/ ___/ ___/ / /_/ __/ / / /_/ / / /____/\__/\___/_/_/\__,_/_/

Simplified Container Runtime Cluster

Stellar is designed to provide simple container runtime clustering. One or more nodes are joined together to create a cluster. The cluster is eventually consistent making it ideal for transient workloads or edge computing where nodes are not always guaranteed to have high bandwidth, low latency connectivity.

Why

There are several container platforms and container orchestrators out there. However, they are too complex for my use. I like simple infrastructure that is easy to deploy and manage, tolerates failure cases and is easy to debug when needed. With the increased tolerance in failure modes, this comes at a consistency cost. It may not be for you. Use the best tool for your use case. Enjoy :)

Features Container execution via containerd Multihost Networking via CNI Service Discovery via DNS Cluster event system via NATS Builtin Proxy using Blackbird (zero downtime reloads, canary deploys, health checks, automatic HTTPS) Masterless design Efficient use of system resources Simple daemon deployment Building

In order to build Stellar you will need the following:

A working Go environment (1.11+) Protoc 3.x compiler and headers (download at the Google releases page )

Once you have the requirements you can build.

If you change / update the protobuf definitions you will need to generate:

make generate

To build the binaries (client and server) run:

make

Docker

Alternatively you can use Docker to build:

To generate protobuf:

make docker-generate

To build binaries:

make docker-build

Running

To run Stellar, once you have a working containerd installation follow these steps:

Install Containerd Build binaries or get a release Copy /bin/sctl to /usr/local/bin/ Copy /bin/stellar to /usr/local/bin/ Copy /bin/stellar-cni-ipam to /opt/containerd/bin/ or /opt/cni/bin

First, we will generate a config:

$> stellar config > stellar.conf

This will produce a default configuration. Edit the addresses to match your environment. For this example we will use the IP 10.0.1.70 .

{ "ConnectionType": "local", "ClusterAddress": "10.0.1.70:7946", "AdvertiseAddress": "10.0.1.70:7946", "Debug": false, "NodeID": "dev", "GRPCAddress": "10.0.1.70:9000", "TLSServerCertificate": "", "TLSServerKey": "", "TLSClientCertificate": "", "TLSClientKey": "", "TLSInsecureSkipVerify": false, "ContainerdAddr": "/run/containerd/containerd.sock", "Namespace": "default", "DataDir": "/var/lib/stellar", "StateDir": "/run/stellar", "Bridge": "stellar0", "UpstreamDNSAddr": "8.8.8.8:53", "ProxyHTTPPort": 80, "ProxyHTTPSPort": 443, "ProxyTLSEmail": "", "GatewayAddress": "127.0.0.1:9001", "EventsAddress": "10.0.1.70:4222", "EventsClusterAddress": "10.0.1.70:5222", "EventsHTTPAddress": "10.0.1.70:4322", "CNIBinPaths": [ "/opt/containerd/bin", "/opt/cni/bin" ], "Peers": [], "Subnet": "172.16.0.0/12" }

To start the initial node run:

$> stellar -D server --config stellar.conf

To join additional nodes simply add the AdvertiseAddress of the first node to the Peers config option of the second node:

For example:

{ "ConnectionType": "local", "ClusterAddress": "10.0.1.71:7946", "AdvertiseAddress": "10.0.1.71:7946", "Debug": false, "NodeID": "dev", "GRPCAddress": "10.0.1.71:9000", "TLSServerCertificate": "", "TLSServerKey": "", "TLSClientCertificate": "", "TLSClientKey": "", "TLSInsecureSkipVerify": false, "ContainerdAddr": "/run/containerd/containerd.sock", "Namespace": "default", "DataDir": "/var/lib/stellar", "StateDir": "/run/stellar", "Bridge": "stellar0", "UpstreamDNSAddr": "8.8.8.8:53", "ProxyHTTPPort": 80, "ProxyHTTPSPort": 443, "ProxyTLSEmail": "", "GatewayAddress": "127.0.0.1:9001", "EventsAddress": "10.0.1.71:4222", "EventsClusterAddress": "10.0.1.71:5222", "EventsHTTPAddress": "10.0.1.71:4322", "CNIBinPaths": [ "/opt/containerd/bin", "/opt/cni/bin" ], "Peers": ["10.0.1.70:7946"], "Subnet": "172.16.0.0/12" }

You will now have a two node cluster. To see node information, use sctl .

$> sctl --addr 10.0.1.70:9000 cluster nodes NAME ADDR OS UPTIME CPUS MEMORY (USED) stellar-00 10.0.1.70:9000 linux (4.17.0-3-amd64) 7 seconds 2 242 MB / 2.1 GB stellar-01 10.0.1.71:9000 Linux (4.17.0-3-amd64) 6 seconds 2 246 MB / 2.1 GB Deploying an Application

To deploy an application, create an application config. For example, create the following as example.conf :

{ "name": "example", "labels": [ "env=prod", "region=us-east" ], "services": [ { "name": "redis", "image": "docker.io/library/redis:alpine", "runtime": "io.containerd.runtime.v1.linux", "process": { "uid": 0, "gid": 0, "args": ["redis-server"] }, "labels": [ "env=prod" ], "network": true } ] }

Then run the following to deploy:

$> sctl --addr 10.0.1.70:9000 apps create -f ./example.conf

You should now see the application deployed:

$> sctl --addr 10.0.1.70:9000 apps list NAME SERVICES example 1 $> sctl --addr 10.0.1.70:9000 apps inspect example Name: example Services: - Name: example.redis Image: docker.io/library/redis:alpine Runtime: io.containerd.runtime.v1.linux Snapshotter: overlayfs Labels: containerd.io/restart.status=running stellar.io/application=example stellar.io/network=true

By default all applications that have networking enabled will have a corresponding nameserver record created. To view the records use the following:

$> sctl --addr 10.0.1.70:9000 nameserver list NAME TYPE VALUE OPTIONS example.redis.stellar A 172.16.0.4 example.redis.stellar TXT node=stellar-00; updated=2018-09-08T10:71:02-04:00

本文数据库(综合)相关术语:系统安全软件

代码区博客精选文章
分页:12
转载请注明
本文标题:stellar - a simplified container runtime cluster
本站链接:https://www.codesec.net/view/610719.html


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(综合) | 评论(0) | 阅读(201)