Giter Site home page Giter Site logo

coredns.io's Introduction

CoreDNS

Documentation CodeQL Go Tests CircleCI Code Coverage Docker Pulls Go Report Card CII Best Practices

CoreDNS is a DNS server/forwarder, written in Go, that chains plugins. Each plugin performs a (DNS) function.

CoreDNS is a Cloud Native Computing Foundation graduated project.

CoreDNS is a fast and flexible DNS server. The key word here is flexible: with CoreDNS you are able to do what you want with your DNS data by utilizing plugins. If some functionality is not provided out of the box you can add it by writing a plugin.

CoreDNS can listen for DNS requests coming in over:

Currently CoreDNS is able to:

  • Serve zone data from a file; both DNSSEC (NSEC only) and DNS are supported (file and auto).
  • Retrieve zone data from primaries, i.e., act as a secondary server (AXFR only) (secondary).
  • Sign zone data on-the-fly (dnssec).
  • Load balancing of responses (loadbalance).
  • Allow for zone transfers, i.e., act as a primary server (file + transfer).
  • Automatically load zone files from disk (auto).
  • Caching of DNS responses (cache).
  • Use etcd as a backend (replacing SkyDNS) (etcd).
  • Use k8s (kubernetes) as a backend (kubernetes).
  • Serve as a proxy to forward queries to some other (recursive) nameserver (forward).
  • Provide metrics (by using Prometheus) (prometheus).
  • Provide query (log) and error (errors) logging.
  • Integrate with cloud providers (route53).
  • Support the CH class: version.bind and friends (chaos).
  • Support the RFC 5001 DNS name server identifier (NSID) option (nsid).
  • Profiling support (pprof).
  • Rewrite queries (qtype, qclass and qname) (rewrite and template).
  • Block ANY queries (any).
  • Provide DNS64 IPv6 Translation (dns64).

And more. Each of the plugins is documented. See coredns.io/plugins for all in-tree plugins, and coredns.io/explugins for all out-of-tree plugins.

Compilation from Source

To compile CoreDNS, we assume you have a working Go setup. See various tutorials if you don’t have that already configured.

First, make sure your golang version is 1.21 or higher as go mod support and other api is needed. See here for go mod details. Then, check out the project and run make to compile the binary:

$ git clone https://github.com/coredns/coredns
$ cd coredns
$ make

This should yield a coredns binary.

Compilation with Docker

CoreDNS requires Go to compile. However, if you already have docker installed and prefer not to setup a Go environment, you could build CoreDNS easily:

docker run --rm -i -t \
    -v $PWD:/go/src/github.com/coredns/coredns -w /go/src/github.com/coredns/coredns \
        golang:1.21 sh -c 'GOFLAGS="-buildvcs=false" make gen && GOFLAGS="-buildvcs=false" make'

The above command alone will have coredns binary generated.

Examples

When starting CoreDNS without any configuration, it loads the whoami and log plugins and starts listening on port 53 (override with -dns.port), it should show the following:

.:53
CoreDNS-1.6.6
linux/amd64, go1.16.10, aa8c32

The following could be used to query the CoreDNS server that is running now:

dig @127.0.0.1 -p 53 www.example.com

Any query sent to port 53 should return some information; your sending address, port and protocol used. The query should also be logged to standard output.

The configuration of CoreDNS is done through a file named Corefile. When CoreDNS starts, it will look for the Corefile from the current working directory. A Corefile for CoreDNS server that listens on port 53 and enables whoami plugin is:

.:53 {
    whoami
}

Sometimes port number 53 is occupied by system processes. In that case you can start the CoreDNS server while modifying the Corefile as given below so that the CoreDNS server starts on port 1053.

.:1053 {
    whoami
}

If you have a Corefile without a port number specified it will, by default, use port 53, but you can override the port with the -dns.port flag: coredns -dns.port 1053, runs the server on port 1053.

You may import other text files into the Corefile using the import directive. You can use globs to match multiple files with a single import directive.

.:53 {
    import example1.txt
}
import example2.txt

You can use environment variables in the Corefile with {$VARIABLE}. Note that each environment variable is inserted into the Corefile as a single token. For example, an environment variable with a space in it will be treated as a single token, not as two separate tokens.

.:53 {
    {$ENV_VAR}
}

A Corefile for a CoreDNS server that forward any queries to an upstream DNS (e.g., 8.8.8.8) is as follows:

.:53 {
    forward . 8.8.8.8:53
    log
}

Start CoreDNS and then query on that port (53). The query should be forwarded to 8.8.8.8 and the response will be returned. Each query should also show up in the log which is printed on standard output.

To serve the (NSEC) DNSSEC-signed example.org on port 1053, with errors and logging sent to standard output. Allow zone transfers to everybody, but specifically mention 1 IP address so that CoreDNS can send notifies to it.

example.org:1053 {
    file /var/lib/coredns/example.org.signed
    transfer {
        to * 2001:500:8f::53
    }
    errors
    log
}

Serve example.org on port 1053, but forward everything that does not match example.org to a recursive nameserver and rewrite ANY queries to HINFO.

example.org:1053 {
    file /var/lib/coredns/example.org.signed
    transfer {
        to * 2001:500:8f::53
    }
    errors
    log
}

. {
    any
    forward . 8.8.8.8:53
    errors
    log
}

IP addresses are also allowed. They are automatically converted to reverse zones:

10.0.0.0/24 {
    whoami
}

Means you are authoritative for 0.0.10.in-addr.arpa..

This also works for IPv6 addresses. If for some reason you want to serve a zone named 10.0.0.0/24 add the closing dot: 10.0.0.0/24. as this also stops the conversion.

This even works for CIDR (See RFC 1518 and 1519) addressing, i.e. 10.0.0.0/25, CoreDNS will then check if the in-addr request falls in the correct range.

Listening on TLS (DoT) and for gRPC? Use:

tls://example.org grpc://example.org {
    whoami
}

Similarly, for QUIC (DoQ):

quic://example.org {
    whoami
    tls mycert mykey
}

And for DNS over HTTP/2 (DoH) use:

https://example.org {
    whoami
    tls mycert mykey
}

in this setup, the CoreDNS will be responsible for TLS termination

you can also start DNS server serving DoH without TLS termination (plain HTTP), but beware that in such scenario there has to be some kind of TLS termination proxy before CoreDNS instance, which forwards DNS requests otherwise clients will not be able to communicate via DoH with the server

https://example.org {
    whoami
}

Specifying ports works in the same way:

grpc://example.org:1443 https://example.org:1444 {
    # ...
}

When no transport protocol is specified the default dns:// is assumed.

Community

We're most active on Github (and Slack):

More resources can be found:

Contribution guidelines

If you want to contribute to CoreDNS, be sure to review the contribution guidelines.

Deployment

Examples for deployment via systemd and other use cases can be found in the deployment repository.

Deprecation Policy

When there is a backwards incompatible change in CoreDNS the following process is followed:

  • Release x.y.z: Announce that in the next release we will make backward incompatible changes.
  • Release x.y+1.0: Increase the minor version and set the patch version to 0. Make the changes, but allow the old configuration to be parsed. I.e. CoreDNS will start from an unchanged Corefile.
  • Release x.y+1.1: Increase the patch version to 1. Remove the lenient parsing, so CoreDNS will not start if those features are still used.

E.g. 1.3.1 announce a change. 1.4.0 a new release with the change but backward compatible config. And finally 1.4.1 that removes the config workarounds.

Security

Security Audits

Third party security audits have been performed by:

Reporting security vulnerabilities

If you find a security vulnerability or any security related issues, please DO NOT file a public issue, instead send your report privately to [email protected]. Security reports are greatly appreciated and we will publicly thank you for it.

Please consult security vulnerability disclosures and security fix and release process document

coredns.io's People

Contributors

chrisohaver avatar cricketliu avatar fenggw-fnst avatar jiachengxu avatar johnbelamaric avatar marek22k avatar mariuskimmina avatar miekg avatar nagakonduri avatar networkop avatar nickel671 avatar nikopen avatar oz123 avatar palash25 avatar phealy avatar rajansandeep avatar rene00 avatar richih avatar sandeeprenjith avatar serverwentdown avatar stone-z avatar stp-ip avatar superq avatar superseb avatar vanekjar avatar varyoo avatar wenerme avatar xh4n3 avatar yongtang avatar zouyee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar

coredns.io's Issues

make buttons rounder

The button type could do with slightly more rounded corners to match our logo

Index in the manual

Would also be nice to have an index in/after the manual, with links back to where we explain terms. I.e. "Server Block" points to configuration.

