close

抓 IOS ...
用這 IOS 開機 ..

直接安裝 OS (我用 1298.6.0 )

sudo su - root
coreos-install -d /dev/sda -C stable -c ~/cloud-config.yaml

三台 cloud-config.yaml 檔案 ....

執行 curl -w "\n" 'https://discovery.etcd.io/new?size=1' 會產生 discovery:
https://discovery.etcd.io/0dd2252d1ca6eceb3fe05cfd789ceee9

三台的 cloud-config.yaml 差在 hostname & node name & IP 其他都一樣
其中 "Network": "172.17.0.0/16" 是 虛擬IP地址區段 可自行修改的

 

可用
wget
https://raw.githubusercontent.com/chio-nzgft/CoreOS-cloud-config/master/cloud-config-node1.yaml
wget https://raw.githubusercontent.com/chio-nzgft/CoreOS-cloud-config/master/cloud-config-node2.yaml
wget https://raw.githubusercontent.com/chio-nzgft/CoreOS-cloud-config/master/cloud-config-node3.yaml

抓這三個 node 的 cloud-config

 

#cloud-config
hostname: coreos1
ssh_authorized_keys:
   - ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAs9jMlJJ..................M+CsRy+z8PzPQ== echochio

coreos:
  units:
    - name: etcd2.service
      command: start
    - name: systemd-networkd.service
      command: stop
    - name: 00-eth0.network
      runtime: true
      content: |
        [Match]
        Name=eth0

        [Network]
        DNS=168.95.1.1
        Address=192.168.0.69/24
        Gateway=192.168.0.2
    - name: down-interfaces.service
      command: start
      content: |
        [Service]
        Type=oneshot
        ExecStart=/usr/bin/ip link set eth0 down
        ExecStart=/usr/bin/ip addr flush dev eth0
    - name: systemd-networkd.service
      command: restart
    - name: settimezone.service
      command: start
      content: |
        [Unit]
        Description=Set the time zone

        [Service]
        ExecStart=/usr/bin/timedatectl set-timezone  Asia/Taipei
        RemainAfterExit=yes
        Type=oneshot

  etcd2:
    name: "node01"
    discovery: https://discovery.etcd.io/9555056f87b2eec75214dc27703e5add
    advertise-client-urls: http://192.168.0.69:2379
    initial-advertise-peer-urls: http://192.168.0.69:2380
    listen-client-urls: http://0.0.0.0:2379
    listen-peer-urls: http://192.168.0.69:2380

  flannel:
    interface: 192.168.0.69

  units:
    - name: etcd2.service
      command: start
      drop-ins:
        - name: 50-network-config.conf
          content: |
            [Service]
            Restart=always

            [Install]
            WantedBy=multi-user.target

    - name: flanneld.service
      drop-ins:
        - name: 50-network-config.conf
          content: |
            [Unit]
            After=etcd2.service
            Requires=etcd2.service

            [Service]
            ExecStartPre=/usr/bin/etcdctl set /coreos.com/network/config '{ "Network": "172.17.0.0/16" }'

            [Install]
            WantedBy=multi-user.target
      command: start

    - name: docker.service
      command: start
      drop-ins:
      - name: 60-docker-wait-for-flannel-config.conf
        content: |
          [Unit]
          After=flanneld.service
          Requires=flanneld.service

          [Service]
          Restart=always

          [Install]
          WantedBy=multi-user.target


    - name: docker-tcp.socket
      command: start
      enable: true
      content: |
        [Unit]
        Description=Docker Socket for the API

        [Socket]
        ListenStream=2375
        Service=docker.service

        [Install]
        WantedBy=sockets.target

 

#cloud-config
hostname: coreos2
ssh_authorized_keys:
   - ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAs9jMlJJ..................M+CsRy+z8PzPQ== echochio

