Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

timeouts preventing pxe booting? #32

Open
abemusic opened this issue Mar 1, 2017 · 10 comments
Open

timeouts preventing pxe booting? #32

abemusic opened this issue Mar 1, 2017 · 10 comments

Comments

@abemusic
Copy link

abemusic commented Mar 1, 2017

Hi, we're seeing some weirdness with pixiecore in API mode on proxmox hosts and we think it's related to the time it takes to provide the ipxe boot script which we can test like so:

time curl 'http://10.10.20.100:9090/_/ipxe?arch=0&mac=72:b7:ee:c8:01:01'
...
real	0m10.018s
user	0m0.001s
sys	0m0.006s

if we run the curl again it will be very fast (<<1s).

What's happening is our VM comes up and attempts to pxe boot from net0, fails, attempts to boot net1, fails, and the reboots. This will continue to happen with not much success. We can drop into the pxe command line and force things to work:

imgfetch -n pxe http://10.10.20.100:9090/_/ipxe?arch=0&mac=72:b7:ee:c8:01:01
...
boot pxe

This will run through our expected kickstart install and all is well, so I believe we can assume that pixiecore and the API are working OK. Is there some way to debug what we're seeing? Can the ProxyDHCP bits be affected by slowness to receive the boot image/script?

Also, I should say if we use pixiecore's static mode it works every time, but we lose the ability to provide a dynamic kickstart or control which MAC addresses we care about dynamically.

@abemusic
Copy link
Author

abemusic commented Mar 1, 2017

Also, using the pxe command line we can take advantage of what appears to be some sort of caching in pixiecore's /_/ipxe endpoint by doing:

autoboot
... this will fail ...
... wait about 5 seconds...
autoboot

If you time it right, it will work. Of course this is not very automatable, but shows that things would work if the ipxe endpoint had a faster response time or even cached the response for a long enough time that the pxe client could try again after it reboots.

@danderson
Copy link
Owner

danderson commented Mar 1, 2017

In API mode, each request to the ipxe endpoint translates to exactly one request to the upstream API server. Pixiecore does not do any caching at all, because caching would make it hard/impossible to implement certain workflows. So, any delays/variance you see in a /_/ipxe request should be because of a slow API server, not because of Pixiecore.

One thing that is strange is that Pixiecore defaults to a 5s timeout on the upstream API server request, so it should be impossible to get a successful response after 10s... You should be getting a timeout error after 5s.

Give me a few minutes, I'll add some debug logging to the API server codepath, so we can examine more closely what's happening.

What API server are you using? Is it an open-source one like waitron, or something custom that you built?

danderson added a commit that referenced this issue Mar 1, 2017
@danderson
Copy link
Owner

Okay, I've added some timing logging to the ipxe codepath. Please reproduce the slow boot using the latest code, and add --debug to the commandline to see the timing data. Please post the full logs here, so we can see what's going on.

If you're using an automated build, all autobuilders (quay.io, docker hub, packagecloud Debian packages) have updated to the latest code. Or, of course, you can go get -u go.universe.tf/netboot/cmd/pixiecore to build directly from source.

Thanks!

@abemusic
Copy link
Author

abemusic commented Mar 2, 2017

Thanks for the speedy reply :) Apologies for not getting back to you sooner. I've pulled latest and unfortunately the timings aren't present in the log I'm seeing until I manually force the pxe boot via the command line. Below are relevant logs for both the automated boot and the manual boot.

Automated pxe boot