Of course this should be done automatically some how.

need redesign

Now that we have a logo and are in cnfc we should redesign the wesite and add docs etc. etc.

Pref. this would still be hugo generated (and static). We should sketch out some ideas.

Add detailed installation documentation

What would you like to be added:

1、add docs about how to use coredns docker image,like

docker run -d --name coredns \
  --restart=always \
  -v /etc/coredns/:/etc/coredns/ \
  -p 192.168.72.15:53:53/udp \
  coredns/coredns:1.9.1 -conf /etc/coredns/Corefile

It took me a lot of time to find that i must use -conf /etc/coredns/Corefile , because coredns never report errors .

2、add docs about how to install with go binary,like

wget https://github.com/coredns/coredns/releases/download/v1.9.1/coredns_1.9.1_linux_amd64.tgz
tar -zxvf coredns_1.9.1_linux_amd64.tgz
mv coredns /usr/local/bin
cat >/etc/systemd/system/coredns.service<<EOF
[Unit]
Description=CoreDNS DNS server
Documentation=https://coredns.io
After=network.target
 
[Service]
PermissionsStartOnly=true
LimitNOFILE=1048576
LimitNPROC=512
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
User=coredns
WorkingDirectory=~
ExecStart=/usr/local/bin/coredns -conf=/etc/coredns/Corefile
ExecReload=/bin/kill -SIGUSR1
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF

Why is this needed:

official not say how to install :https://coredns.io/manual/toc/#installation

it not eays for a novice to use coredns as a local dns server.

building from external repo doesn't work

What happened:

In preparation for adding my own plugin as described in https://coredns.io/2017/07/25/compile-time-enabling-or-disabling-plugins/#build-with-external-golang-source-code I build coredns from an external repo (see code below). There's no Corefile in the directory.

❯ go run main.go
no action found for directive 'log' with server type 'dns' (missing a plugin?)
exit status 1

What you expected to happen:

I expected coredns to start.

How to reproduce it (as minimally and precisely as possible):

package main

import (
	"github.com/coredns/coredns/coremain"
)

func main() {
	coremain.Run()
}

Using coredns v1.9.0.

Anything else we need to know?:

Environment:

  • the version of CoreDNS: v1.9.0
  • Corefile: n/a
  • logs, if applicable: see above
  • OS (e.g: cat /etc/os-release): OSX (m1 mbp)
  • Others:

enable git pull

We should regularly pull the master branch using Caddy git plugin. This saves me from running git pl; make every so often.

I can't use make when trying unbound plugin

I've tried following these instructions: https://github.com/coredns/coredns.io/blob/master/content/manual/setups.md#recursive-resolver

In Fedora 30, I:

  • installed unbound-devel
  • tried using: go generate; make

The output is:

[renich@introdesk coredns]$ make
** presubmit/context
** presubmit/filename-hyphen
** presubmit/import-testing
** presubmit/test-lowercase
** presubmit/trailing-whitespace
CGO_ENABLED=0  go build -v -ldflags="-s -w -X github.com/coredns/coredns/coremain.GitCommit=1820c71f-dirty" -o coredns
github.com/miekg/unbound
# github.com/miekg/unbound
../../Projects/go/pkg/mod/github.com/miekg/[email protected]/dns.go:12:10: undefined: Unbound
../../Projects/go/pkg/mod/github.com/miekg/[email protected]/dns.go:16:10: undefined: Unbound
../../Projects/go/pkg/mod/github.com/miekg/[email protected]/dns.go:20:10: undefined: Unbound
../../Projects/go/pkg/mod/github.com/miekg/[email protected]/lookup.go:14:10: undefined: Unbound
../../Projects/go/pkg/mod/github.com/miekg/[email protected]/lookup.go:33:10: undefined: Unbound
../../Projects/go/pkg/mod/github.com/miekg/[email protected]/lookup.go:41:10: undefined: Unbound
../../Projects/go/pkg/mod/github.com/miekg/[email protected]/lookup.go:55:10: undefined: Unbound
../../Projects/go/pkg/mod/github.com/miekg/[email protected]/lookup.go:84:10: undefined: Unbound
../../Projects/go/pkg/mod/github.com/miekg/[email protected]/lookup.go:97:10: undefined: Unbound
../../Projects/go/pkg/mod/github.com/miekg/[email protected]/lookup.go:116:10: undefined: Unbound
../../Projects/go/pkg/mod/github.com/miekg/[email protected]/lookup.go:116:10: too many errors
make: *** [Makefile:17: coredns] Error 2