coreos:
  units:
    - name: etcd2.service
      command: start
    - name: systemd-networkd.service
      command: stop
    - name: 00-eth0.network
      runtime: true
      content: |
        [Match]
        Name=eth0

        [Network]
        DNS=168.95.1.1
        Address=192.168.0.70/24
        Gateway=192.168.0.2
    - name: down-interfaces.service
      command: start
      content: |
        [Service]
        Type=oneshot
        ExecStart=/usr/bin/ip link set eth0 down
        ExecStart=/usr/bin/ip addr flush dev eth0
    - name: systemd-networkd.service
      command: restart
    - name: settimezone.service
      command: start
      content: |
        [Unit]
        Description=Set the time zone

        [Service]
        ExecStart=/usr/bin/timedatectl set-timezone  Asia/Taipei
        RemainAfterExit=yes
        Type=oneshot

  etcd2:
    name: "node02"
    discovery: https://discovery.etcd.io/9555056f87b2eec75214dc27703e5add
    advertise-client-urls: http://192.168.0.70:2379
    initial-advertise-peer-urls: http://192.168.0.70:2380
    listen-client-urls: http://0.0.0.0:2379
    listen-peer-urls: http://192.168.0.70:2380

  flannel:
    interface: 192.168.0.70

  units:
    - name: etcd2.service
      command: start
      drop-ins:
        - name: 50-network-config.conf
          content: |
            [Service]
            Restart=always

            [Install]
            WantedBy=multi-user.target

    - name: flanneld.service
      drop-ins:
        - name: 50-network-config.conf
          content: |
            [Unit]
            After=etcd2.service
            Requires=etcd2.service

            [Service]
            ExecStartPre=/usr/bin/etcdctl set /coreos.com/network/config '{ "Network": "172.17.0.0/16" }'

            [Install]
            WantedBy=multi-user.target
      command: start

    - name: docker.service
      command: start
      drop-ins:
      - name: 60-docker-wait-for-flannel-config.conf
        content: |
          [Unit]
          After=flanneld.service
          Requires=flanneld.service

          [Service]
          Restart=always

          [Install]
          WantedBy=multi-user.target


    - name: docker-tcp.socket
      command: start
      enable: true
      content: |
        [Unit]
        Description=Docker Socket for the API

        [Socket]
        ListenStream=2375
        Service=docker.service

        [Install]
        WantedBy=sockets.target


 
#cloud-config
hostname: coreos3
ssh_authorized_keys:
   - ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAs9jMlJJ..................M+CsRy+z8PzPQ== echochio

coreos:
  units:
    - name: etcd2.service
      command: start
    - name: systemd-networkd.service
      command: stop
    - name: 00-eth0.network
      runtime: true
      content: |
        [Match]
        Name=eth0

        [Network]
        DNS=168.95.1.1
        Address=192.168.0.71/24
        Gateway=192.168.0.2
    - name: down-interfaces.service
      command: start
      content: |
        [Service]
        Type=oneshot
        ExecStart=/usr/bin/ip link set eth0 down
        ExecStart=/usr/bin/ip addr flush dev eth0
    - name: systemd-networkd.service
      command: restart
    - name: settimezone.service
      command: start
      content: |
        [Unit]
        Description=Set the time zone

        [Service]
        ExecStart=/usr/bin/timedatectl set-timezone  Asia/Taipei
        RemainAfterExit=yes
        Type=oneshot

  etcd2:
    name: "node03"
    discovery: https://discovery.etcd.io/9555056f87b2eec75214dc27703e5add
    advertise-client-urls: http://192.168.0.71:2379
    initial-advertise-peer-urls: http://192.168.0.71:2380
    listen-client-urls: http://0.0.0.0:2379
    listen-peer-urls: http://192.168.0.71:2380

  flannel:
    interface: 192.168.0.71

  units:
    - name: etcd2.service
      command: start
      drop-ins:
        - name: 50-network-config.conf
          content: |
            [Service]
            Restart=always

            [Install]
            WantedBy=multi-user.target

    - name: flanneld.service
      drop-ins:
        - name: 50-network-config.conf
          content: |
            [Unit]
            After=etcd2.service
            Requires=etcd2.service

            [Service]
            ExecStartPre=/usr/bin/etcdctl set /coreos.com/network/config '{ "Network": "172.17.0.0/16" }'

            [Install]
            WantedBy=multi-user.target
      command: start

    - name: docker.service
      command: start
      drop-ins:
      - name: 60-docker-wait-for-flannel-config.conf
        content: |
          [Unit]
          After=flanneld.service
          Requires=flanneld.service

          [Service]
          Restart=always

          [Install]
          WantedBy=multi-user.target


    - name: docker-tcp.socket
      command: start
      enable: true
      content: |
        [Unit]
        Description=Docker Socket for the API

        [Socket]
        ListenStream=2375
        Service=docker.service

        [Install]
        WantedBy=sockets.target