pixeicore logs
2017/03/02 02:50:41 [DHCP] Offering to boot 72:b7:ee:c8:01:01
2017/03/02 02:50:41 [DHCP] Offering to boot 72:b7:ee:c8:01:01
2017/03/02 02:50:41 [DHCP] Offering to boot 72:b7:ee:c8:01:01
2017/03/02 02:50:41 [DHCP] Offering to boot 72:b7:ee:c8:01:01
2017/03/02 02:50:41 [DHCP] Ignoring packet from 72:b7:ee:c8:01:01: packet is DHCPREQUEST, not DHCPDISCOVER
2017/03/02 02:50:41 [DHCP] Ignoring packet from 72:b7:ee:c8:01:01: packet is DHCPREQUEST, not DHCPDISCOVER
2017/03/02 02:50:41 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
2017/03/02 02:50:51 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
2017/03/02 02:51:01 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
2017/03/02 02:51:09 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
2017/03/02 02:51:19 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
2017/03/02 02:51:29 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
2017/03/02 02:51:39 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
2017/03/02 02:51:49 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
2017/03/02 02:51:59 [DHCP] Offering to boot 72:b7:ee:c8:01:01
2017/03/02 02:51:59 [DHCP] Offering to boot 72:b7:ee:c8:01:01
2017/03/02 02:51:59 [DHCP] Offering to boot 72:b7:ee:c8:01:01
2017/03/02 02:51:59 [DHCP] Offering to boot 72:b7:ee:c8:01:01
2017/03/02 02:51:59 [DHCP] Ignoring packet from 72:b7:ee:c8:01:01: packet is DHCPREQUEST, not DHCPDISCOVER
2017/03/02 02:51:59 [DHCP] Ignoring packet from 72:b7:ee:c8:01:01: packet is DHCPREQUEST, not DHCPDISCOVER
2017/03/02 02:51:59 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
2017/03/02 02:52:09 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
2017/03/02 02:52:19 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
pixeicore API server logs
[pid: 14|app: 0|req: 4/25] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:50:41 2017] GET /v1/boot/72:b7:ee:c8:01:01 => generated 237 bytes in 0 msecs (HTTP/1.1 200) 2 headers in 72 bytes (2 switches on core 1)
/v1/boot/ response time: 0.00016
[pid: 14|app: 0|req: 5/26] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:50:41 2017] GET /v1/boot/72:b7:ee:c8:01:01 => generated 237 bytes in 0 msecs (HTTP/1.1 200) 2 headers in 72 bytes (2 switches on core 0)
/v1/boot/ response time: 0.00010
[pid: 14|app: 0|req: 6/27] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:50:41 2017] GET /v1/boot/72:b7:ee:c8:01:01 => generated 237 bytes in 1 msecs (HTTP/1.1 200) 2 headers in 72 bytes (2 switches on core 1)
/v1/boot/ response time: 0.00010
[pid: 14|app: 0|req: 7/28] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:50:41 2017] GET /v1/boot/72:b7:ee:c8:01:01 => generated 237 bytes in 0 msecs (HTTP/1.1 200) 2 headers in 72 bytes (2 switches on core 1)
[pid: 14|app: 0|req: 8/29] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:50:41 2017] GET /v1/boot/72:b7:ee:c8:01:02 => generated 233 bytes in 0 msecs (HTTP/1.1 404) 2 headers in 72 bytes (1 switches on core 1)
[pid: 14|app: 0|req: 9/30] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:50:51 2017] GET /v1/boot/72:b7:ee:c8:01:02 => generated 233 bytes in 0 msecs (HTTP/1.1 404) 2 headers in 72 bytes (1 switches on core 1)
[pid: 14|app: 0|req: 10/31] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:51:01 2017] GET /v1/boot/72:b7:ee:c8:01:02 => generated 233 bytes in 0 msecs (HTTP/1.1 404) 2 headers in 72 bytes (1 switches on core 0)
[pid: 14|app: 0|req: 11/32] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:51:09 2017] GET /v1/boot/72:b7:ee:c8:01:02 => generated 233 bytes in 0 msecs (HTTP/1.1 404) 2 headers in 72 bytes (1 switches on core 1)
[pid: 14|app: 0|req: 12/33] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:51:19 2017] GET /v1/boot/72:b7:ee:c8:01:02 => generated 233 bytes in 0 msecs (HTTP/1.1 404) 2 headers in 72 bytes (1 switches on core 0)
[pid: 13|app: 0|req: 5/34] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:51:29 2017] GET /v1/boot/72:b7:ee:c8:01:02 => generated 233 bytes in 0 msecs (HTTP/1.1 404) 2 headers in 72 bytes (1 switches on core 1)
[pid: 13|app: 0|req: 6/35] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:51:39 2017] GET /v1/boot/72:b7:ee:c8:01:02 => generated 233 bytes in 0 msecs (HTTP/1.1 404) 2 headers in 72 bytes (1 switches on core 0)
[pid: 15|app: 0|req: 3/36] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:51:49 2017] GET /v1/boot/72:b7:ee:c8:01:02 => generated 233 bytes in 1 msecs (HTTP/1.1 404) 2 headers in 72 bytes (1 switches on core 0)
/v1/boot/ response time: 0.00031

