Как установить кластер CoreOS на VirtualBox?
Я хотел бы установить кластер coreOS на VirtualBox. Я прочитал документацию coreOS на официальном сайте, и сказано, что я должен загружать каждую виртуальную машину с одинаковой конфигурацией, и они должны быть автоматически сгруппированы. Я использую команду ct, чтобы перевести конфигурацию контейнера Linux в файл зажигания coreOS.
ct --platform = vagrant-virtualbox
ignition.json
Это мой контейнерный файл конфигурации Linux.
etcd:
name: "{HOSTNAME}"
listen_peer_urls: "http://{PRIVATE_IPV4}:2380"
listen_client_urls: "http://0.0.0.0:2379"
initial_advertise_peer_urls: "http://{PRIVATE_IPV4}:2380"
advertise_client_urls: "http://{PRIVATE_IPV4}:2379"
# replace "<token>" with a valid etcd discovery token
discovery: "https://discovery.etcd.io/b89df44ae2643afed5d3f05ea774ba6b"
systemd:
units:
- name: docker-tcp.socket
enable: true
contents: |
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=2375
Service=docker.service
BindIPv6Only=both
[Install]
WantedBy=sockets.target
- name: flanneld.service
dropins:
- name: 50-network-config.conf
contents: |
[Service]
ExecStartPre=/usr/bin/etcdctl set /flannel/network/config '{ "Network": "10.2.0.0/16", "Backend":{"Type":"vxlan"} }'
flannel:
etcd_prefix: "/flannel/network"
passwd:
users:
- name: core-01
password_hash: $1$B61gfKDk$ALsU28o4XGSro4Uqd00FW/
groups:
- sudo
- docker
Но когда я загружаю первую виртуальную машину, я использую
список участников etcdctl
я получаю этот вывод, чтобы проверить, включен ли первый член кластера.
Error: client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:2379: connect: connection refused
; error #1: dial tcp 127.0.0.1:4001: connect: connection refused
error #0: dial tcp 127.0.0.1:2379: connect: connection refused
error #1: dial tcp 127.0.0.1:4001: connect: connection refused
Когда вывод должен быть похож на
e601a65b304e868f: name=core-01 peerURLs=http://192.168.1.30:2380 clientURLs=http://192.168.1.30:2379 isLeader=true
Почему это происходит? Что мне следует изменить в конфигурации контейнера linux, чтобы машина была кластеризована?
1 ответ
Мне кажется, что etcd принимает параметры по умолчанию. 127.0.0.1:2379
вы пытались указать ${HOSTNAME}
а также ${PRIVATE_IPV4}
и также учтите это:
-–initial-cluster-state
Исходное состояние кластера ("новый" или "существующий"). Установите новый для всех участников, присутствующих во время начальной статической загрузки или загрузки DNS. Если для этого параметра установлено значение существующий, etcd попытается присоединиться к существующему кластеру. Если установлено неправильное значение, etcd попытается запуститься, но благополучно завершится ошибкой. по умолчанию: "новая" переменная env: ETCD_INITIAL_CLUSTER_STATE
См. Конфигурацию ниже. Это поможет вам запустить один экземпляр etcd. вы можете пропустить сертификаты ssl, если хотите.
etcd:
version: 3.2.17
name: core-01
data_dir: /var/lib/etcd
listen_client_urls: https://10.0.2.11:2379,https://127.0.0.1:2379,https://127.0.0.1:4001
advertise_client_urls: https://10.0.2.11:2379
listen_peer_urls: https://10.0.2.11:2380
initial_advertise_peer_urls: https://10.0.2.11:2380
initial_cluster: core-01=https://10.0.2.11:2380
initial_cluster_token: etcd-token
initial_cluster_state: new
cert_file: /var/lib/etcd/ssl/apiserver-etcd-client.pem
key_file: /var/lib/etcd/ssl/apiserver-etcd-client-key.pem
peer_cert_file: /var/lib/etcd/ssl/apiserver-etcd-client.pem
peer_key_file: /var/lib/etcd/ssl/apiserver-etcd-client-key.pem
client_cert_auth: true
peer_client_cert_auth: true
trusted_ca_file: /etc/ssl/certs/ca.pem
peer_trusted_ca_file: /etc/ssl/certs/ca.pem
auto_compaction_retention: 1
если вы хотите добавить больше, просто добавьте IP-адрес другого узла.
...
initial_cluster: coreos1=https://10.0.0.4:2380,coreos2=https://10.0.0.5:2380,coreos3=https://10.0.0.6:2380
...