不知為何 IP 都無法固定 ...最後進去用手動設 /etc/systemd/network/static.network 
應該是 cloud-config 沒寫好 ....
原文是說 : 

即使您已經設置了靜態IP地址,並且您的網絡中有一個可用的DHCP服務器,則systemd-networkd仍將使用DHCP分配IP地址


 


修改好了會自動設定上去了 ....原來是要先停用再啟用 ,,,,時區也加上去了

 

剛開始只有一台 etcd上線
core@coreos1 ~ $ etcdctl cluster-health
member 74a1e2b4597f8a15 is healthy: got healthy result from http://192.168.0.69:2379
cluster is healthy

加第二台
core@coreos1 ~ $ etcdctl member add node02 http://192.168.0.70:2380
Added member named node02 with ID b15622694b806753 to cluster 

加完後到第二台重啟 :
先編輯檔案 
core@coreos2 ~ $ sudo vi /run/systemd/system/etcd2.service.d/99-restore.conf

[Service]
ExecStartPre=/usr/bin/rm -rf /var/lib/etcd2/proxy
Environment="ETCD_DISCOVERY="
Environment="ETCD_NAME=node02"
Environment="ETCD_INITIAL_CLUSTER=node01=http://192.168.0.69:2380,node02=http://192.168.0.70:2380"
Environment="ETCD_INITIAL_CLUSTER_STATE=existing"
重啟 :
core@coreos2 ~ $ sudo systemctl daemon-reload
core@coreos2 ~ $ sudo systemctl restart etcd2

查看正常了 
core@coreos1 ~ $ etcdctl cluster-health
member 5e88ef78488df9d1 is healthy: got healthy result from http://192.168.0.70:2379
member b15622694b806753 is healthy: got healthy result from http://192.168.0.69:2379
cluster is healthy
 

coreos1 ~ #  etcdctl member list
5e88ef78488df9d1: name=node02 peerURLs=http://192.168.0.70:2380 clientURLs=http://192.168.0.70:2379 isLeader=false
b15622694b806753: name=node01 peerURLs=http://192.168.0.69:2380 clientURLs=http://192.168.0.69:2379 isLeader=true
第三台同樣方式處理後 ....

移除一台 node 比較簡單 ...例如 node2 ...5e88ef78488df9d1
etcdctl member remove 5e88ef78488df9d1 

 

設定Flannel

到每台 node 查看是否 docker0 ip 與 flannel0 相同
且 etcdctl 的 /coreos.com/network 看的到每台 IP 有就是 cloud-config.yaml
內有寫進去啟動 Flannel