I added response times for the API server endpoint as well to see if there's something I was missing. It's a pretty simple flask app (also running in a container) that looks for known MACs and returns the kernel, initrd, and cmdline JSON as required.

Manual pxe boot

Simulated with pxe command line's imgfetch and boot as in my original post...this will kick off the pieces of pixeicore where we can see the timings you've added (thanks again btw.)

pixiecore logs
2017/03/02 02:52:29 [HTTP] Get bootspec for 72:b7:ee:c8:01:01 took 2.732669255s
2017/03/02 02:52:29 [HTTP] Construct ipxe script for 72:b7:ee:c8:01:01 took 37.088µs
2017/03/02 02:52:29 [HTTP] Sending ipxe boot script to 10.10.20.101:36405
2017/03/02 02:52:29 [HTTP] Writing ipxe script to 72:b7:ee:c8:01:01 took 7.335µs
2017/03/02 02:52:29 [HTTP] handleIpxe for 72:b7:ee:c8:01:01 took 2.732765971s
2017/03/02 02:52:29 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
2017/03/02 02:52:29 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
2017/03/02 02:52:39 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
2017/03/02 02:52:46 [HTTP] Sent file "28LvdxRaYWr7Bhjne2Xnn5lU6ux-OZ5hddBol-4Qe5WRnA_iDF6crWV6Kl_hojAie8DLEwhJGvMIEpt4g6I=" to 10.10.20.101:14641
2017/03/02 02:52:46 [HTTP] Sent file "AEnCozVS3e6Xu14X1zWXTFS0hdZnT7iEq020eDAPjqNfCyBabaU44xwyivAUkyZo7dvsh_wRbsSzyqMEKM8pacA=" to 10.10.20.101:14641
2017/03/02 02:52:49 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
2017/03/02 02:52:59 [DHCP] Couldn't get bootspec for 72:b7:ee:c8:01:02: http://localhost:9091/v1/boot/72:b7:ee:c8:01:02: Not Found
2017/03/02 02:53:09 [DHCP] Offering to boot 72:b7:ee:c8:01:01
2017/03/02 02:53:09 [DHCP] Offering to boot 72:b7:ee:c8:01:01
2017/03/02 02:53:09 [DHCP] Offering to boot 72:b7:ee:c8:01:01
2017/03/02 02:53:09 [DHCP] Offering to boot 72:b7:ee:c8:01:01
2017/03/02 02:53:09 [DHCP] Ignoring packet from 72:b7:ee:c8:01:01: packet is DHCPREQUEST, not DHCPDISCOVER
2017/03/02 02:53:09 [DHCP] Ignoring packet from 72:b7:ee:c8:01:01: packet is DHCPREQUEST, not DHCPDISCOVER
2017/03/02 02:53:09 [DHCP] Ignoring packet from 72:b7:ee:c8:01:01: not a PXE boot request (missing option 93)
2017/03/02 02:53:09 [DHCP] Ignoring packet from 72:b7:ee:c8:01:01: not a PXE boot request (missing option 93)
2017/03/02 02:53:09 [DHCP] Ignoring packet from 72:b7:ee:c8:01:01: packet is DHCPREQUEST, not DHCPDISCOVER
2017/03/02 02:53:09 [DHCP] Ignoring packet from 72:b7:ee:c8:01:01: packet is DHCPREQUEST, not DHCPDISCOVER
2017/03/02 02:53:09 [DHCP] Ignoring packet from 72:b7:ee:c8:01:02: not a PXE boot request (missing option 93)
2017/03/02 02:53:09 [DHCP] Ignoring packet from 72:b7:ee:c8:01:02: not a PXE boot request (missing option 93)
2017/03/02 02:53:09 [DHCP] Ignoring packet from 72:b7:ee:c8:01:02: not a PXE boot request (missing option 93)
2017/03/02 02:53:09 [DHCP] Ignoring packet from 72:b7:ee:c8:01:02: not a PXE boot request (missing option 93)
2017/03/02 02:53:09 [DHCP] Ignoring packet from 72:b7:ee:c8:01:02: not a PXE boot request (missing option 93)
2017/03/02 02:53:09 [DHCP] Ignoring packet from 72:b7:ee:c8:01:02: not a PXE boot request (missing option 93)
pixiecore API server logs
[pid: 13|app: 0|req: 7/44] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:52:29 2017] GET /v1/boot/72:b7:ee:c8:01:01 => generated 237 bytes in 0 msecs (HTTP/1.1 200) 2 headers in 72 bytes (2 switches on core 1)
[pid: 13|app: 0|req: 8/45] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:52:29 2017] GET /v1/boot/72:b7:ee:c8:01:02 => generated 233 bytes in 3 msecs (HTTP/1.1 404) 2 headers in 72 bytes (1 switches on core 0)
[pid: 13|app: 0|req: 9/46] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:52:29 2017] GET /v1/boot/72:b7:ee:c8:01:02 => generated 233 bytes in 0 msecs (HTTP/1.1 404) 2 headers in 72 bytes (1 switches on core 0)
[pid: 13|app: 0|req: 10/47] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:52:39 2017] GET /v1/boot/72:b7:ee:c8:01:02 => generated 233 bytes in 0 msecs (HTTP/1.1 404) 2 headers in 72 bytes (1 switches on core 0)
[pid: 14|app: 0|req: 17/48] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:52:49 2017] GET /v1/boot/72:b7:ee:c8:01:02 => generated 233 bytes in 0 msecs (HTTP/1.1 404) 2 headers in 72 bytes (1 switches on core 1)
[pid: 14|app: 0|req: 18/49] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:52:59 2017] GET /v1/boot/72:b7:ee:c8:01:02 => generated 233 bytes in 1 msecs (HTTP/1.1 404) 2 headers in 72 bytes (1 switches on core 0)
/v1/boot/ response time: 0.00021
[pid: 15|app: 0|req: 5/50] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:53:09 2017] GET /v1/boot/72:b7:ee:c8:01:01 => generated 237 bytes in 0 msecs (HTTP/1.1 200) 2 headers in 72 bytes (2 switches on core 0)
/v1/boot/ response time: 0.00017
[pid: 8|app: 0|req: 18/51] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:53:09 2017] GET /v1/boot/72:b7:ee:c8:01:01 => generated 237 bytes in 0 msecs (HTTP/1.1 200) 2 headers in 72 bytes (2 switches on core 0)
/v1/boot/ response time: 0.00013
[pid: 8|app: 0|req: 19/52] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:53:09 2017] GET /v1/boot/72:b7:ee:c8:01:01 => generated 237 bytes in 0 msecs (HTTP/1.1 200) 2 headers in 72 bytes (2 switches on core 1)
/v1/boot/ response time: 0.00013
[pid: 8|app: 0|req: 20/53] 172.17.0.1 () {32 vars in 405 bytes} [Thu Mar  2 02:53:09 2017] GET /v1/boot/72:b7:ee:c8:01:01 => generated 237 bytes in 0 msecs (HTTP/1.1 200) 2 headers in 72 bytes (2 switches on core 1)

