Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过配置驱动器为VMware ESXi中的coreos定义静态IP地址_Vmware_Coreos_Etcd - Fatal编程技术网

如何通过配置驱动器为VMware ESXi中的coreos定义静态IP地址

如何通过配置驱动器为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

我正在VMware ESXi上部署几个coreos实例。etcd似乎对IP地址相当挑剔,尤其是当它们发生变化时

我希望能够通过云配置定义一个静态IP地址,并且不会混淆etcd集群。看起来coreos启动期间需要发生的事情是,在启动etcd之前,需要首先启动具有静态IP地址的接口。我尝试使用我的用户\u数据文件的此部分执行此操作:

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)之前配置静态网络