Nomad 代替 K8s 使用 Dapr
Dapr 終於發佈 1.0 版了!
官方介紹 Dapr 能用於本地開發環境、K8s 和公有云(例如 AWS、Azure 和 GCP)上,但是我們這些偶爾用一下 Docker,但是還沒上 K8s 和公有云的小型團隊怎麼使用呢?使用非 K8s 能上 Dapr 嗎?怎麼上?
爲了找到答案,我進行了一些試驗,看能不能找到不用 K8s 的使用方法。
Nomad 替代 K8s
公司規模小隻有幾臺服務器,並不需要上 K8s。於是找到了 Nomad 進行容器的編排工作。看看能不能在 Nomad 下運行 Dapr?
測試環境
2 臺樹莓派 3B,統一安裝 Ubuntu 20.4 arm64 。IP 分別爲192.168.10.3
、192.168.10.242
ubuntu、consul
樹莓派安裝 Ubuntu 後連上同一個 wifi,替換 apt 爲阿里雲源。
$ mv /etc/apt/sources.list /etc/apt/sources.list.bak
$ vim /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main multiverse restricted universe
$ apt update
$ apt upgrade
前期準備工作,在192.168.10.242
安裝並運行 Consul
$ wget https://releases.hashicorp.com/consul/1.9.3/consul_1.9.3_linux_arm64.zip
$ sudo unzip consul_1.9.3_linux_arm64.zip -d /usr/bin
$ sudo vi /lib/systemd/system/consul.service
[Unit]
Description=Consul
Wants=cni-dhcp.socket
[Service]
ExecStart=/usr/bin/consul agent -server -bootstrap-expect 1 -data-dir=/var/run/consul -node=n1 -bind=127.0.0.1 -client=0.0.0.0 -ui
TimeoutStopSec=15m
KillSignal=SIGINT
Restart=on-failure
LimitNOFILE=65536
PrivateTmp=false
[Install]
WantedBy=multi-user.target
$ systemctl enable consul
$ systemctl start consul
Nomad
Nomad 是一個集羣管理器和調度器,專爲微服務和批量處理工作流設計。
特性
與 K8s 對比
安裝
2 臺樹莓派分別運行以下代碼安裝:
下載 Nomad1.0.3 並解壓
$ wget https://releases.hashicorp.com/nomad/1.0.3/nomad_1.0.3_linux_arm64.zip
$ sudo unzip nomad_1.0.3_linux_arm64.zip -d /usr/bin
創建 nomad.service 服務
$ sudo vi /lib/systemd/system/nomad.service
[Unit]
Description=Nomad
Documentation=https://nomadproject.io/docs/
After=network.target
After=consul.service
Wants=consul.service
Wants=cni-dhcp.socket
[Service]
Environment="DAEMON_ARGS=agent -config /etc/nomad"
EnvironmentFile=-/etc/default/%p
## https://github.com/hashicorp/nomad/issues/2560
ExecStartPre=-/bin/rm -vf /var/lib/nomad/client/state.db
ExecStart=/usr/bin/nomad $DAEMON_ARGS
ExecStartPost=-/bin/sh -c 'for _ in 9 8 7 6 5 4 3 2 1 0; do /usr/bin/nomad node drain -disable -self && break || sleep 1; done'
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=-/usr/bin/nomad node drain -enable -self -force -yes
TimeoutStopSec=15m
KillSignal=SIGINT
## !! Do not use "KillMode=process"; systemd should stop whatever Nomad left behind.
## https://github.com/hashicorp/nomad/pull/4305#issuecomment-412978568
Restart=on-failure
LimitNOFILE=65536
## PrivateTmp must be "false" to allow rkt's communication with "cni-dhcp.socket".
PrivateTmp=false
[Install]
WantedBy=multi-user.target
配置文件,記得修改 name 和 IP:
$ mkdir /etc/nomad
$ cd /etc/nomad
$ vi nomad.hcl ##nomad 配置
## IP地址根據實際修改
name = "242"
log_level = "INFO"
data_dir = "/var/run/nomad"
bind_addr = "192.168.10.242"
leave_on_terminate = true
region = "MY1"
datacenter = "DC2"
advertise {
http = "192.168.10.242"
rpc = "192.168.10.242"
serf = "192.168.10.242"
}
ports{
http = "4646"
rpc = "4647"
serf = "4648"
}
telemetry {
publish_allocation_metrics = true
publish_node_metrics = true
}
$ vi server.hcl ##server 配置
server {
enabled = true
bootstrap_expect = 2
}
$ vi consul.hcl ##consul 配置
consul {
## 填寫consul的安裝地址
address = "192.168.10.242:8500"
server_service_name = "nomad"
server_auto_join = true
client_service_name = "nomad-client"
client_auto_join = true
auto_advertise = true
token = "consul的token"
}
啓動 Nomad
$ sudo systemctl enable nomad
$ sudo systemctl start nomad
UI
Consul UI
訪問http://192.168.10.242:8500
,可以看到名爲 nomad 的 service 註冊了 6 個實例,分別是兩臺樹莓派的 http、rpc、serf 通信地址。
Nomad UI
訪問http://192.168.10.242:4646
,在 Servers 節點可以查看當前所有的 server 以及當前的 Leader。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/Q28W5K83BMTgnG-8IinUcQ