@abemusic
Copy link
Author

abemusic commented Mar 2, 2017

I've also made a screen capture of the proxmox boot along with two shells with the logs for pixiecore and the API server if that would be helpful. It shows the net0 device getting network info from DHCP and then about a 10 second delay before pixiecore logs anything which is odd to me and might point to the issue.

@abemusic
Copy link
Author

abemusic commented Mar 2, 2017

I just ran a tcpdump to catch what's going on during a pxe autoboot that fails and noticed that a DHCP Offer with the boot filename to pixiecore's ipxe endpoint doesn't happen until 10 seconds into the stream. By that time my pxe client has already given up it would appear.

We noticed there was a good amount of time spent waiting on DNS before that boot filename packet came by, so we started poking around. strace on pixiecore showed some DNS things happening, so as a test we changed pixiecore container's nameserver to 127.0.0.1 and it booted right up. We'll keep looking at this on our end, but if you have any thoughts/ideas please let us know! Appreciate the time and help :)

@danderson
Copy link
Owner

Hmm, interesting. Looking at the logs (the first set, where the machine is trying to boot autonomously), Pixiecore never progresses past the ProxyDHCP stage when you boot autonomously. Your API server is responding ~instantly when Pixiecore requests, so that implies (as you discovered) that the delay is between the DHCPDISCOVER and Pixiecore's DHCPOFFER response. The only blocking thing that happens in that interval is the request to the API server.

