2017-11-10 12 views
0

kube-system NS에 kube-dns라는 구성 맵을 설치하고 일부 사용자 지정 업스트림 DNS 항목 x)하지만, 간단한 배포를 통해 컨테이너/포드를 예약 할 때 컨테이너/포드가 resolv.conf 파일에서이 사용자 지정 DNS 항목을 상속하지 않습니다.사용자 지정 kube-dns 구성 맵을 사용할 때 포드가 업스트림 DNS 또는 스텁 도메인을 수신하지 않는 것처럼 보입니다

kube-dns 포드의 로그가 설정 맵의 이름을 가리키고 있지 않습니다 (빈 문자열처럼 보입니다). 이것이 문제가 될 수 있습니까?

사용자 정의 구성 맵을 추가 한 후 kube-dns 포드를 삭제하고 기존의 kube-dns 배치가 포드를 다시 만들도록했습니다 (종료 된 kube-dns 포드는 2 x 세트가 있습니다. 다시 생성).

나는 나의 설정 맵을 설정하려면이 가이드를 사용 (I 1.6에 도입 된 기능을 중심으로 블로그 게시물) :

:

https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#configmap-options

다음

http://blog.kubernetes.io/2017/04/configuring-private-dns-zones-upstream-nameservers-kubernetes.html

내 설정지도입니다

apiVersion: v1 
kind: ConfigMap 
metadata: 
    name: kube-dns 
    namespace: kube-system 
data: 
    stubDomains: | 
    {"myinternaldomainhere.net": ["10.254.131.155"]} 
    upstreamNameservers: | 
    ["10.254.131.155", "8.8.8.8", "8.8.4.4"] 

kube-dns의 배포가 해당 이름을 참조하도록 지정해야하는 곳이 있습니까? 구성 맵? 포드 로그에서 config 맵 이름에 대한 플래그가 빈 문자열 인 것으로 나타났습니다. 나는 오래된 포드를 삭제 한 후 보았다 새로운 kubedns 포드에 대한

로그 (필자는 빈 문자열 참조를 참조 곳 통지 라인 5가) 말 :

I1110 16:35:35.685518  1 dns.go:48] version: 1.14.4-2-g5584e04 
I1110 16:35:35.686074  1 server.go:70] Using configuration read from directory: /kube-dns-config with period 10s 
I1110 16:35:35.686136  1 server.go:113] FLAG: --alsologtostderr="false" 
I1110 16:35:35.686148  1 server.go:113] FLAG: --config-dir="/kube-dns-config" 
I1110 16:35:35.686152  1 server.go:113] FLAG: --config-map="" 
I1110 16:35:35.686155  1 server.go:113] FLAG: --config-map-namespace="kube-system" 
I1110 16:35:35.686158  1 server.go:113] FLAG: --config-period="10s" 
I1110 16:35:35.686161  1 server.go:113] FLAG: --dns-bind-address="0.0.0.0" 
I1110 16:35:35.686164  1 server.go:113] FLAG: --dns-port="10053" 
I1110 16:35:35.686192  1 server.go:113] FLAG: --domain="cluster.local." 
I1110 16:35:35.686196  1 server.go:113] FLAG: --federations="" 
I1110 16:35:35.686200  1 server.go:113] FLAG: --healthz-port="8081" 
I1110 16:35:35.686202  1 server.go:113] FLAG: --initial-sync-timeout="1m0s" 
I1110 16:35:35.686205  1 server.go:113] FLAG: --kube-master-url="" 
I1110 16:35:35.686208  1 server.go:113] FLAG: --kubecfg-file="" 
I1110 16:35:35.686211  1 server.go:113] FLAG: --log-backtrace-at=":0" 
I1110 16:35:35.686236  1 server.go:113] FLAG: --log-dir="" 
I1110 16:35:35.686250  1 server.go:113] FLAG: --log-flush-frequency="5s" 
I1110 16:35:35.686257  1 server.go:113] FLAG: --logtostderr="true" 
I1110 16:35:35.686260  1 server.go:113] FLAG: --nameservers="" 
I1110 16:35:35.686262  1 server.go:113] FLAG: --stderrthreshold="2" 
I1110 16:35:35.686275  1 server.go:113] FLAG: --v="2" 
I1110 16:35:35.686281  1 server.go:113] FLAG: --version="false" 
I1110 16:35:35.686286  1 server.go:113] FLAG: --vmodule="" 
I1110 16:35:35.686459  1 server.go:176] Starting SkyDNS server (0.0.0.0:10053) 
I1110 16:35:35.686713  1 server.go:198] Skydns metrics enabled (/metrics:10055) 
I1110 16:35:35.686724  1 dns.go:147] Starting endpointsController 
I1110 16:35:35.686728  1 dns.go:150] Starting serviceController 
I1110 16:35:35.686924  1 logs.go:41] skydns: ready for queries on cluster.local. for tcp://0.0.0.0:10053 [rcache 0] 
I1110 16:35:35.686937  1 logs.go:41] skydns: ready for queries on cluster.local. for udp://0.0.0.0:10053 [rcache 0] 
I1110 16:35:36.187196  1 dns.go:171] Initialized services and endpoints from apiserver 
I1110 16:35:36.187215  1 server.go:129] Setting up Healthz Handler (/readiness) 
I1110 16:35:36.187221  1 server.go:134] Setting up cache handler (/cache) 
I1110 16:35:36.187226  1 server.go:120] Status HTTP port 8081 

포드 나는이에 대한 테스트를하고 설치가 이 기능을 사용하려면 문서에서 말하는 ClusterFirst DNS 유형을 사용하십시오.

문제를 찾을 위치와 관련된 조언이나 조언을 가장 환영받을 것입니다.

답변

3

나는 또한 블로그/튜토리얼을 읽었으며 설정 맵에서 kubectl apply -f your-dns-configmap.yaml을 실행해야한다는 언급은하지 못하는 것처럼 보입니다.

다음을 실행하면 kubectl get cm --namespace="kube-system"입니다. 설정 맵이 실제로 있는지 확인할 수 있습니다. 그것은 kube-dns라는 이름으로 나타납니다.

다른 문제가있어서 로그에 kube-dns 로그를 확인하라는 영감을 받았습니다. 내 로그 상단에 1 server.go:66] Using configuration read from ConfigMap: kube-system:kube-dns이 표시되지만 로그에 Using configuration read from directory: /kube-dns-config이 표시됩니다.

그래서 kube-dns가 설정 맵을 찾지 못하고 있으며 kube-dns 컨테이너 파일 시스템의 일부 설정을 기본값으로 사용하고 있습니다. 그 적용을 실행하고 cm 명령어를 얻은 다음 다시 시도하여 무슨 일이 일어나는지보십시오.

+0

감사합니다. saernz, 제 설정 맵을 얻는 것이 트릭이었습니다. kube-system NS에서 config 맵을 쿼리 할 때 이미 있었지만 실제로 적용되지 않았습니다. 앞서 언급했듯이 설명서와 블로그 게시물은이 부분을 남겨 두었으므로 구성 맵을 작성하고 자동으로 맵핑 될 것이라고 가정합니다. 다시 한 번 감사드립니다! – Shogan

+0

중요한 kubectl 적용 비밀 소스에 대한 Upvote –