如何通过配置驱动器为VMware ESXi中的coreos定义静态IP地址
我正在VMware ESXi上部署几个coreos实例。etcd似乎对IP地址相当挑剔,尤其是当它们发生变化时 我希望能够通过云配置定义一个静态IP地址,并且不会混淆etcd集群。看起来coreos启动期间需要发生的事情是,在启动etcd之前,需要首先启动具有静态IP地址的接口。我尝试使用我的用户\u数据文件的此部分执行此操作:如何通过配置驱动器为VMware ESXi中的coreos定义静态IP地址,vmware,coreos,etcd,Vmware,Coreos,Etcd,我正在VMware ESXi上部署几个coreos实例。etcd似乎对IP地址相当挑剔,尤其是当它们发生变化时 我希望能够通过云配置定义一个静态IP地址,并且不会混淆etcd集群。看起来coreos启动期间需要发生的事情是,在启动etcd之前,需要首先启动具有静态IP地址的接口。我尝试使用我的用户\u数据文件的此部分执行此操作: write_files: - path: /etc/systemd/network/static.network permissions: 0644
write_files:
- path: /etc/systemd/network/static.network
permissions: 0644
content: |
[Match]
Name=ens192
[Network]
Address=192.168.1.58/24
Gateway=192.168.1.1
DNS=192.168.1.42
发生的情况是,coreos cloudinit进程将在引导期间将此文件写入文件系统,但仅在它首先使用DHCP打开网络接口之后。etcd随后将启动,但会混淆,因为用户数据地址和对等地址设置与DHCP不匹配。如果在系统首次启动后手动重新启动系统,它将开始使用先前在static.network文件中记录的静态IP地址。是否有办法避免第二次重新启动,即在定义static.network后启动网络
看起来根本问题可能只是vmware提供商不了解其他提供商(如vagrant)使用的$public_ip4构造:
etcd:
# generate a new token for each unique cluster from https://discovery.etcd.io/new
# WARNING: replace each time you 'vagrant destroy'
discovery: https://discovery.etcd.io/####
addr: $public_ipv4:4001
peer-addr: $public_ipv4:7001
据我所知,使用vagrant/virtualbox时不存在此问题。定义CoreOS机箱联网的方法是使用systemd单位文件。以下是我使用的一种方法的总体思路:
coreos:
...
units:
...
- name: 00-eno1.network
runtime: true
content: |
[Match]
Name=eno1
[Network]
DNS=10.0.0.10
DNS=10.1.0.10
Domains=domain.local
Address=10.0.0.20/24
Gateway=10.0.0.1
...
只需将文件内容替换为您的内容。CoreOS和systemd将在执行任何其他操作(如启动etcd)之前配置静态网络