But, if I try:

go generate
go build

It works:

[renich@introdesk coredns]$ go generate
[renich@introdesk coredns]$ go build
[renich@introdesk coredns]$ ./coredns -plugins
Server types:
  dns

Caddyfile loaders:
  flag
  default

Other plugins:
  dns.acl
  dns.any
  dns.auto
  dns.autopath
  dns.azure
  dns.bind
  dns.cache
  dns.cancel
  dns.chaos
  dns.clouddns
  dns.debug
  dns.dnssec
  dns.dnstap
  dns.erratic
  dns.errors
  dns.etcd
  dns.federation
  dns.file
  dns.forward
  dns.grpc
  dns.health
  dns.hosts
  dns.k8s_external
  dns.kubernetes
  dns.loadbalance
  dns.log
  dns.loop
  dns.metadata
  dns.nsid
  dns.pprof
  dns.prometheus
  dns.ready
  dns.reload
  dns.rewrite
  dns.root
  dns.route53
  dns.secondary
  dns.sign
  dns.template
  dns.tls
  dns.trace
  dns.unbound
  dns.whoami
  on

artwork style

For the "CoreDNS manual" I would like to add some art work in CoreDNS' style. But we lack this currently. What I would seek is a bunch of shapes (box, "disc", "internet cloud", arrows) as svg (or whatever), so I can put something together in Gimp.

As an example we have: https://coredns.io/2017/06/08/how-queries-are-processed-in-coredns/
(one of the few posts with an image), but it could do with a touch of CoreDNS' styling.

coredns.io points to old release

On the start page of coredns.io it's said that version 1.8.7 from Dec 2021 is available for download however the latest version is 1.9.2.

semver and deprecation policy

Should write a short doc on out deprecation policy; when to make a backwards incompat change.

Rough consensus was after to minor release:
1.x: announce drop
1.x+1: make config a noop, but accept
1.x+2.0: remove config option

[Doc Issue] AMD64 only certificates installed

Howdy,

In the docs, it is stated:

Docker

We push every release as Docker images as well. You can find them in the public Docker hub for the CoreDNS organization.

Note that Docker images that are for architectures other than AMD64 don’t have any certificates installed. This means if you want to use CoreDNS on ARM and do things like DNS-over-TLS, you’ll need to create your own Docker image.

but this is not true. Using Dive on coredns/coredns@sha256:7eb40906c31a1610d9c1aeb5c818da5f68029f3e772ac226e2eac67965537017, the SHA256 on the latest AMR64 image, you can clearly see certs.

Make fails

Freshly cloned via git clone https://github.com/coredns/coredns coredns but then get the following make error
$ make
go generate coredns.go
go: go.etcd.io/[email protected] requires
github.com/gorilla/[email protected]: invalid version: git fetch --unshallow -f origin in /home/xxx/go/pkg/mod/cache/vcs/05a135b68662fe5806007c4d2c004f5ee90580f7b16dd1746b7f9ea52f9ebe01: exit status 128:
fatal: git fetch-pack: expected shallow list
make: *** [core/plugin/zplugin.go] Error 1

Longest suffix match description

https://github.com/coredns/coredns.io/blob/master/content/manual/plugins.md#L9-12

  1. If there are multiple Servers configured that listen on the queried port, it will check which one
    has the most specific zone for this query (longest suffix match). E.g. if there are two Servers,
    one for example.org and one for a.example.org, and the query is for www.b.example.org, it
    will be routed to the latter.

The query of www.b.example.org will be routed to the former.
I guess the query is for www.a.example.org .

Reverse plugin mention still present

Following PR #135 which dates from 2019, the mention of the deprecated reverse plugin is still present in the documentation at the URL https://coredns.io/plugins/reverse/

This URL appears at the top of search results when searching for keywords coredns, reverse dns and provides misleading information.

Since this page is not present in the source code of this repository, why is it still accessible?

Domain usage suggestion

With the Netlify change, I was thinking about domain usage.

My opinionated suggestion follows:

short term

about.coredns.io <- main page served via netlify
coredns.io <- redirect to main page to keep all old links working + enable short urls useable for presentations etc.

long term (optional)

