Giter VIP home page Giter VIP logo

image-builder-odroid-c1's Introduction

rpi-golang

Docker image containing GOLANG that is compatible to the Raspberry Pi.

Build the Docker Image

make build

Run the Docker Image and get version of installed GOLANG

make version

Push Docker Image to Docker Hub

  • First, use a docker login with username, password and email address
  • Second, push Docker Image to the official Docker Hub
make push

image-builder-odroid-c1's People

Contributors

bpruessm avatar dieterreuter avatar djmaze avatar docbobo avatar govinda-fichtner avatar mathiasrenner avatar stefanscherer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

image-builder-odroid-c1's Issues

increase SD card lifetime

Hi,

I'd suggest to add some settings for the image generation procedure which will help to increase the SD card lifetime:

  • create the ext4 filesystem without the journal, e.g:
mkfs.ext4 -O ^has_journal -b 4096 -U 9d5de372-3a98-4c65-a236-40d7912153b4 ...
  • add / to /etc/fstab like
UUID=9d5de372-3a98-4c65-a236-40d7912153b4  /  ext4  errors=remount-ro,noatime,nodiratime  0  1

make docker-machine failed: Host already exists: "image-builder-odroid-c1"

Following the instructions I get an error building the boot2docker VM

$ make docker-machine
vagrant up
...
==> default: Setting up cgroup-lite (1.9) ...
==> default: cgroup-lite start/running
==> default: Processing triggers for libc-bin (2.19-0ubuntu6.9) ...
==> default: Processing triggers for ureadahead (0.100.0-16) ...
docker-machine create -d generic \
  --generic-ssh-user vagrant \
  --generic-ssh-key /home/max/work/odroid/HypriotOS/ib-odroid-c1/.vagrant/machines/default/virtualbox/private_key \
  --generic-ip-address 127.0.0.1 \
  --generic-ssh-port 2201 \
  image-builder-odroid-c1
Host already exists: "image-builder-odroid-c1"
Makefile:25: recipe for target 'docker-machine' failed
make: *** [docker-machine] Error 1

OS: Debian Sid unstable (uptodate 21.08.2017)
docker-machine version 0.12.2
vagrant 1.9.1
virtualbox 5.126

Any suggestions?

Set partition labels

We should set a label for each partition. This makes it easy to e.g. find the "root" partition regardless of the partition layout (which might differ between devices or setups).

DHCP Client does not work out of the box

Hi there,

I justed downloaded release 0.1.0 and booted it on the Odroid C1 (original, non-plus Version).
As I did not see it asking for an IP Address, I used an TTL Converter and the Serial console.
Turns out, the Odroid C1 does boot, but it does not use dhclient for unknown reason.
Also, I can only use ifconfig with sudo:

HypriotOS/armv7: pirate@black-pearl in ~
$ ifconfig
-bash: ifconfig: command not found
HypriotOS/armv7: pirate@black-pearl in ~

however -

$ sudo ifconfig

works.

After doing an

sudo dhclient eth0

the Odroid got an IP Address - but without that - it does not work.

errors while installing the ODROID C1 kernel

When creating the SD image with make sd-image there is an error installing the ODROID C1 kernel via apt-get install -y linux-image-c1. Here is the command that errors https://github.com/hypriot/image-builder-odroid-c1/blob/master/devicefiles/chroot-script.sh#L25.

The build logs shows this details:

Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  kernel-common linux-image-3.10.80-135 ucf
Suggested packages:
  kernel-package fdutils linux-doc-3.10.80-135 linux-source-3.10.80-135
  linux-image-3.10.80-135-dbg linux-manual-3.10.80-135
The following NEW packages will be installed:
  kernel-common linux-image-3.10.80-135 linux-image-c1 ucf
0 upgraded, 4 newly installed, 0 to remove and 24 not upgraded.
Need to get 12.0 MB of archives.
After this operation, 35.8 MB of additional disk space will be used.
Get:1 http://deb.odroid.in/c1/ trusty/main linux-image-3.10.80-135 armhf 20151128 [11.8 MB]
Get:2 http://httpredir.debian.org/debian/ jessie/main ucf all 3.0030 [69.7 kB]
Get:3 http://httpredir.debian.org/debian/ jessie/main kernel-common all 13.014+nmu1 [132 kB]
Get:4 http://deb.odroid.in/c1/ trusty/main linux-image-c1 armhf 135-1 [988 B]
Preconfiguring packages ...
Fetched 12.0 MB in 4s (2621 kB/s)
Selecting previously unselected package linux-image-3.10.80-135.
(Reading database ... 11161 files and directories currently installed.)
Preparing to unpack .../linux-image-3.10.80-135_20151128_armhf.deb ...
Done.
Unpacking linux-image-3.10.80-135 (20151128) ...
Selecting previously unselected package ucf.
Preparing to unpack .../archives/ucf_3.0030_all.deb ...
Moving old data out of the way
Unpacking ucf (3.0030) ...
Selecting previously unselected package kernel-common.
Preparing to unpack .../kernel-common_13.014+nmu1_all.deb ...
Unpacking kernel-common (13.014+nmu1) ...
Selecting previously unselected package linux-image-c1.
Preparing to unpack .../linux-image-c1_135-1_armhf.deb ...
Unpacking linux-image-c1 (135-1) ...
Processing triggers for man-db (2.7.0.2-5) ...
Setting up linux-image-3.10.80-135 (20151128) ...

 Hmm. There is a symbolic link /lib/modules/3.10.80-135/build
 However, I can not read it: No such file or directory
 Therefore, I am deleting /lib/modules/3.10.80-135/build


 Hmm. The package shipped with a symbolic link /lib/modules/3.10.80-135/source
 However, I can not read the target: No such file or directory
 Therefore, I am deleting /lib/modules/3.10.80-135/source

