Skip to content

Commit 614cd1f

Browse files
authored
Merge pull request #22710 from ariscahyadi/id-local-admin-cluster-dns-custom
ID Localization for administer cluster - DNS custom nameserver
2 parents e1485cd + 78b8a24 commit 614cd1f

File tree

2 files changed

+262
-0
lines changed

2 files changed

+262
-0
lines changed
Lines changed: 262 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,262 @@
1+
---
2+
title: Kustomisasi Service DNS
3+
content_type: task
4+
min-kubernetes-server-version: v1.12
5+
---
6+
7+
<!-- overview -->
8+
Laman ini menjelaskan cara mengonfigurasi DNS
9+
{{< glossary_tooltip text="Pod" term_id="pod" >}} kamu dan menyesuaikan
10+
proses resolusi DNS pada klaster kamu.
11+
12+
## {{% heading "prerequisites" %}}
13+
14+
{{< include "task-tutorial-prereqs.md" >}}
15+
16+
Klaster kamu harus menjalankan tambahan (_add-on_) CoreDNS terlebih dahulu.
17+
[Migrasi ke CoreDNS](/docs/tasks/administer-cluster/coredns/#migrasi-ke-coredns)
18+
menjelaskan tentang bagaimana menggunakan `kubeadm` untuk melakukan migrasi dari `kube-dns`.
19+
20+
{{% version-check %}}
21+
22+
<!-- steps -->
23+
24+
## Pengenalan
25+
26+
DNS adalah Service bawaan dalam Kubernetes yang diluncurkan secara otomatis
27+
melalui _addon manager_
28+
[add-on klaster](http://releases.k8s.io/{{< param "githubbranch" >}}/cluster/addons/README.md).
29+
30+
Sejak Kubernetes v1.12, CoreDNS adalah server DNS yang direkomendasikan untuk menggantikan kube-dns. Jika klaster kamu
31+
sebelumnya menggunakan kube-dns, maka kamu mungkin masih menggunakan `kube-dns` daripada CoreDNS.
32+
33+
{{< note >}}
34+
Baik Service CoreDNS dan kube-dns diberi nama `kube-dns` pada _field_ `metadata.name`.
35+
Hal ini agar ada interoperabilitas yang lebih besar dengan beban kerja yang bergantung pada nama Service `kube-dns` lama untuk me-_resolve_ alamat internal ke dalam klaster. Dengan menggunakan sebuah Service yang bernama `kube-dns` mengabstraksi detail implementasi yang dijalankan oleh penyedia DNS di belakang nama umum tersebut.
36+
{{< /note >}}
37+
38+
Jika kamu menjalankan CoreDNS sebagai sebuah Deployment, maka biasanya akan ditampilkan sebagai sebuah Service Kubernetes dengan alamat IP yang statis.
39+
Kubelet meneruskan informasi DNS _resolver_ ke setiap Container dengan argumen `--cluster-dns=<dns-service-ip>`.
40+
41+
Nama DNS juga membutuhkan domain. Kamu dapat mengonfigurasi domain lokal di kubelet
42+
dengan argumen `--cluster-domain=<default-local-domain>`.
43+
44+
Server DNS mendukung _forward lookup_ (_record_ A dan AAAA), _port lookup_ (_record_ SRV), _reverse lookup_ alamat IP (_record_ PTR),
45+
dan lain sebagainya. Untuk informasi lebih lanjut, lihatlah [DNS untuk Service dan Pod](/id/docs/concepts/services-networking/dns-pod-service/).
46+
47+
Jika `dnsPolicy` dari Pod diatur menjadi `default`, itu berarti mewarisi konfigurasi resolusi nama
48+
dari Node yang dijalankan Pod. Resolusi DNS pada Pod
49+
harus berperilaku sama dengan Node tersebut.
50+
Tapi lihat [Isu-isu yang telah diketahui](/docs/tasks/debug-application-cluster/dns-debugging-resolution/#known-issues).
51+
52+
Jika kamu tidak menginginkan hal ini, atau jika kamu menginginkan konfigurasi DNS untuk Pod berbeda, kamu bisa
53+
menggunakan argumen `--resolv-conf` pada kubelet. Atur argumen ini menjadi "" untuk mencegah Pod tidak
54+
mewarisi konfigurasi DNS. Atur ke jalur (_path_) berkas yang tepat untuk berkas yang berbeda dengan
55+
`/etc/resolv.conf` untuk menghindari mewarisi konfigurasi DNS.
56+
57+
## CoreDNS
58+
59+
CoreDNS adalah server DNS otoritatif untuk kegunaan secara umum yang dapat berfungsi sebagai Service DNS untuk klaster, yang sesuai dengan [spesifikasi dns](https://github.com/kubernetes/dns/blob/master/docs/specification.md).
60+
61+
### Opsi ConfigMap pada CoreDNS
62+
63+
CoreDNS adalah server DNS yang modular dan mudah dipasang, dan setiap _plugin_ dapat menambahkan fungsionalitas baru ke CoreDNS.
64+
Fitur ini dapat dikonfigurasikan dengan menjaga berkas [Corefile](https://coredns.io/2017/07/23/corefile-explained/), yang merupakan
65+
berkas konfigurasi dari CoreDNS. Sebagai administrator klaster, kamu dapat memodifikasi
66+
{{< glossary_tooltip text="ConfigMap" term_id="configmap" >}} untuk Corefile dari CoreDNS dengan mengubah cara perilaku pencarian Service DNS
67+
pada klaster tersebut.
68+
69+
Di Kubernetes, CoreDNS diinstal dengan menggunakan konfigurasi Corefile bawaan sebagai berikut:
70+
71+
```yaml
72+
apiVersion: v1
73+
kind: ConfigMap
74+
metadata:
75+
name: coredns
76+
namespace: kube-system
77+
data:
78+
Corefile: |
79+
.:53 {
80+
errors
81+
health {
82+
lameduck 5s
83+
}
84+
ready
85+
kubernetes cluster.local in-addr.arpa ip6.arpa {
86+
pods insecure
87+
fallthrough in-addr.arpa ip6.arpa
88+
ttl 30
89+
}
90+
prometheus :9153
91+
forward . /etc/resolv.conf
92+
cache 30
93+
loop
94+
reload
95+
loadbalance
96+
}
97+
```
98+
99+
Konfigurasi Corefile meliputi [_plugin_](https://coredns.io/plugins/) berikut ini dari CoreDNS:
100+
101+
* [errors](https://coredns.io/plugins/errors/): Kesalahan yang ditampilkan ke output standar (_stdout_)
102+
* [health](https://coredns.io/plugins/health/): Kesehatan dari CoreDNS dilaporkan pada `http://localhost:8080/health`. Dalam sintaks yang diperluas `lameduck` akan menangani proses tidak sehat agar menunggu selama 5 detik sebelum proses tersebut dimatikan.
103+
* [ready](https://coredns.io/plugins/ready/): _Endpoint_ HTTP pada port 8181 akan mengembalikan OK 200, ketika semua _plugin_ yang dapat memberi sinyal kesiapan, telah memberikan sinyalnya.
104+
* [kubernetes](https://coredns.io/plugins/kubernetes/): CoreDNS akan menjawab pertanyaan (_query_) DNS berdasarkan IP Service dan Pod pada Kubernetes. Kamu dapat menemukan [lebih detail](https://coredns.io/plugins/kubernetes/) tentang _plugin_ itu dalam situs web CoreDNS. `ttl` memungkinkan kamu untuk mengatur TTL khusus untuk respon dari pertanyaan DNS. Standarnya adalah 5 detik. TTL minimum yang diizinkan adalah 0 detik, dan maksimum hanya dibatasi sampai 3600 detik. Mengatur TTL ke 0 akan mencegah _record_ untuk di simpan sementara dalam _cache_.
105+
Opsi `pods insecure` disediakan untuk kompatibilitas dengan Service _kube-dns_ sebelumnya. Kamu dapat menggunakan opsi `pods verified`, yang mengembalikan _record_ A hanya jika ada Pod pada Namespace yang sama untuk alamat IP yang sesuai. Opsi `pods disabled` dapat digunakan jika kamu tidak menggunakan _record_ Pod.
106+
* [prometheus](https://coredns.io/plugins/metrics/): Metrik dari CoreDNS tersedia pada `http://localhost:9153/metrics` dalam format yang sesuai dengan [Prometheus](https://prometheus.io/) (dikenal juga sebagai OpenMetrics).
107+
* [forward](https://coredns.io/plugins/forward/): Setiap pertanyaan yang tidak berada dalam domain klaster Kubernetes akan diteruskan ke _resolver_ yang telah ditentukan dalam berkas (/etc/resolv.conf).
108+
* [cache](https://coredns.io/plugins/cache/): Ini untuk mengaktifkan _frontend cache_.
109+
* [loop](https://coredns.io/plugins/loop/): Mendeteksi _forwarding loop_ sederhana dan menghentikan proses CoreDNS jika _loop_ ditemukan.
110+
* [reload](https://coredns.io/plugins/reload): Mengizinkan _reload_ otomatis Corefile yang telah diubah. Setelah kamu mengubah konfigurasi ConfigMap, beri waktu sekitar dua menit agar perubahan yang kamu lakukan berlaku.
111+
* [loadbalance](https://coredns.io/plugins/loadbalance): Ini adalah _load balancer_ DNS secara _round-robin_ yang mengacak urutan _record_ A, AAAA, dan MX dalam setiap responnya.
112+
113+
Kamu dapat memodifikasi perilaku CoreDNS bawaan dengan memodifikasi ConfigMap.
114+
115+
### Konfigurasi _Stub-domain_ dan _Nameserver Upstream_ dengan menggunakan CoreDNS
116+
117+
CoreDNS memiliki kemampuan untuk mengonfigurasi _stubdomain_ dan _nameserver upstream_ dengan menggunakan [_plugin_ forward](https://coredns.io/plugins/forward/).
118+
119+
#### Contoh
120+
121+
Jika operator klaster memiliki sebuah server domain [Consul](https://www.consul.io/) yang terletak di 10.150.0.1, dan semua nama Consul memiliki akhiran .consul.local. Untuk mengonfigurasinya di CoreDNS, administrator klaster membuat bait (_stanza_) berikut dalam ConfigMap CoreDNS.
122+
123+
```
124+
consul.local:53 {
125+
errors
126+
cache 30
127+
forward . 10.150.0.1
128+
}
129+
```
130+
131+
Untuk memaksa secara eksplisit semua pencarian DNS _non-cluster_ melalui _nameserver_ khusus pada 172.16.0.1, arahkan `forward` ke _nameserver_ bukan ke `/etc/resolv.conf`
132+
133+
```
134+
forward . 172.16.0.1
135+
```
136+
137+
ConfigMap terakhir bersama dengan konfigurasi `Corefile` bawaan terlihat seperti berikut:
138+
139+
```yaml
140+
apiVersion: v1
141+
kind: ConfigMap
142+
metadata:
143+
name: coredns
144+
namespace: kube-system
145+
data:
146+
Corefile: |
147+
.:53 {
148+
errors
149+
health
150+
kubernetes cluster.local in-addr.arpa ip6.arpa {
151+
pods insecure
152+
fallthrough in-addr.arpa ip6.arpa
153+
}
154+
prometheus :9153
155+
forward . 172.16.0.1
156+
cache 30
157+
loop
158+
reload
159+
loadbalance
160+
}
161+
consul.local:53 {
162+
errors
163+
cache 30
164+
forward . 10.150.0.1
165+
}
166+
```
167+
168+
Perangkat `kubeadm` mendukung terjemahan otomatis dari ConfigMap kube-dns
169+
ke ConfigMap CoreDNS yang setara.
170+
171+
{{< note >}}
172+
Sementara ini kube-dns dapat menerima FQDN untuk _stubdomain_ dan _nameserver_ (mis: ns.foo.com), namun CoreDNS belum mendukung fitur ini.
173+
Selama penerjemahan, semua _nameserver_ FQDN akan dihilangkan dari konfigurasi CoreDNS.
174+
{{< /note >}}
175+
176+
## Konfigurasi CoreDNS yang setara dengan kube-dns
177+
178+
CoreDNS mendukung fitur kube-dns dan banyak lagi lainnya.
179+
ConfigMap dibuat agar kube-dns mendukung `StubDomains` dan `upstreamNameservers` untuk diterjemahkan ke _plugin_ `forward` dalam CoreDNS.
180+
Begitu pula dengan _plugin_ `Federations` dalam kube-dns melakukan translasi untuk _plugin_ `federation` dalam CoreDNS.
181+
182+
### Contoh
183+
184+
Contoh ConfigMap ini untuk kube-dns menentukan federasi, _stub domain_ dan server _upstream nameserver_:
185+
186+
```yaml
187+
apiVersion: v1
188+
data:
189+
federations: |
190+
{"foo" : "foo.feddomain.com"}
191+
stubDomains: |
192+
{"abc.com" : ["1.2.3.4"], "my.cluster.local" : ["2.3.4.5"]}
193+
upstreamNameservers: |
194+
["8.8.8.8", "8.8.4.4"]
195+
kind: ConfigMap
196+
```
197+
198+
Untuk konfigurasi yang setara dengan CoreDNS buat Corefile berikut:
199+
200+
* Untuk federasi:
201+
```
202+
federation cluster.local {
203+
foo foo.feddomain.com
204+
}
205+
```
206+
207+
* Untuk stubDomain:
208+
```yaml
209+
abc.com:53 {
210+
errors
211+
cache 30
212+
forward . 1.2.3.4
213+
}
214+
my.cluster.local:53 {
215+
errors
216+
cache 30
217+
forward . 2.3.4.5
218+
}
219+
```
220+
221+
Corefile lengkap dengan _plugin_ bawaan:
222+
223+
```
224+
.:53 {
225+
errors
226+
health
227+
kubernetes cluster.local in-addr.arpa ip6.arpa {
228+
pods insecure
229+
fallthrough in-addr.arpa ip6.arpa
230+
}
231+
federation cluster.local {
232+
foo foo.feddomain.com
233+
}
234+
prometheus :9153
235+
forward . 8.8.8.8 8.8.4.4
236+
cache 30
237+
}
238+
abc.com:53 {
239+
errors
240+
cache 30
241+
forward . 1.2.3.4
242+
}
243+
my.cluster.local:53 {
244+
errors
245+
cache 30
246+
forward . 2.3.4.5
247+
}
248+
```
249+
250+
## Migrasi ke CoreDNS
251+
252+
Untuk bermigrasi dari kube-dns ke CoreDNS,
253+
[artikel blog](https://coredns.io/2018/05/21/migration-from-kube-dns-to-coredns/) yang detail
254+
tersedia untuk membantu pengguna mengadaptasi CoreDNS sebagai pengganti dari kube-dns.
255+
256+
Kamu juga dapat bermigrasi dengan menggunakan
257+
[skrip _deploy_](https://github.com/coredns/deployment/blob/master/kubernetes/deploy.sh) CoreDNS yang resmi.
258+
259+
260+
## {{% heading "whatsnext" %}}
261+
262+
- Baca [_Debugging_ Resolusi DNS](/docs/tasks/administer-cluster/dns-debugging-resolution/)
28.1 KB
Loading

0 commit comments

Comments
 (0)