release(s).coredns.io
issue(s).coredns.io
pr(s).coredns.io
git.coredns.io
go.coredns.io

Thoughts?

status for external plugins?

Right now I just add external plugins, without any vetting. Maybe some vetting would be welcomed.
Not sure how to display this on the site though.

Undocumented: federation

What would you like to be added:

A section of federation in https://coredns.io/explugins/

Why is this needed:

It should be found in the external plugins doc.

Docs: DNS record types without file plugin RFC 1035 zone file

While a useful plugin(file), it's not particularly nice to manage that kind of file manually. The hosts plugin works nicely for mapping an FQDN query to an IP, but lacks the ability to specify record types like MX or TXT?

The only other alternatives I've seen are sourcing from external software like Unbound, Redis, etc.

dnsmasq for example:

# Define the zone
auth-zone=example.com
# Set SOA record
auth-soa=12345678,admin.example.com
# Set A record
address=/www.example.com/10.2.3.4
# Set MX record
mx-host=example.com,www.example.com,10
# Set TXT record
txt-record=_acme-challenge.www.example.com,f0o...bar

Or with RFC 1035, MX records from zone file for using with mailgun can be(RFC 1035 - Section 5.1 Format rules to be aware of):

mg		IN MX	10 mxa.mailgun.org.
mg		IN MX	10 mxb.mailgun.org.
mg		IN TXT	"v=spf1 include:mailgun.org ~all"

Would there be a way to support such within the Corefile? (different record types, not the various formats supported by RFC 1035)

A plugin directive responding with record types? Currently hosts only supports A, AAAA, and PTR records. A similar plugin could probably extend that for handling other records? Or is this not something CoreDNS is suitable for and should be outsourced elsewhere as it seems to be encouraged?

I think the template plugin tries to show an example of doing this but it's rather verbose looking.

Manual redundant to project READMEs?

IMO, we don't need a separately authored/maintained manual.

If the project READMEs are lacking in areas, we should improve them there.
For example, I think we could expand/improve the main project readme with better documentation of the Corefile format.

If we want to have a separate manual "package", we should build out READMEs such that they can be compiled automatically into a portable manual ... But as a separately authored/manually maintained set of documents it creates a lot more busy work to author and maintain, essentially two sets of documentation.

Switch fully to Netlify

This is just a tracking and coordination issue, once we decide to switch beta.coredns.io to either coredns.io or about.coredns.io.

Sidenote. Netlify can redirect all incoming requests form coredns.io to about.coredns.io including TLS, if that's something we want.

Let me know if/when/how/what.

website render issue on Windows 7 + Chrome 78*

What happened:
hello, i was trying to read the release notes for the latest release on the website:
https://coredns.io/2020/06/15/coredns-1.7.0-release/
the page is not rendering correctly for me on Chrome.


screenshot1

coredns-page0


screenshot2

coredns-page


What you expected to happen:
the page renders correctly.

How to reproduce it (as minimally and precisely as possible):
a colleague of mine said that they don't have the same issue.
(possibly a newer version of Chrome + Windows 10)

Anything else we need to know?:

  • renders fine under Firefox.

if i "inspect" the page under Chrome and remove the usage of the "Lato" font the page renders correctly:
coredns-page-lato

Environment:

  • Windows 7 64bit
  • Chrome 78.0.4050.0

Update website footer

Should say

"© 2017 The CoreDNS Authors | Documentation Distributed under CC BY 4.0
Copyright © 2017 The Linux Foundation®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage"

Broken link to source for the metrics plugin as of November 10th 2021

Preface not sure if this is the correct repo to report a bug with the website.

When clicking the link for the source of the metrics plugin I get a 404 error on github. The link on the website is https://github.com/coredns/coredns/tree/master/plugin/prometheus when it should be https://github.com/coredns/coredns/tree/master/plugin/metrics.

Expected behavior:

clicking on the source link would take me to the source of the metrics plugin

What happened:

I was taken to a 404 page on github