Running depmod.
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 3.10.80-135 /boot/uImage-3.10.80-135
run-parts: executing /etc/kernel/postinst.d/copy_dtb 3.10.80-135 /boot/uImage-3.10.80-135
run-parts: executing /etc/kernel/postinst.d/uImage 3.10.80-135 /boot/uImage-3.10.80-135
run-parts: executing /etc/kernel/postinst.d/uInitrd 3.10.80-135 /boot/uImage-3.10.80-135
/usr/bin/mkimage: Can't open /boot/initrd.img-3.10.80-135: No such file or directory
run-parts: /etc/kernel/postinst.d/uInitrd exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-3.10.80-135.postinst line 391, <STDIN> line 2.
dpkg: error processing package linux-image-3.10.80-135 (--configure):
 subprocess installed post-installation script returned error exit status 2
Setting up ucf (3.0030) ...
Setting up kernel-common (13.014+nmu1) ...
dpkg: dependency problems prevent configuration of linux-image-c1:
 linux-image-c1 depends on linux-image-3.10.80-135; however:
  Package linux-image-3.10.80-135 is not configured yet.

dpkg: error processing package linux-image-c1 (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 linux-image-3.10.80-135
 linux-image-c1

Traefick and Docker Swarm generating OVERLAY network error

Related issue with Traefik team: traefik/traefik#1423

Hi guys I'm stucked again with Traefick and Docker Swarm.

I tried to use this tutorial :
https://docs.traefik.io/user-guide/swarm-mode/

On my 2 Odroid C1 boards I have :

  • 1 manager node

  • 1 worker node

The part where it doesn't work is at this step

docker service create
--name traefik
--constraint=node.role==manager
--publish 80:80 --publish 8080:8080
--mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock
--network traefik-net
hypriot/rpi-traefik
--docker
--docker.swarmmode
--docker.domain=traefik
--docker.watch
--web

Screenshots of Portainer

portainer_service_traefik

portainer_containers_view

portainer_networks_view

In Portainer I can see the error message for this container:

error

The kernel I use is:

Linux server1 3.10.104-186 #1 SMP PREEMPT Mon Mar 20 11:48:07 UTC 2017 armv7l GNU/Linux

Containers: 16
Running: 7
Paused: 0
Stopped: 9
Images: 236
Server Version: 17.04.0-ce
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 327
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: active
NodeID: uuohul0pha427ijm0323vzhyw
Is Manager: true
ClusterID: ae3sayj5fn5y55mem4xkcppq2
Managers: 1
Nodes: 2
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Number of Old Snapshots to Retain: 0
Heartbeat Tick: 1
Election Tick: 3
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Node Address: 192.168.1.3
Manager Addresses:
192.168.1.3:2377
Runtimes: runc
Default Runtime: runc
Init Binary:
containerd version: 422e31ce907fd9c3833a38d7b8fdd023e5a76e73
runc version: 9c2d8d184e5da67c95d601382adf14862e4f2228
init version: 949e6fa
Security Options:
apparmor
Kernel Version: 3.10.104-186
Operating System: Debian GNU/Linux 8 (jessie)
OSType: linux
Architecture: armv7l
CPUs: 4
Total Memory: 940.9MiB
Name: server1
ID: 7GHE:CHRG:TDC4:UOTO:3JWM:2ZYU:CHBN:AMIE:W45Y:I5G7:AMSK:ETMY
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false

WARNING: No kernel memory limit support

device-init fails with panic on Odroid C1

From #38:

$ sudo device-init hostname set traefik
panic: runtime error: index out of range

goroutine 1 [running]:
github.com/hypriot/device-init/cmd.activeInterfaces(0x0, 0x0, 0x0)
        /opt/gopath/src/github.com/hypriot/device-init/cmd/hostname_set.go:123 +0x31c
github.com/hypriot/device-init/cmd.setHostname(0x108a5dfc, 0x1, 0x1)
        /opt/gopath/src/github.com/hypriot/device-init/cmd/hostname_set.go:86 +0x50c
github.com/hypriot/device-init/cmd.glob.func5(0x670c30, 0x108206d0, 0x1, 0x1)
        /opt/gopath/src/github.com/hypriot/device-init/cmd/hostname_set.go:39 +0xa4
github.com/spf13/cobra.(*Command).execute(0x670c30, 0x10820688, 0x1, 0x1, 0x0, 0x0)
        /opt/gopath/src/github.com/hypriot/device-init/Godeps/_workspace/src/github.com/spf13/cobra/command.go:569 +0x664
github.com/spf13/cobra.(*Command).ExecuteC(0x670d28, 0x670c30, 0x0, 0x0)
        /opt/gopath/src/github.com/hypriot/device-init/Godeps/_workspace/src/github.com/spf13/cobra/command.go:656 +0x440
github.com/spf13/cobra.(*Command).Execute(0x670d28, 0x0, 0x0)
        /opt/gopath/src/github.com/hypriot/device-init/Godeps/_workspace/src/github.com/spf13/cobra/command.go:615 +0x28
github.com/hypriot/device-init/cmd.Execute()
        /opt/gopath/src/github.com/hypriot/device-init/cmd/root.go:53 +0x20
main.main()
        /opt/gopath/src/github.com/hypriot/device-init/main.go:28 +0x14

Make sure not to use an outdated rootfs

I had an old version of the rootfs tgz sitting in my working directory. When pulling the latest version and running make sdimage, the build had many errors related to the outdated rootfs.

As we are using a distinct version of the rootfs for building, I propose to just change the ROOTFS_TAR_PATH to include the rootfs version. So can be sure a new version will be downloaded for everyone as soon as we update the version in the build script.

Docker with Traefik running inside swarm manager as a service is not able to redirect requests to services that are in the same overlay network outside from the manager to other service in worker nodes.

This problem I'm having might be the same reason and related to this old kernel bug we found and fixed.

Further investigation about this ticket and possible link with old closed ticket #38

@docbobo I would like to have your perspective on this problem.

This is a brief description of my setup.

Running Docke Swarm cluster

(2) Odroid C1 armhfv7(arm32) servers

  1. Swarm Manager (initial stack docker-compose.yml)
  2. Worker node (drone stack docker-compose-yml)

(10) Odroid C2 aarch64(arm64) servers

Docker version arm32

Client:
 Version:      17.05.0-ce
 API version:  1.29
 Go version:   go1.7.5
 Git commit:   89658be
 Built:        Thu May  4 22:28:23 2017
 OS/Arch:      linux/arm

Server:
 Version:      17.05.0-ce
 API version:  1.29 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   89658be
 Built:        Thu May  4 22:28:23 2017
 OS/Arch:      linux/arm
 Experimental: false

$ uname -a
Linux bambuserver2 3.10.104 #1 SMP PREEMPT Sun Jun 4 07:54:52 UTC 2017 armv7l GNU/Linux

Docker version arm64

Client:
 Version:      17.05.0-ce
 API version:  1.29
 Go version:   go1.7.5
 Git commit:   89658bed6
 Built:        Tue May  9 07:22:23 2017
 OS/Arch:      linux/arm64

Server:
 Version:      17.05.0-ce
 API version:  1.29 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   89658bed6
 Built:        Tue May  9 07:22:23 2017
 OS/Arch:      linux/arm64
 Experimental: false

$ uname -a
Linux bambuserver12 3.14.79-109 #1 SMP PREEMPT Thu Mar 16 20:05:25 BRT 2017 aarch64 GNU/Linux

docker info arm32

Containers: 3
 Running: 3
 Paused: 0
 Stopped: 0
Images: 414
Server Version: 17.05.0-ce
Storage Driver: aufs
 Root Dir: /mnt/virtual/var/lib/docker/aufs
 Backing Filesystem: <unknown>
 Dirs: 561
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local local-persist
 Network: bridge host macvlan null overlay
Swarm: active
 NodeID: m7uvwoo1s1335vy20evjz9752
 Is Manager: true
 ClusterID: v1wra9jgbzas12b639h5oc5fm
 Managers: 1
 Nodes: 12
 Orchestration:
  Task History Retention Limit: 5
 Raft:
  Snapshot Interval: 10000
  Number of Old Snapshots to Retain: 0
  Heartbeat Tick: 1
  Election Tick: 3
 Dispatcher:
  Heartbeat Period: 5 seconds
 CA Configuration:
  Expiry Duration: 3 months
 Node Address: 192.168.1.3
 Manager Addresses:
  192.168.1.3:2377
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 9048e5e50717ea4497b757314bad98ea3763c145
runc version: 9c2d8d184e5da67c95d601382adf14862e4f2228
init version: 949e6fa
Security Options:
 apparmor
Kernel Version: 3.10.104
Operating System: Debian GNU/Linux 8 (jessie)
OSType: linux
Architecture: armv7l
CPUs: 4
Total Memory: 940.9MiB
Name: bambuserver1
ID: 7GHE:CHRG:TDC4:UOTO:3JWM:2ZYU:CHBN:AMIE:W45Y:I5G7:AMSK:ETMY
Docker Root Dir: /mnt/virtual/var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

WARNING: No kernel memory limit support

docker info arm64

Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 2
Server Version: 17.05.0-ce
Storage Driver: aufs
 Root Dir: /mnt/virtual/var/lib/docker/aufs
 Backing Filesystem: <unknown>
 Dirs: 8
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local local-persist
 Network: bridge host macvlan null overlay
Swarm: active
 NodeID: apddjnzk1njxiqwlm5l8pan0h
 Is Manager: false
 Node Address: 192.168.1.14
 Manager Addresses:
  192.168.1.3:2377
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 9048e5e50717ea4497b757314bad98ea3763c145
runc version: 9c2d8d184e5da67c95d601382adf14862e4f2228
init version: 949e6fa
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 3.14.79-109
Operating System: Debian GNU/Linux 8 (jessie)
OSType: linux
Architecture: aarch64
CPUs: 4
Total Memory: 1.928GiB
Name: bambuserver12
ID: B64M:RE77:NE6P:CZWV:7XNT:DQ3B:SVYF:LDL5:JHVX:VY2V:GFEB:J7CV
Docker Root Dir: /mnt/virtual/var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

Check config arm32

info: reading kernel config from /proc/config.gz ...

Generally Necessary:
- cgroup hierarchy: properly mounted [/sys/fs/cgroup]
- CONFIG_NAMESPACES: enabled
- CONFIG_NET_NS: enabled
- CONFIG_PID_NS: enabled
- CONFIG_IPC_NS: enabled
- CONFIG_UTS_NS: enabled
- CONFIG_CGROUPS: enabled
- CONFIG_CGROUP_CPUACCT: enabled
- CONFIG_CGROUP_DEVICE: enabled
- CONFIG_CGROUP_FREEZER: enabled
- CONFIG_CGROUP_SCHED: enabled
- CONFIG_CPUSETS: enabled
- CONFIG_MEMCG: enabled
- CONFIG_KEYS: enabled
- CONFIG_VETH: enabled (as module)
- CONFIG_BRIDGE: enabled
- CONFIG_BRIDGE_NETFILTER: enabled
- CONFIG_NF_NAT_IPV4: enabled (as module)
- CONFIG_IP_NF_FILTER: enabled (as module)
- CONFIG_IP_NF_TARGET_MASQUERADE: enabled (as module)
- CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: enabled (as module)
- CONFIG_NETFILTER_XT_MATCH_CONNTRACK: enabled (as module)
- CONFIG_NETFILTER_XT_MATCH_IPVS: enabled (as module)
- CONFIG_IP_NF_NAT: missing
- CONFIG_NF_NAT: enabled (as module)
- CONFIG_NF_NAT_NEEDED: enabled
- CONFIG_POSIX_MQUEUE: enabled
- CONFIG_DEVPTS_MULTIPLE_INSTANCES: enabled

Optional Features:
- CONFIG_USER_NS: enabled
- CONFIG_SECCOMP: missing
- CONFIG_CGROUP_PIDS: missing
- CONFIG_MEMCG_SWAP: enabled
- CONFIG_MEMCG_SWAP_ENABLED: enabled
    (cgroup swap accounting is currently enabled)
- CONFIG_MEMCG_KMEM: missing
- CONFIG_RESOURCE_COUNTERS: enabled
- CONFIG_BLK_CGROUP: enabled
- CONFIG_BLK_DEV_THROTTLING: missing
- CONFIG_IOSCHED_CFQ: enabled
- CONFIG_CFQ_GROUP_IOSCHED: missing
- CONFIG_CGROUP_PERF: enabled
- CONFIG_CGROUP_HUGETLB: missing
- CONFIG_NET_CLS_CGROUP: enabled (as module)
- CONFIG_NETPRIO_CGROUP: missing
- CONFIG_CFS_BANDWIDTH: enabled
- CONFIG_FAIR_GROUP_SCHED: enabled
- CONFIG_RT_GROUP_SCHED: enabled
- CONFIG_IP_VS: enabled (as module)
- CONFIG_IP_VS_NFCT: enabled
- CONFIG_IP_VS_RR: enabled (as module)
- CONFIG_EXT3_FS: missing
- CONFIG_EXT3_FS_XATTR: missing
- CONFIG_EXT3_FS_POSIX_ACL: missing
- CONFIG_EXT3_FS_SECURITY: missing
    (enable these ext3 configs if you are using ext3 as backing filesystem)
- CONFIG_EXT4_FS: enabled
- CONFIG_EXT4_FS_POSIX_ACL: enabled
- CONFIG_EXT4_FS_SECURITY: enabled
- Network Drivers:
  - "overlay":
    - CONFIG_VXLAN: enabled (as module)
      Optional (for encrypted networks):
      - CONFIG_CRYPTO: enabled
      - CONFIG_CRYPTO_AEAD: enabled
      - CONFIG_CRYPTO_GCM: missing
      - CONFIG_CRYPTO_SEQIV: enabled
      - CONFIG_CRYPTO_GHASH: missing
      - CONFIG_XFRM: enabled
      - CONFIG_XFRM_USER: enabled (as module)
      - CONFIG_XFRM_ALGO: enabled
      - CONFIG_INET_ESP: enabled
      - CONFIG_INET_XFRM_MODE_TRANSPORT: enabled
  - "ipvlan":
    - CONFIG_IPVLAN: missing
  - "macvlan":
    - CONFIG_MACVLAN: enabled (as module)
    - CONFIG_DUMMY: missing
  - "ftp,tftp client in container":
    - CONFIG_NF_NAT_FTP: enabled (as module)
    - CONFIG_NF_CONNTRACK_FTP: enabled (as module)
    - CONFIG_NF_NAT_TFTP: enabled (as module)
    - CONFIG_NF_CONNTRACK_TFTP: enabled (as module)
- Storage Drivers:
  - "aufs":
    - CONFIG_AUFS_FS: enabled
  - "btrfs":
    - CONFIG_BTRFS_FS: enabled (as module)
    - CONFIG_BTRFS_FS_POSIX_ACL: enabled
  - "devicemapper":
    - CONFIG_BLK_DEV_DM: enabled
    - CONFIG_DM_THIN_PROVISIONING: enabled (as module)
  - "overlay":
    - CONFIG_OVERLAY_FS: missing
  - "zfs":
    - /dev/zfs: missing
    - zfs command: missing
    - zpool command: missing

Limits:
- /proc/sys/kernel/keys/root_maxkeys: 1000000

Check config arm64

info: reading kernel config from /proc/config.gz ...

Generally Necessary:
- cgroup hierarchy: properly mounted [/sys/fs/cgroup]
- apparmor: enabled and tools installed
- CONFIG_NAMESPACES: enabled
- CONFIG_NET_NS: enabled
- CONFIG_PID_NS: enabled
- CONFIG_IPC_NS: enabled
- CONFIG_UTS_NS: enabled
- CONFIG_CGROUPS: enabled
- CONFIG_CGROUP_CPUACCT: enabled
- CONFIG_CGROUP_DEVICE: enabled
- CONFIG_CGROUP_FREEZER: enabled
- CONFIG_CGROUP_SCHED: enabled
- CONFIG_CPUSETS: enabled
- CONFIG_MEMCG: enabled
- CONFIG_KEYS: enabled
- CONFIG_VETH: enabled (as module)
- CONFIG_BRIDGE: enabled (as module)
- CONFIG_BRIDGE_NETFILTER: enabled
- CONFIG_NF_NAT_IPV4: enabled (as module)
- CONFIG_IP_NF_FILTER: enabled (as module)
- CONFIG_IP_NF_TARGET_MASQUERADE: enabled (as module)
- CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: enabled (as module)
- CONFIG_NETFILTER_XT_MATCH_CONNTRACK: enabled (as module)
- CONFIG_NETFILTER_XT_MATCH_IPVS: enabled (as module)
- CONFIG_IP_NF_NAT: missing
- CONFIG_NF_NAT: enabled (as module)
- CONFIG_NF_NAT_NEEDED: enabled
- CONFIG_POSIX_MQUEUE: enabled
- CONFIG_DEVPTS_MULTIPLE_INSTANCES: enabled

Optional Features:
- CONFIG_USER_NS: enabled
- CONFIG_SECCOMP: enabled
- CONFIG_CGROUP_PIDS: missing
- CONFIG_MEMCG_SWAP: enabled
- CONFIG_MEMCG_SWAP_ENABLED: enabled
    (cgroup swap accounting is currently enabled)
- CONFIG_MEMCG_KMEM: enabled
- CONFIG_RESOURCE_COUNTERS: enabled
- CONFIG_BLK_CGROUP: enabled
- CONFIG_BLK_DEV_THROTTLING: enabled
- CONFIG_IOSCHED_CFQ: enabled
- CONFIG_CFQ_GROUP_IOSCHED: enabled
- CONFIG_CGROUP_PERF: enabled
- CONFIG_CGROUP_HUGETLB: enabled
- CONFIG_NET_CLS_CGROUP: enabled (as module)
- CONFIG_CGROUP_NET_PRIO: enabled
- CONFIG_CFS_BANDWIDTH: enabled
- CONFIG_FAIR_GROUP_SCHED: enabled
- CONFIG_RT_GROUP_SCHED: enabled
- CONFIG_IP_VS: enabled (as module)
- CONFIG_IP_VS_NFCT: enabled
- CONFIG_IP_VS_RR: enabled (as module)
- CONFIG_EXT3_FS: missing
- CONFIG_EXT3_FS_XATTR: missing
- CONFIG_EXT3_FS_POSIX_ACL: missing
- CONFIG_EXT3_FS_SECURITY: missing
    (enable these ext3 configs if you are using ext3 as backing filesystem)
- CONFIG_EXT4_FS: enabled
- CONFIG_EXT4_FS_POSIX_ACL: enabled
- CONFIG_EXT4_FS_SECURITY: enabled
- Network Drivers:
  - "overlay":
    - CONFIG_VXLAN: enabled (as module)
      Optional (for encrypted networks):
      - CONFIG_CRYPTO: enabled
      - CONFIG_CRYPTO_AEAD: enabled
      - CONFIG_CRYPTO_GCM: missing
      - CONFIG_CRYPTO_SEQIV: enabled
      - CONFIG_CRYPTO_GHASH: missing
      - CONFIG_XFRM: enabled
      - CONFIG_XFRM_USER: enabled (as module)
      - CONFIG_XFRM_ALGO: enabled
      - CONFIG_INET_ESP: enabled
      - CONFIG_INET_XFRM_MODE_TRANSPORT: enabled
  - "ipvlan":
    - CONFIG_IPVLAN: missing
  - "macvlan":
    - CONFIG_MACVLAN: enabled (as module)
    - CONFIG_DUMMY: enabled (as module)
  - "ftp,tftp client in container":
    - CONFIG_NF_NAT_FTP: enabled (as module)
    - CONFIG_NF_CONNTRACK_FTP: enabled (as module)
    - CONFIG_NF_NAT_TFTP: enabled (as module)
    - CONFIG_NF_CONNTRACK_TFTP: enabled (as module)
- Storage Drivers:
  - "aufs":
    - CONFIG_AUFS_FS: enabled (as module)
  - "btrfs":
    - CONFIG_BTRFS_FS: enabled (as module)
    - CONFIG_BTRFS_FS_POSIX_ACL: enabled
  - "devicemapper":
    - CONFIG_BLK_DEV_DM: enabled (as module)
    - CONFIG_DM_THIN_PROVISIONING: enabled (as module)
  - "overlay":
    - CONFIG_OVERLAY_FS: enabled (as module)
  - "zfs":
    - /dev/zfs: missing
    - zfs command: missing
    - zpool command: missing

Limits:
- /proc/sys/kernel/keys/root_maxkeys: 1000000

==========================================

Steps to reproduce the problem...

  1. docker network create -d overlay traefik-net

  2. create a docker-compose.yml for initial stack

version: "3"

networks:
  traefik-net:
    external: true 
    
services:
  traefik:
    image: hypriot/rpi-traefik
    ports:
      - "80:80"
      - "443:443"
      #- "8080:8080"
    command: --web --docker --docker.swarmmode=true --docker.watch=true --docker.domain=cluster.publicvm.com -l DEBUG 
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    networks:
      - traefik-net
    deploy:
      placement:
        constraints:
          - node.role==manager
          #- node.hostname==bambuserver1
      restart_policy:
        condition: on-failure
      labels:
        traefik.docker: "true"
        traefik.docker.network: "traefik-net"
        traefik.port: 8080
        traefik.backend.loadbalancer.sticky: "true"
        traefik.backend.loadbalancer.method: "wrr"
        #traefik.backend.loadbalancer.swarm: "true"
        traefik.frontend.passHostHeader: "true"
        traefik.frontend.rule: "Host:traefik-admin.cluster.publicvm.com"
  
  portainer:
    depends_on: [ traefik ]
    image: portainer/portainer:linux-arm-1.13.1
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - portainer-datas:/data
    networks:
      - traefik-net
    #ports:
      #- 9000:9000
    deploy:
      placement:
        constraints:
          - node.role == manager
          #- node.hostname==bambuserver1
      restart_policy:
        condition: on-failure
      labels:
        traefik.enable: "true"
        traefik.docker.network: "traefik-net"
        traefik.port: "9000"
        traefik.backend.loadbalancer.sticky: "true"
        traefik.backend.loadbalancer.method: "wrr"
        #traefik.backend.loadbalancer.swarm: "true"
        traefik.frontend.passHostHeader: "true"
        traefik.frontend.rule: "Host:portainer.cluster.publicvm.com"      

  gitea:
    depends_on: [ portainer ]
    image: bambuserver1:5000/ergu/gitea-arm:1.1.1
    volumes:
      - gitea-datas:/data
    networks:
      - traefik-net
    ports:
      - 3022:22
      #- 3000:3000
    deploy:
      placement:
        constraints:
          - node.role==manager
          #- node.hostname == bambuserver2
      restart_policy:
        condition: on-failure
      labels:
        traefik.enable: "true"
        traefik.docker.network: "traefik-net"
        traefik.port: "3000"
        traefik.backend.loadbalancer.sticky: "true"
        traefik.backend.loadbalancer.method: "wrr"
        #traefik.backend.loadbalancer.swarm: "true"
        traefik.frontend.passHostHeader: "true"
        traefik.frontend.rule: "Host:gitea.cluster.publicvm.com"
    
volumes:
  portainer-datas:
    driver: local-persist
    driver_opts:
        type: volume 
        mountpoint: /mnt/virtual/docker/containers/portainer
  gitea-datas:
    driver: local-persist
    driver_opts:
        type: volume 
        mountpoint: /mnt/virtual/docker/containers/gitea    
  1. create a docker-compose.yml for drone stack
version: "3.2"

networks:
  traefik-net:
    external: true 

services:
    server:
        image: bambuserver1:5000/ergu/drone-arm32:0.7.1
        networks:
          - traefik-net
        deploy:
            labels:
                traefik.enable: "true"
                traefik.docker.network: "traefik-net"
                traefik.port: "8000"
                traefik.backend.loadbalancer.sticky: "true"
                traefik.backend.loadbalancer.method: "drr"
                traefik.backend.loadbalancer.swarm: "true"
                traefik.frontend.passHostHeader: "true"
                traefik.frontend.rule: "Host:drone.cluster.publicvm.com"
            placement:
                constraints:
                - node.hostname==bambuserver2
        ports:
          - 8000:8000
       
        volumes:
            - drone-datas:/var/lib/drone
        environment:
          - DRONE_ADMIN=administrator
          - DRONE_DEBUG=true
          - DRONE_OPEN=false
          - DRONE_HOST=http://server:8000/
          - DRONE_SECRET=${DRONE_SECRET}
          - DRONE_SERVER_PORT=${DRONE_SERVER_PORT}
          - DRONE_GOGS=true
          - DRONE_GOGS_URL=http://gitea.cluster.publicvm.com/
          - DRONE_GOGS_SKIP_VERIFY=true
          - DRONE_PLUGIN_PRIVILEGED=armhfplugins/docker,armhfplugins/drone-docker

    agent:
        depends_on: [ server ]
        image: bambuserver1:5000/ergu/drone-arm32:0.7.1
        networks:
          - traefik-net
        command: agent
        deploy:
            placement:
                constraints:
                - node.hostname==bambuserver2
        volumes: [ "/var/run/docker.sock:/var/run/docker.sock" ]
        environment:
          - DRONE_SERVER=ws://server:8000/ws/broker
          - DRONE_SECRET=${DRONE_SECRET}
          - DRONE_DEBUG=true

volumes:              
  drone-datas:
    driver: local-persist
    driver_opts:
        type: volume 
        mountpoint: /mnt/virtual/docker/volumes/drone/      
  1. Run the initial stack docker-compose with docker stack deploy on the manager node
  2. Run the drone stack docker-compose with docker stack deploy on the manager node

What is expected as result:
Go in your browser and all calls to the url http://drone.cluster.publicvm.com/ should go through Traefik and then routed to the drone_server service on bambuserver2 which is a worker node. The login page from drone should be displayed.

What is actually happening:

Traefik is not able to go out of the Swarm Manager and route the request to bambuserver2. Instead this error message is shown in the logs:

time="2017-06-04T04:12:55Z" level=debug msg="Round trip: http://10.0.0.3:8080, code: 200, duration: 1.712028ms" 
time="2017-06-04T04:12:56Z" level=warning msg="Error forwarding to http://10.0.0.9:8000, err: dial tcp 10.0.0.9:8000: i/o timeout" 
time="2017-06-04T04:12:57Z" level=debug msg="Round trip: http://10.0.0.3:8080, code: 200, duration: 2.247036ms" 

I've talked with @emilevauge from Traefik and he told me that this is not a Traefik bug but rather a docker bug. Then @firecyberice had tried my setup on amd64 architecture via playwithdocker and he was able to run my config without a problem. Based on his results and tests I've come up with the conclusion that some other disabled kernel options like - CONFIG_VXLAN: missing in ticket #38 are blocking the routing within docker and hypriotOS

I'm not 100% sure about this but I would say 90% close to the root of the problem. Since I don't know which other kernel options are necessary so to successfully route overlay networks packets between nodes.

@docbobo @firecyberice and maybe others can help us on this bug.

Screenshots of the networks in my Swarm Manager

traefik-net (overlay)

Screenshots of the networks in worker node 1 (bambuserver2)

traefik-net (overlay)

Traefik redirecting successfully the 3 services in inital stack (please look at urls and traefik tab)

portainer

traefik

gitea

Traefik showing error for the 4th service on bambuserver2

drone error

What is inside the log from Traefik

time="2017-06-04T04:12:55Z" level=debug msg="Round trip: http://10.0.0.3:8080, code: 200, duration: 1.712028ms" 
time="2017-06-04T04:12:56Z" level=warning msg="Error forwarding to http://10.0.0.9:8000, err: dial tcp 10.0.0.9:8000: i/o timeout" 
time="2017-06-04T04:12:57Z" level=debug msg="Round trip: http://10.0.0.3:8080, code: 200, duration: 2.247036ms" 

No HDMI output

The bootloader configuration does not enable the HDMI output. At least for me it doesn't work.

We should probably change that as most people won't have a UART kit for diagnosing problems.

Update tools to "Barbossa"

  • rename to hypriotos-odroid-c1-vX.X.X.img.zip
  • update docker-compose
  • update docker-machine
  • update docker-engine
  • update device-init
  • install docker images for consul + swarm
  • install cluster-lab
  • check for a more up to date kernel > 3.10
  • add FAT partition for flash / device-init

Bug fix with CONFIG_VXLAN is not included in the latest image build

Hi @docbobo I've downloaded the latest release and it seems that you didn't integrate the bug fix concerning the last bug we worked on together : #38

Testes image : https://github.com/hypriot/image-builder-odroid-c1/releases/tag/v0.4.2

After a fresh install on my Odroid C1 check-config.sh shows :

$ ./check-config.sh
info: reading kernel config from /proc/config.gz ...

Generally Necessary:
- cgroup hierarchy: properly mounted [/sys/fs/cgroup]
- CONFIG_NAMESPACES: enabled
- CONFIG_NET_NS: enabled
- CONFIG_PID_NS: enabled
- CONFIG_IPC_NS: enabled
- CONFIG_UTS_NS: enabled
- CONFIG_CGROUPS: enabled
- CONFIG_CGROUP_CPUACCT: enabled
- CONFIG_CGROUP_DEVICE: enabled
- CONFIG_CGROUP_FREEZER: enabled
- CONFIG_CGROUP_SCHED: enabled
- CONFIG_CPUSETS: enabled
- CONFIG_MEMCG: enabled
- CONFIG_KEYS: enabled
- CONFIG_VETH: enabled (as module)
- CONFIG_BRIDGE: enabled
- CONFIG_BRIDGE_NETFILTER: enabled
- CONFIG_NF_NAT_IPV4: enabled (as module)
- CONFIG_IP_NF_FILTER: enabled (as module)
- CONFIG_IP_NF_TARGET_MASQUERADE: enabled (as module)
- CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: enabled (as module)
- CONFIG_NETFILTER_XT_MATCH_CONNTRACK: enabled (as module)
- CONFIG_NETFILTER_XT_MATCH_IPVS: enabled (as module)
- CONFIG_IP_NF_NAT: missing
- CONFIG_NF_NAT: enabled (as module)
- CONFIG_NF_NAT_NEEDED: enabled
- CONFIG_POSIX_MQUEUE: enabled
- CONFIG_DEVPTS_MULTIPLE_INSTANCES: enabled

Optional Features:
- CONFIG_USER_NS: enabled
- CONFIG_SECCOMP: missing
- CONFIG_CGROUP_PIDS: missing
- CONFIG_MEMCG_SWAP: enabled
- CONFIG_MEMCG_SWAP_ENABLED: enabled
    (cgroup swap accounting is currently enabled)
- CONFIG_MEMCG_KMEM: missing
- CONFIG_RESOURCE_COUNTERS: enabled
- CONFIG_BLK_CGROUP: enabled
- CONFIG_BLK_DEV_THROTTLING: missing
- CONFIG_IOSCHED_CFQ: enabled
- CONFIG_CFQ_GROUP_IOSCHED: missing
- CONFIG_CGROUP_PERF: enabled
- CONFIG_CGROUP_HUGETLB: missing
- CONFIG_NET_CLS_CGROUP: enabled (as module)
- CONFIG_NETPRIO_CGROUP: missing
- CONFIG_CFS_BANDWIDTH: enabled
- CONFIG_FAIR_GROUP_SCHED: enabled
- CONFIG_RT_GROUP_SCHED: enabled
- CONFIG_IP_VS: enabled (as module)
- CONFIG_IP_VS_NFCT: enabled
- CONFIG_IP_VS_RR: enabled (as module)
- CONFIG_EXT3_FS: missing
- CONFIG_EXT3_FS_XATTR: missing
- CONFIG_EXT3_FS_POSIX_ACL: missing
- CONFIG_EXT3_FS_SECURITY: missing
    (enable these ext3 configs if you are using ext3 as backing filesystem)
- CONFIG_EXT4_FS: enabled
- CONFIG_EXT4_FS_POSIX_ACL: enabled
- CONFIG_EXT4_FS_SECURITY: enabled
- Network Drivers:
  - "overlay":
    - CONFIG_VXLAN: missing
      Optional (for encrypted networks):
      - CONFIG_CRYPTO: enabled
      - CONFIG_CRYPTO_AEAD: enabled
      - CONFIG_CRYPTO_GCM: missing
      - CONFIG_CRYPTO_SEQIV: enabled
      - CONFIG_CRYPTO_GHASH: missing
      - CONFIG_XFRM: enabled
      - CONFIG_XFRM_USER: enabled (as module)
      - CONFIG_XFRM_ALGO: enabled
      - CONFIG_INET_ESP: enabled
      - CONFIG_INET_XFRM_MODE_TRANSPORT: enabled
  - "ipvlan":
    - CONFIG_IPVLAN: missing
  - "macvlan":
    - CONFIG_MACVLAN: enabled (as module)
    - CONFIG_DUMMY: missing
  - "ftp,tftp client in container":
    - CONFIG_NF_NAT_FTP: enabled (as module)
    - CONFIG_NF_CONNTRACK_FTP: enabled (as module)
    - CONFIG_NF_NAT_TFTP: enabled (as module)
    - CONFIG_NF_CONNTRACK_TFTP: enabled (as module)
- Storage Drivers:
  - "aufs":
    - CONFIG_AUFS_FS: enabled
  - "btrfs":
    - CONFIG_BTRFS_FS: enabled (as module)
    - CONFIG_BTRFS_FS_POSIX_ACL: enabled
  - "devicemapper":
    - CONFIG_BLK_DEV_DM: enabled
    - CONFIG_DM_THIN_PROVISIONING: enabled (as module)
  - "overlay":
    - CONFIG_OVERLAY_FS: missing
  - "zfs":
    - /dev/zfs: missing
    - zfs command: missing
    - zpool command: missing

Limits:
- /proc/sys/kernel/keys/root_maxkeys: 1000000

- "overlay":
- CONFIG_VXLAN: missing

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.