coreos3 system # ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.69.1  netmask 255.255.255.0  broadcast 0.0.0.0
        ether 02:42:9b:86:44:8c  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.71  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::215:5dff:fe00:3010  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:00:30:10  txqueuelen 1000  (Ethernet)
        RX packets 476195  bytes 61316767 (58.4 MiB)
        RX errors 0  dropped 1179  overruns 0  frame 0
        TX packets 285224  bytes 31406803 (29.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

flannel0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1472
        inet 172.17.69.0  netmask 255.255.0.0  destination 172.17.69.0
        inet6 fe80::25f9:b8db:197b:3093  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 384 (384.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 73979  bytes 14720247 (14.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 73979  bytes 14720247 (14.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

coreos3 system # etcdctl ls /coreos.com/network/subnets
/coreos.com/network/subnets/172.17.69.0-24
/coreos.com/network/subnets/172.17.77.0-24
/coreos.com/network/subnets/172.17.35.0-24
coreos3 system # etcdctl get /coreos.com/network/subnets/172.17.69.0-24
{"PublicIP":"192.168.0.71"}
coreos3 system # etcdctl get /coreos.com/network/subnets/172.17.77.0-24
{"PublicIP":"192.168.0.69"}
coreos3 system # etcdctl get /coreos.com/network/subnets/172.17.35.0-24
{"PublicIP":"192.168.0.70"}


CoreOS 已不用 fleet .... 雖然參考下面設定起來還是不要用吧 !!
 ....將它關閉吧 !!!!

systemctl disable fleet
systemctl stop fleet

--------------------------------------------------------------------------

三台都做 fleet 啟動

coreos1 ~ # systemctl enable fleet
Created symlink /etc/systemd/system/multi-user.target.wants/fleet.service → /usr/lib/systemd/system/fleet.service.
coreos1 ~ # systemctl start fleet
coreos1 ~ # systemctl status fleet
● fleet.service - fleet daemon
   Loaded: loaded (/usr/lib/systemd/system/fleet.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2017-03-29 03:45:52 UTC; 1s ago
 Main PID: 1345 (fleetd)
    Tasks: 6
   Memory: 2.3M
      CPU: 10ms
   CGroup: /system.slice/fleet.service
           └─1345 /usr/bin/fleetd

Mar 29 03:45:52 coreos1 systemd[1]: Started fleet daemon.
Mar 29 03:45:52 coreos1 fleetd[1345]: INFO fleetd.go:64: Starting fleetd version 0.11.8
Mar 29 03:45:52 coreos1 fleetd[1345]: INFO fleetd.go:170: No provided or default config file found - proceeding without
Mar 29 03:45:52 coreos1 fleetd[1345]: INFO server.go:160: Establishing etcd connectivity
Mar 29 03:45:53 coreos1 fleetd[1345]: INFO server.go:171: Starting server components
Mar 29 03:45:53 coreos1 fleetd[1345]: INFO engine.go:79: Engine leader is c71d347291fe4a75bb5e07badbdb9b0a
 

最後啟動完後看到

coreos1 ~ #  fleetctl list-machines
MACHINE         IP              METADATA
90573c4f...     192.168.0.69    -
9ebc7717...     192.168.0.71    -
c71d3472...     192.168.0.70    -
coreos1 ~ # fleetctl list-units
UNIT    MACHINE ACTIVE  SUB


發生 ........etcdctl member list 狀態也不正常


到壞的那台去處理先將服務停掉 (我的是 node1) :
systemctl stop etcd2

將壞的 DB 刪除
rm -rf  /var/lib/etcd2/member/

到好的 coreos2 那台將 node1 刪除
 

etcdctl member remove b15622694b806753

重建連接檔 
core@coreos1 ~ $ sudo vi /run/systemd/system/etcd2.service.d/99-restore.conf

[Service]
ExecStartPre=/usr/bin/rm -rf /var/lib/etcd2/proxy
Environment="ETCD_DISCOVERY="
Environment="ETCD_NAME=node01"
Environment="ETCD_INITIAL_CLUSTER=node02=http://192.168.0.70:2380,node03=http://192.168.0.71:2380,node01=http://192.168.0.69:2380"
Environment="ETCD_INITIAL_CLUSTER_STATE=existing"


到好的機器coreos2 加回第一台
core@coreos2 ~ $ etcdctl member add node01 http://192.168.0.69:2380

加完後到第一台重啟 etcd2 :

重啟 :
core@coreos1 ~ $ sudo systemctl daemon-reload
core@coreos1 ~ $ sudo systemctl restart etcd2

查看 etcdctl cluster-health 是否三台都上線了

啟動 fleet 
systemctl start fleet
systemctl status fleet

查看 fleetctl  是否三台都慢慢上線了
fleetctl list-machines

如壞兩台那只能用災難恢原 .....

https://coreos.com/etcd/docs/latest/etcd-live-cluster-reconfiguration.html#etcd-disaster-recovery-on-coreos

 

 

arrow
arrow
    全站熱搜

    echochio 發表在 痞客邦 留言(0) 人氣()