Steps to reproduce:

  1. Go to the metrics plugin documentation here
  2. Click on the Source hyperlink (link is https://github.com/coredns/coredns/tree/master/plugin/prometheus)

I think the html template for the theme might be the issue as seen below

<p>
<i class="fa fa-code-fork" aria-hidden="true"></i> <a href="https://github.com/coredns/coredns/tree/master/plugin/{{ .Title }} ">Source</a>
</p>

Is that the title of the page is prometheus so the link you to https://github.com/coredns/coredns/tree/master/plugin/prometheus instead of https://github.com/coredns/coredns/tree/master/plugin/metrics.

It might make sense use the base path for the source link as the cannonical source footer as seen here

{{ if eq .File.Dir "plugins/" }}
<a href="https://github.com/coredns/coredns/blob/master/plugin/{{ .File.BaseFileName }}/README.md"> canonical source of this file</a>
{{ else }}

have a separate -dev docs page?

The current docs follow released version, but it may be helpful to also list the current dev docs, i.e.

  • coredns.io/middleware is latest released
  • coredns.io/dev/middleware is master

No idea how to do this in hugo though.

Blog on gRPC

I don't think we've fully explained how gRPC works in CoreDNS. Probably qualifies for an article.

remove potential mem overcommitment

When initializing the kubernetes-cluster with kubeadm, the resource-request and -limit for coredns differs. That can cause to mem overcommitment and oom-killed pods in the cluster.

In my case:

syslog:

[...]
[Mon Jul 13 04:07:15 2020] Memory cgroup out of memory: Kill process 48615 (mongod) score 1954 or sacrifice child
[...]
kubectl describe node drei
[...]
  kube-system                   coredns-66bff467f8-fcx9g               100m (5%)     0 (0%)      70Mi (0%)        170Mi (1%)       57d
[...]
  memory             16518324992 (98%)  16623182592 (99%)

My proposal is to set the limits to the same size as the requests.

forward /manual to /manual/toc

RIght manual/ works, but lists some useless stuff. It should forward to /manual/toc. Maybe put a 302 in there or otherwise to it in the caddy config.

Reminds me that I should put the caddy config in this repo as well.

request help: Cooperation invitation from Apache APISIX community

Hi community,

I am Jing Li, from the Apache APISIX community. Apache APISIX is a Cloud-native API gateway, and it is the top-level project of the Apache Software Foundation. You can get more details from GitHub: https://github.com/apache/apisix.

Apache APISIX has added CoreDNS as service discovery registery. I think it's a meaningful feature for both communities, as it enriches the surrounding ecology of CoreDNS and APISIX.

Rencently, we are writing a blog for this feature to explain in detail how to use it. It will be a nice guide for our developers. In addition, it will help Apache APISIX and CoreDNS publicize and let more developers and companies know about them. So I am wondering if I could post this blog on the CoreDNS's blog website when it's finalized.

Looking forward to your reply~

Difference between forward and proxy plugins is unclear

https://coredns.io/manual/toc/#forwarding says:

We currently have two plugins that allow for this, proxy and forward.

I read both https://coredns.io/plugins/forward/ and https://coredns.io/plugins/forward/ and the difference is still unclear to me. Their specs look almost identical.

I think the best way to help users decide would be:

  • in each plugin doc, refer to the other one and tell the difference
  • in /manual/toc/#forwarding , explain the difference

Unfortunately I cannot contribute to this as I am still trying to figure out the answer myself.

In high load Kubernetes containers doesn't use /etc/resolv.conf file.

What happened:
Container can't append search names from resolv.conf file for looked service in high load.Instead it sends the naked hostname as a questions to core-dns.

What you expected to happen:
For example , if I want to look for 'ms-hostname' service, I want it to send question like 'ms-hostname.default.svc.cluster.local.But instead in 100 requests, one of the requests is sent like 'ms-hostname'

Environment:

Kubernetes version (use kubectl version):
1.14

Cloud provider or hardware configuration:
AWS EKS

OS (e.g: cat /etc/os-release):
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
VERSION_CODENAME=stretch
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Kernel (e.g. uname -a):
Linux frankfurt-ms-users-1-v1-d594c7bd7-gcwx4 4.14.154-128.181.amzn2.x86_64 #1 SMP Sat Nov 16 21:49:00 UTC 2019 x86_64 GNU/Linux

Network plugin and version (if this is a network-related bug):
config map :

Name: coredns
Namespace: kube-system
Labels: eks.amazonaws.com/component=coredns
k8s-app=kube-dns
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","data":{"Corefile":".:53 {\n errors\n health\n kubernetes cluster.local in-addr.arpa ip6.arpa {\n pods in...

Data
Corefile:
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
proxy . /etc/resolv.conf
cache 30
}

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.