{"id":34953,"date":"2024-09-06T11:06:48","date_gmt":"2024-09-06T04:06:48","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/06\/tao-cau-hinh-coredns-tuy-chinh\/"},"modified":"2024-09-06T11:06:48","modified_gmt":"2024-09-06T04:06:48","slug":"tao-cau-hinh-coredns-tuy-chinh","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/06\/tao-cau-hinh-coredns-tuy-chinh\/","title":{"rendered":"T\u1ea1o c\u1ea5u h\u00ecnh CoreDNS t\u00f9y ch\u1ec9nh"},"content":{"rendered":"<h2 id=\"h-coredns-tronglke\">CoreDNS trongLKE<\/h2>\n<p>Linode Kubernetes Engine (LKE) cung c\u1ea5p kh\u1ea3 n\u0103ng ph\u00e2n gi\u1ea3i t\u00ean mi\u1ec1n n\u1ed9i b\u1ed9 ngay l\u1eadp t\u1ee9c th\u00f4ng qua CoreDNS, m\u1ed7i c\u1ee5m m\u1edbi \u0111\u1ec1u \u0111\u01b0\u1ee3c cung c\u1ea5p c\u1ea5u h\u00ecnh CoreDNS m\u1eb7c \u0111\u1ecbnh t\u1ed1i thi\u1ec3u, c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c t\u00f9y ch\u1ec9nh \u0111\u1ec3 ph\u00f9 h\u1ee3p v\u1edbi nhu c\u1ea7u kh\u1ed1i l\u01b0\u1ee3ng c\u00f4ng vi\u1ec7c c\u1ee7a b\u1ea1n.<\/p>\n<p><strong>Tr\u01b0\u1edbc khi b\u1ea1n b\u1eaft \u0111\u1ea7u<\/strong><\/p>\n<p>H\u01b0\u1edbng d\u1eabn n\u00e0y gi\u1ea3 \u0111\u1ecbnh r\u1eb1ng b\u1ea1n c\u00f3 c\u1ee5m Linode Kubernetes Engine (LKE) \u0111ang ho\u1ea1t \u0111\u1ed9ng tr\u00ean Linode v\u00e0 b\u1ea1n \u0111\u00e3 quen v\u1edbi Corefile, t\u1ec7p c\u1ea5u h\u00ecnh CoreDNS.<\/p>\n<ul>\n<li>C\u00e0i \u0111\u1eb7t Kubernetes CLI (kubectl) tr\u00ean m\u00e1y t\u00ednh c\u1ee5c b\u1ed9.<\/li>\n<\/ul>\n<ul>\n<li>L\u00e0m theo h\u01b0\u1edbng d\u1eabn trong H\u01b0\u1edbng d\u1eabn tri\u1ec3n khai v\u00e0 qu\u1ea3n l\u00fd c\u1ee5m b\u1eb1ng Linode Kubernetes Engine \u0111\u1ec3 k\u1ebft n\u1ed1i v\u1edbi c\u1ee5m LKE.<\/li>\n<li>\u0110\u1ea3m b\u1ea3o r\u1eb1ng Kubernetes CLI \u0111ang s\u1eed d\u1ee5ng \u0111\u00fang ng\u1eef c\u1ea3nh c\u1ee5m. Ch\u1ea1y l\u1ec7nh ph\u1ee5 get-contexts \u0111\u1ec3 ki\u1ec3m tra:<\/li>\n<\/ul>\n<p><code>kubectl config get-contexts<\/code><\/p>\n<h2>C\u1ea5u h\u00ecnh CoreDNS m\u1eb7c \u0111\u1ecbnh<\/h2>\n<p>B\u1ea1n c\u00f3 th\u1ec3 xem c\u1ea5u h\u00ecnh CoreDNS m\u1eb7c \u0111\u1ecbnh c\u1ee7a c\u1ee5m b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng l\u1ec7nh sau:<\/p>\n<pre class=\"wp-block-code\"><code>kubectl get configmap -n kube-system coredns-base -o yaml<\/code><\/pre>\n<p>\u0110\u1ea7u ra s\u1ebd gi\u1ed1ng nh\u01b0 sau:<\/p>\n<pre class=\"wp-block-code\"><code>apiVersion: v1<br>data:<br>Corefile: |<br>.:53 {<br>errors<br>health {<br>lameduck 5s<br>}<br>ready<br>kubernetes cluster.local in-addr.arpa ip6.arpa {<br>pods insecure<br>fallthrough in-addr.arpa ip6.arpa<br>ttl 30<br>}<br>prometheus :9153<br>forward . \/etc\/resolv.conf {<br>max_concurrent 1000<br>}<br>cache 30<br>loop<br>reload<br>loadbalance<br>import custom\/<em>.include } import custom\/<\/em>.server<br>kind: ConfigMap<br>metadata:<br>name: coredns-base<br>namespace: kube-system<br>&#91;\u2026]<\/code><\/pre>\n<p>C\u1ea5u h\u00ecnh CoreDNS m\u1eb7c \u0111\u1ecbnh n\u1eb1m trong tr\u01b0\u1eddng Corefile trong ConfigMap \u1edf tr\u00ean.<\/p>\n<p class=\"has-background\" style=\"background-color:#f8efd5\">Kh\u00f4ng s\u1eeda \u0111\u1ed5i B\u1ea3n \u0111\u1ed3 c\u1ea5u h\u00ecnh kube-system\/coredns-base \u0111i k\u00e8m v\u1edbi c\u1ee5m LKE c\u1ee7a b\u1ea1n. N\u00f3 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c kh\u00f4i ph\u1ee5c v\u1ec1 tr\u1ea1ng th\u00e1i ban \u0111\u1ea7u b\u1ea5t k\u1ef3 l\u00fac n\u00e0o m\u00e0 kh\u00f4ng c\u1ea7n th\u00f4ng b\u00e1o.<\/p>\n<h2>C\u1ea5u h\u00ecnh CoreDNS t\u00f9y ch\u1ec9nh<\/h2>\n<p>C\u1ea5u h\u00ecnh CoreDNS m\u1eb7c \u0111\u1ecbnh t\u1eadn d\u1ee5ng plugin nh\u1eadp CoreDNS \u0111\u1ec3 cho ph\u00e9p t\u00f9y ch\u1ec9nh. Ti\u1ec7n \u00edch m\u1edf r\u1ed9ng c\u1ea5u h\u00ecnh \u0111\u01b0\u1ee3c th\u00eam th\u00f4ng qua c\u00e1c tr\u01b0\u1eddng trong B\u1ea3n \u0111\u1ed3 c\u1ea5u h\u00ecnh kube-system\/coredns-custom:<\/p>\n<pre class=\"wp-block-code\"><code>apiVersion: v1<br>kind: ConfigMap<br>metadata:<br>name: coredns-custom<br>namespace: kube-system<br>data:<br>sample.include: |<br># Added to the .:53 default Server Block.<br>sample_a.server: |<br># Additional Server Block.<br>sample_b.server: |<br># Another Server Block.<\/code><\/pre>\n<ul>\n<li>C\u00e1c tr\u01b0\u1eddng c\u00f3 h\u1eadu t\u1ed1 .include \u0111\u01b0\u1ee3c th\u00eam v\u00e0o Kh\u1ed1i m\u00e1y ch\u1ee7 m\u1eb7c \u0111\u1ecbnh.<\/li>\n<\/ul>\n<ul>\n<li>C\u00e1c tr\u01b0\u1eddng c\u00f3 h\u1eadu t\u1ed1 .server \u0111\u01b0\u1ee3c th\u00eam d\u01b0\u1edbi d\u1ea1ng Kh\u1ed1i m\u00e1y ch\u1ee7 m\u1edbi.<\/li>\n<\/ul>\n<p><strong>T\u1ea1o c\u1ea5u h\u00ecnh t\u00f9y ch\u1ec9nh<\/strong><\/p>\n<p>T\u1ea1o m\u1ed9t t\u1ec7p k\u00ea khai cho B\u1ea3n \u0111\u1ed3 c\u1ea5u h\u00ecnh c\u00f3 t\u00ean coredns-custom trong kh\u00f4ng gian t\u00ean kube-system, v\u1edbi c\u1ea5u h\u00ecnh mong mu\u1ed1n. V\u00ec m\u1ee5c \u0111\u00edch c\u1ee7a h\u01b0\u1edbng d\u1eabn n\u00e0y, m\u1ed9t c\u1ea5u h\u00ecnh t\u00f9y ch\u1ec9nh m\u1eabu s\u1ebd \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng. L\u01b0u n\u00f3 d\u01b0\u1edbi d\u1ea1ng t\u1ec7p coredns-custom.yaml.<\/p>\n<pre class=\"wp-block-code\"><code>apiVersion: v1<br>kind: ConfigMap<br>metadata:<br>name: coredns-custom<br>namespace: kube-system<br>data:<br># Log all incoming DNS queries.<br>log.include: |<br>log<br># Private DNS resolution example. Handles FQDN resolutions for *.mydomain.com<br># Replace with the target IP address.<br>mydomain.server: |<br>mydomain.com.:53 {<br>forward .<br>}<\/code><\/pre>\n<p>\u00c1p d\u1ee5ng b\u1ea3ng k\u00ea khai ConfigMap \u1edf tr\u00ean:<\/p>\n<pre class=\"wp-block-code\"><code>kubectl apply -f coredns-custom.yaml<\/code><\/pre>\n<p class=\"has-background\" style=\"background-color:#cbf7e5\">CoreDNS s\u1ebd c\u1ed1 g\u1eafng t\u1ea3i l\u1ea1i c\u1ea5u h\u00ecnh trong v\u00f2ng 45 gi\u00e2y sau l\u1ea7n s\u1eeda \u0111\u1ed5i cu\u1ed1i c\u00f9ng.<\/p>\n<p>\u0110\u1ea3m b\u1ea3o c\u1ea5u h\u00ecnh t\u00f9y ch\u1ec9nh \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea3i:<\/p>\n<pre class=\"wp-block-code\"><code>kubectl logs -n kube-system -l k8s-app=kube-dns<\/code><\/pre>\n<p>\u0110\u1ed1i v\u1edbi c\u1ea5u h\u00ecnh t\u00f9y ch\u1ec9nh \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb \u1edf tr\u00ean, \u0111\u1ea7u ra s\u1ebd gi\u1ed1ng nh\u01b0 sau, sau khi qu\u00e1 tr\u00ecnh t\u1ea3i l\u1ea1i ho\u00e0n t\u1ea5t:<\/p>\n<pre class=\"wp-block-code\"><code>&#91;INFO] Reloading<br>&#91;INFO] plugin\/health: Going into lameduck mode for 5s<br>&#91;INFO] 127.0.0.1:60399 - 40866 \"HINFO IN 349145763287755047.2816822520842364744. udp 56 false 512\" NXDOMAIN qr,rd,ra 131 0.000980597s<br>&#91;INFO] plugin\/reload: Running configuration SHA512 = 868c96ccca274c442fefc8db8e98b1f4a5cd05c655db1d990803d4019e5d28af101b24a78f85bae7ab3a3f8894f2791fda9d2b4d9c6ae1aa942080e1a88ce3e6<br>&#91;INFO] Reloading complete<\/code><\/pre>\n<p>C\u1ea5u h\u00ecnh t\u00f9y ch\u1ec9nh hi\u1ec7n c\u00f3 hi\u1ec7u l\u1ef1c.<\/p>\n<p><strong>Kh\u00f4i ph\u1ee5c m\u1eb7c \u0111\u1ecbnh<\/strong><\/p>\n<p>\u0110\u1ec3 kh\u00f4i ph\u1ee5c c\u1ea5u h\u00ecnh CoreDNS m\u1eb7c \u0111\u1ecbnh, ch\u1ec9 c\u1ea7n x\u00f3a B\u1ea3n \u0111\u1ed3 c\u1ea5u h\u00ecnh t\u00f9y ch\u1ec9nh coredns:<\/p>\n<pre class=\"wp-block-code\"><code>kubectl delete -n kube-system coredns-custom<\/code><\/pre>\n<p>Ki\u1ec3m tra nh\u1eadt k\u00fd \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o t\u1ea3i l\u1ea1i th\u00e0nh c\u00f4ng:<\/p>\n<pre class=\"wp-block-code\"><code>kubectl logs -n kube-system -l k8s-app=kube-dns<\/code><\/pre>\n<p>K\u1ebft qu\u1ea3 \u0111\u1ea7u ra tr\u00f4ng t\u01b0\u01a1ng t\u1ef1 nh\u01b0 k\u1ebft qu\u1ea3 \u0111\u01b0\u1ee3c ph\u00e1t ra sau khi \u00e1p d\u1ee5ng c\u1ea5u h\u00ecnh t\u00f9y ch\u1ec9nh.<\/p>\n<pre class=\"wp-block-code\"><code>&#91;INFO] Reloading<br>&#91;INFO] plugin\/health: Going into lameduck mode for 5s<br>&#91;WARNING] No files matching import glob pattern: custom\/<em>.include &#91;WARNING] No files matching import glob pattern: custom\/<\/em>.server<br>&#91;INFO] plugin\/reload: Running configuration SHA512 = 591cf328cccc12bc490481273e738df59329c62c0b729d94e8b61db9961c2fa5f046dd37f1cf888b953814040d180f52594972691cd6ff41be96639138a43908<br>&#91;INFO] Reloading complete<\/code><\/pre>\n<p>C\u00e1c th\u00f4ng b\u00e1o c\u1ea3nh b\u00e1o \u0111\u01b0\u1ee3c ph\u00e1t ra hi\u1ec7n \u0111\u00e3 \u0111\u01b0\u1ee3c mong \u0111\u1ee3i v\u00e0 kh\u00f4ng ph\u1ea3i l\u00e0 v\u1ea5n \u0111\u1ec1 \u0111\u00e1ng lo ng\u1ea1i.<\/p>\n<p>Ngu\u1ed3n: https:\/\/techdocs.akamai.com\/cloud-computing\/docs\/coredns-custom-config<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CoreDNS trongLKE Linode Kubernetes Engine (LKE) cung c\u1ea5p kh\u1ea3 n\u0103ng ph\u00e2n gi\u1ea3i t\u00ean mi\u1ec1n n\u1ed9i b\u1ed9 ngay l\u1eadp t\u1ee9c th\u00f4ng qua CoreDNS, m\u1ed7i c\u1ee5m m\u1edbi \u0111\u1ec1u \u0111\u01b0\u1ee3c cung c\u1ea5p c\u1ea5u h\u00ecnh CoreDNS m\u1eb7c \u0111\u1ecbnh t\u1ed1i thi\u1ec3u, c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c t\u00f9y ch\u1ec9nh \u0111\u1ec3 ph\u00f9 h\u1ee3p v\u1edbi nhu c\u1ea7u kh\u1ed1i l\u01b0\u1ee3ng c\u00f4ng vi\u1ec7c c\u1ee7a b\u1ea1n. Tr\u01b0\u1edbc khi<\/p>\n","protected":false},"author":1,"featured_media":35953,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[79],"tags":[],"class_list":["post-34953","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linode-kubernetes-engine"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34953","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/comments?post=34953"}],"version-history":[{"count":0,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34953\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/35953"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=34953"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=34953"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=34953"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}