The DNS nameserver configuration is a very good candidate for the problem. My guess of what's happening is that something in the DNS resolution path is failing, and after a 10s timeout the query falls through to something else that succeeds (e.g. a second nameserver that resolves correctly). I can't prove it because pixiecore's logs don't log timing data about the API request in the DHCP codepath :(.

I've pushed another change that adds logging around the API request made during DHCP, if you retry with 63c4bab included, you should get some data about that request as well.

My theory on what's happening is that your container's DNS configuration is pointing to a non-responsive resolver, so when Pixiecore tries to dial "localhost:9091", the DNS resolution takes 10s to time out. I'm not sure why Pixiecore would then succeed after 10s, I'm guessing it either falls through to a second resolver that works, or ends up getting a useful answer somewhere in /etc/nsswitch.conf.

It's strange that this (suspected) DNS timeout doesn't trigger the 5s timeout on the HTTP client, the documentation says that it should... My guess is the documentation is inaccurate, and I should be providing dial timeouts to the http.RoundTripper as well...

What container kind are you using (docker, rkt, systemd...) ? Can you share its configuration (and if applicable, how you build pixiecore) ? I'd like to replicate the configuration where you were seeing DNS issues, so I can look more precisely at what's going on.

Also, what was the contents of /etc/resolv.conf in the container before you changed it to 127.0.0.1? Was there >1 nameserver line?

@abemusic
Copy link
Author

abemusic commented Mar 2, 2017

I'll take a look at your recent commit and build the image to test in our environment. For completeness, here's a screenshot of the wireshark stream: http://imgur.com/a/te44X

What container kind are you using (docker, rkt, systemd...) ?

We're using docker in a small kubernetes cluster.

how you build pixiecore

Just using the latest danderson/pixiecore image from docker hub at the moment.

Can you share its configuration

We're running in kubernetes, but the pod manifest specifices the following arguments to pixiecore along with two mounted volumes: one for the kernel and initrd images we want to serve using the file:// protocol and the other volume is for overriding /etc/resolv.conf (a temporary solution at the moment.)

/usr/local/bin/pixiecore api -d -p 9090 -t -l 0.0.0.0 --dhcp-no-bind --api-request-timeout 30s http://localhost:9091

what was the contents of /etc/resolv.conf

It was our internal lab nameserver 10.18.183.40 that you can see in the link to a screenshot of the wireshark stream. No additional nameserver was being used. When we changed the resolv.conf to 127.0.0.1 the DHCPOFFER response came in at <<1s. Very strange, but glad we're making progress :)

@abemusic
Copy link
Author

abemusic commented Mar 3, 2017

Here's an updated log with the automated net boot that's timing out due to the DNS and using the latest pixiecore container:

2017/03/03 16:11:24 [Init] Starting Pixiecore goroutines
2017/03/03 16:16:01 [DHCP] Got valid request to boot 72:ab:ee:00:01:01 (IA32)
2017/03/03 16:16:21 [DHCP] Offering to boot 72:ab:ee:00:01:01
2017/03/03 16:16:21 [DHCP] Got valid request to boot 72:ab:ee:00:01:01 (IA32)
2017/03/03 16:16:21 [DHCP] Offering to boot 72:ab:ee:00:01:01
2017/03/03 16:16:21 [DHCP] Got valid request to boot 72:ab:ee:00:01:01 (IA32)
2017/03/03 16:16:21 [DHCP] Offering to boot 72:ab:ee:00:01:01
2017/03/03 16:16:21 [DHCP] Got valid request to boot 72:ab:ee:00:01:01 (IA32)
2017/03/03 16:16:21 [DHCP] Offering to boot 72:ab:ee:00:01:01
2017/03/03 16:16:21 [DHCP] Ignoring packet from 72:ab:ee:00:01:01: packet is DHCPREQUEST, not DHCPDISCOVER
2017/03/03 16:16:21 [DHCP] Ignoring packet from 72:ab:ee:00:01:01: packet is DHCPREQUEST, not DHCPDISCOVER

@abemusic
Copy link
Author

abemusic commented Mar 3, 2017

We've updated our workflow to override the pixiecore container's /etc/resolv.conf with just 127.0.0.1 as a nameserver. It works every time...we would love to be able to figure it out without hacking that in, but at least it lets us move forward while we investigate this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants