DNS แƒซแƒ˜แƒ”แƒ‘แƒ Kubernetes-แƒจแƒ˜

แฒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ. แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ: DNS แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ Kubernetes-แƒจแƒ˜, แƒฃแƒคแƒ แƒ แƒ–แƒฃแƒกแƒขแƒแƒ“, แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒจแƒ˜ ndots, แƒกแƒแƒแƒชแƒ แƒแƒ“ แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒฃแƒ™แƒ•แƒ” แƒแƒ แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒฌแƒ”แƒšแƒ˜. แƒกแƒฎแƒ•แƒ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒจแƒ˜ แƒแƒ› แƒ—แƒ”แƒ›แƒแƒ–แƒ”, แƒ›แƒ˜แƒกแƒ˜ แƒแƒ•แƒขแƒแƒ แƒ˜, DevOps แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒ˜ แƒ˜แƒœแƒ“แƒแƒ”แƒ—แƒ˜แƒก แƒ“แƒ˜แƒ“แƒ˜ แƒกแƒแƒ‘แƒ แƒแƒ™แƒ”แƒ แƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ˜แƒกแƒ’แƒแƒœ, แƒกแƒแƒฃแƒ‘แƒ แƒแƒ‘แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒ“ แƒ“แƒ แƒšแƒแƒ™แƒแƒœแƒฃแƒ แƒแƒ“ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒ แƒแƒ แƒ˜แƒก แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ Kubernetes-แƒ˜แƒก แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ˜ แƒ™แƒแƒšแƒ”แƒ’แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

DNS แƒซแƒ˜แƒ”แƒ‘แƒ Kubernetes-แƒจแƒ˜

Kubernetes-แƒ–แƒ” แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒฃแƒžแƒ˜แƒ แƒแƒขแƒ”แƒกแƒแƒ‘แƒแƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ. แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒฃแƒšแƒ˜ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ แƒ’แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ™แƒแƒœแƒชแƒ”แƒคแƒชแƒ˜แƒ˜แƒก แƒฌแƒงแƒแƒšแƒแƒ‘แƒ˜แƒ— (แƒกแƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ˜แƒก), แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ แƒ˜แƒก แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ IP, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก pod IP แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒ›แƒžแƒšแƒ”แƒฅแƒขแƒก. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ—แƒฃ แƒ›แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ vanilla แƒกแƒฃแƒ แƒก แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒก chocolate, แƒ›แƒแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  IP-แƒ–แƒ” chocolate. แƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ: แƒ•แƒ˜แƒก แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒก แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ DNS แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก chocolate แฒ“แƒ แƒ แƒแƒ’แƒแƒ ?

DNS แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒก แƒ’แƒแƒ แƒฉแƒ”แƒ•แƒแƒ“แƒแƒ‘แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ–แƒ” แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— CoreDNS. Kubelet แƒแƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒก แƒžแƒแƒ“แƒก CoreDNS-แƒ˜แƒ—, แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒจแƒ˜ /etc/resolv.conf แƒงแƒ•แƒ”แƒšแƒ แƒฆแƒ•แƒ”แƒ–แƒ”แƒšแƒ˜. แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒก แƒ—แƒฃ แƒ’แƒแƒ“แƒแƒฎแƒ”แƒ“แƒแƒ• /etc/resolv.conf แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒฏแƒ˜แƒจแƒ˜แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ:

search hello.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.152.183.10
options ndots:5

แƒแƒ› แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒœ DNS แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ DNS แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ“. แƒคแƒแƒ˜แƒšแƒจแƒ˜ resolv.conf แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก:

  • แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜: แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒช แƒ’แƒแƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ DNS แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜. แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ”แƒก แƒแƒ แƒ˜แƒก CoreDNS แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜;
  • แƒซแƒ˜แƒ”แƒ‘แƒ: แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ–แƒแƒก แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒแƒ แƒ แƒแƒ› google.com แƒแƒœ mrkaran.dev แƒแƒ  แƒแƒ แƒ˜แƒก FQDN (แƒกแƒ แƒฃแƒšแƒแƒ“ แƒ™แƒ•แƒแƒšแƒ˜แƒคแƒ˜แƒชแƒ˜แƒฃแƒ แƒ˜ แƒ“แƒแƒ›แƒ”แƒœแƒฃแƒ แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜). แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒ•แƒ”แƒœแƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ˜แƒชแƒแƒ•แƒก DNS แƒ’แƒแƒ“แƒแƒ›แƒฌแƒงแƒ•แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒแƒ‘แƒ, แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ—แƒแƒ•แƒ แƒ“แƒ”แƒ‘แƒ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜แƒ— ".", แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฌแƒแƒ แƒ›แƒแƒแƒ“แƒ’แƒ”แƒœแƒก root แƒ–แƒแƒœแƒแƒก, แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ แƒกแƒ แƒฃแƒšแƒแƒ“ แƒ™แƒ•แƒแƒšแƒ˜แƒคแƒ˜แƒชแƒ˜แƒฃแƒ แƒ˜ (FDQN) แƒ“แƒแƒ›แƒ”แƒœแƒ”แƒ‘แƒ˜. แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒ’แƒแƒ“แƒแƒ›แƒฌแƒงแƒ•แƒ”แƒขแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒžแƒฃแƒœแƒฅแƒขแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ. แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, mrkaran.dev. แƒแƒ แƒ˜แƒก แƒกแƒ แƒฃแƒšแƒแƒ“ แƒ™แƒ•แƒแƒšแƒ˜แƒคแƒ˜แƒชแƒ˜แƒฃแƒ แƒ˜ แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ (FQDN) แƒ“แƒ mrkaran.dev - แƒแƒ แƒ;
  • แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜: แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ (แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒแƒ แƒ˜แƒก แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘). ndots แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ–แƒฆแƒ•แƒ แƒฃแƒš แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒจแƒ˜, แƒกแƒแƒœแƒแƒ› แƒ˜แƒก แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ "แƒกแƒ แƒฃแƒšแƒแƒ“ แƒ™แƒ•แƒแƒšแƒ˜แƒคแƒ˜แƒชแƒ˜แƒฃแƒ " แƒ“แƒแƒ›แƒ”แƒœแƒฃแƒ  แƒกแƒแƒฎแƒ”แƒšแƒแƒ“. แƒแƒ›แƒแƒ–แƒ” แƒ“แƒแƒฌแƒ•แƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ— แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘แƒ—, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒแƒ•แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ— DNS แƒกแƒแƒซแƒ˜แƒ”แƒ‘แƒ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒแƒก.

DNS แƒซแƒ˜แƒ”แƒ‘แƒ Kubernetes-แƒจแƒ˜

แƒ•แƒœแƒแƒฎแƒแƒ— แƒ แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒชแƒ แƒ•แƒ™แƒ˜แƒ—แƒฎแƒแƒ•แƒ— mrkaran.dev แƒžแƒแƒ“แƒจแƒ˜:

$ nslookup mrkaran.dev
Server: 10.152.183.10
Address: 10.152.183.10#53

Non-authoritative answer:
Name: mrkaran.dev
Address: 157.230.35.153
Name: mrkaran.dev
Address: 2400:6180:0:d1::519:6001

แƒแƒ› แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒ” แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ” CoreDNS แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒ“แƒแƒœแƒ” all (แƒ แƒแƒช แƒ›แƒแƒก แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒฎแƒ›แƒแƒ›แƒแƒฆแƒแƒšแƒก แƒฎแƒ“แƒ˜แƒก). แƒ›แƒแƒ“แƒ˜ แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒžแƒแƒ“แƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒก coredns:

[INFO] 10.1.28.1:35998 - 11131 "A IN mrkaran.dev.hello.svc.cluster.local. udp 53 false 512" NXDOMAIN qr,aa,rd 146 0.000263728s
[INFO] 10.1.28.1:34040 - 36853 "A IN mrkaran.dev.svc.cluster.local. udp 47 false 512" NXDOMAIN qr,aa,rd 140 0.000214201s
[INFO] 10.1.28.1:33468 - 29482 "A IN mrkaran.dev.cluster.local. udp 43 false 512" NXDOMAIN qr,aa,rd 136 0.000156107s
[INFO] 10.1.28.1:58471 - 45814 "A IN mrkaran.dev. udp 29 false 512" NOERROR qr,rd,ra 56 0.110263459s
[INFO] 10.1.28.1:54800 - 2463 "AAAA IN mrkaran.dev. udp 29 false 512" NOERROR qr,rd,ra 68 0.145091744s

แƒคแƒฃ. แƒแƒฅ แƒแƒ แƒ˜ แƒ แƒแƒ› แƒ˜แƒžแƒงแƒ แƒแƒ‘แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒแƒก:

  • แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ’แƒแƒ“แƒ˜แƒก แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ”แƒขแƒแƒžแƒก, แƒกแƒแƒœแƒแƒ› แƒžแƒแƒกแƒฃแƒฎแƒ˜ แƒแƒ  แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ™แƒแƒ“แƒก NOERROR (DNS แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒ”แƒกแƒ›แƒ˜แƒ— แƒ“แƒ แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ”แƒœ แƒ›แƒแƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“). NXDOMAIN แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒแƒ  แƒ›แƒแƒ˜แƒซแƒ”แƒ‘แƒœแƒ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แฒ˜แƒ›แƒ˜แƒขแƒแƒ› แƒ แƒแƒ› mrkaran.dev แƒแƒ  แƒแƒ แƒ˜แƒก FQDN แƒกแƒแƒฎแƒ”แƒšแƒ˜ (แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“ ndots=5), แƒ’แƒแƒ“แƒแƒ›แƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒฃแƒงแƒฃแƒ แƒ”แƒ‘แƒก แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ–แƒแƒก แƒ“แƒ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒแƒก;
  • แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒก ะ ะธ ะะะะ แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒแƒ“ แƒฉแƒแƒ›แƒแƒกแƒ•แƒšแƒ. แƒคแƒแƒฅแƒขแƒ˜แƒ, แƒ แƒแƒ› แƒ”แƒ แƒ—แƒฏแƒ”แƒ แƒแƒ“แƒ˜ แƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ›แƒแƒ“แƒ˜แƒก /etc/resolv.conf แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒ˜ แƒซแƒ˜แƒ”แƒ‘แƒ แƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒ‘แƒ IPv4 แƒ“แƒ IPv6 แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒแƒฃแƒฅแƒ›แƒแƒ— แƒ”แƒก แƒฅแƒชแƒ”แƒ•แƒ แƒแƒคแƒชแƒ˜แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— single-request ะฒ resolv.conf.

แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ: glibc แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒแƒ› แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒฃแƒšแƒแƒ“ แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ musl - แƒแƒ แƒ, แƒแƒ›แƒ˜แƒขแƒแƒ› Alpine แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ›แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒแƒœ.

แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ—

แƒ›แƒแƒ“แƒ˜แƒ—, แƒชแƒแƒขแƒ แƒ›แƒ”แƒขแƒ˜ แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒ˜ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒแƒ— ndots แƒ“แƒ แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ แƒแƒ’แƒแƒ  แƒ˜แƒฅแƒชแƒ”แƒ•แƒ แƒ”แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜. แƒ˜แƒ“แƒ”แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ: ndots แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก, แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒก แƒ—แƒฃ แƒแƒ แƒ DNS แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒ“แƒแƒ›แƒ”แƒœแƒก แƒแƒ‘แƒกแƒแƒšแƒฃแƒขแƒฃแƒ แƒแƒ“ แƒ—แƒฃ แƒคแƒแƒ แƒ“แƒแƒ‘แƒ˜แƒ—แƒแƒ“. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ google DNS แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ แƒแƒ’แƒแƒ  แƒ˜แƒชแƒ˜แƒก, แƒแƒ แƒ˜แƒก แƒ—แƒฃ แƒแƒ แƒ แƒ”แƒก แƒ“แƒแƒ›แƒ”แƒœแƒ˜ แƒแƒ‘แƒกแƒแƒšแƒฃแƒขแƒฃแƒ แƒ˜? แƒ—แƒฃ แƒ“แƒแƒแƒงแƒ”แƒœแƒ” ndots แƒฃแƒ“แƒ แƒ˜แƒก 1-แƒก, แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒ˜แƒขแƒงแƒ•แƒ˜แƒก: โ€žแƒแƒฐ, แƒจแƒ”แƒ›แƒแƒกแƒฃแƒšแƒ˜ google แƒแƒ  แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜; แƒ•แƒคแƒ˜แƒฅแƒ แƒแƒ‘, แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ• แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ—แƒ”แƒš แƒกแƒ˜แƒแƒก. โ€ แƒ—แƒฃแƒ›แƒชแƒ, แƒ—แƒฃ แƒ’แƒ™แƒ˜แƒ—แƒฎแƒแƒ•แƒ— google.com, แƒกแƒฃแƒคแƒ˜แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒ˜แƒ’แƒœแƒแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒšแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒแƒ™แƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒก แƒ–แƒฆแƒ•แƒแƒ แƒก ndots (แƒ”แƒ แƒ—แƒ˜ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜ แƒ›แƒแƒ˜แƒœแƒช แƒแƒ แƒ˜แƒก).

แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ”แƒ— แƒแƒ›แƒแƒจแƒ˜:

$ cat /etc/resolv.conf
options ndots:1
$ nslookup mrkaran
Server: 10.152.183.10
Address: 10.152.183.10#53

** server can't find mrkaran: NXDOMAIN

CoreDNS แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜:

[INFO] 10.1.28.1:52495 - 2606 "A IN mrkaran.hello.svc.cluster.local. udp 49 false 512" NXDOMAIN qr,aa,rd 142 0.000524939s
[INFO] 10.1.28.1:59287 - 57522 "A IN mrkaran.svc.cluster.local. udp 43 false 512" NXDOMAIN qr,aa,rd 136 0.000368277s
[INFO] 10.1.28.1:53086 - 4863 "A IN mrkaran.cluster.local. udp 39 false 512" NXDOMAIN qr,aa,rd 132 0.000355344s
[INFO] 10.1.28.1:56863 - 41678 "A IN mrkaran. udp 25 false 512" NXDOMAIN qr,rd,ra 100 0.034629206s

แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒช mrkaran แƒแƒ  แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜, แƒซแƒ˜แƒ”แƒ‘แƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ แƒกแƒฃแƒคแƒ˜แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ—แƒ”แƒš แƒกแƒ˜แƒแƒจแƒ˜.

แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ: แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒจแƒ˜ แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ ndots แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒฃแƒšแƒ˜แƒ 15; แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“ Kubernetes-แƒจแƒ˜ แƒแƒ แƒ˜แƒก 5.

แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒจแƒ˜

แƒ—แƒฃ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒฃแƒแƒ›แƒ แƒแƒ• แƒ’แƒแƒ แƒ” แƒฅแƒกแƒ”แƒšแƒจแƒ˜ แƒ–แƒแƒ แƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก, DNS แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒฎแƒ“แƒ”แƒก แƒ‘แƒแƒ แƒ˜แƒ”แƒ แƒ˜ แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ แƒแƒ“แƒ’แƒแƒœ แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒก แƒ’แƒแƒ แƒฉแƒ”แƒ•แƒแƒ“แƒแƒ‘แƒ แƒ‘แƒ”แƒ•แƒ  แƒแƒ แƒแƒกแƒแƒญแƒ˜แƒ แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒก (แƒกแƒแƒœแƒแƒ› แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒกแƒฌแƒแƒ แƒก แƒ›แƒ˜แƒแƒฆแƒฌแƒ”แƒ•แƒก). แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒแƒ  แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ”แƒœ แƒซแƒ˜แƒ แƒ”แƒฃแƒš แƒ–แƒแƒœแƒแƒก แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒฐแƒแƒ™แƒ˜แƒ•แƒ˜แƒ— แƒŸแƒฆแƒ”แƒ แƒก. แƒแƒœแƒฃ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“ api.twitter.com, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ˜แƒกแƒ˜ "แƒ›แƒงแƒแƒ แƒ˜ แƒ™แƒแƒ“แƒ˜แƒ แƒ”แƒ‘แƒ". api.twitter.com. (แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜แƒ—) แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒ‘แƒ˜แƒซแƒ’แƒ”แƒ‘แƒก DNS แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒแƒœ แƒแƒ•แƒขแƒแƒ แƒ˜แƒขแƒ”แƒขแƒฃแƒšแƒ˜ แƒซแƒ˜แƒ”แƒ‘แƒ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒแƒ‘แƒกแƒแƒšแƒฃแƒขแƒฃแƒ  แƒ“แƒแƒ›แƒ”แƒœแƒ–แƒ”.

แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ˜ Kubernetes แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ— 1.14, แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒ— dnsConfig ะธ dnsPolicy แƒ›แƒ˜แƒ˜แƒฆแƒ แƒกแƒขแƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜ แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜. แƒแƒ›แƒ’แƒ•แƒแƒ แƒแƒ“, แƒžแƒแƒ“แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒแƒ›แƒชแƒ˜แƒ แƒแƒ— แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ ndotsแƒ•แƒ—แƒฅแƒ•แƒแƒ—, 3-แƒ›แƒ“แƒ” (แƒ“แƒ แƒ—แƒฃแƒœแƒ“แƒแƒช 1-แƒ›แƒ“แƒ”!). แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒ“แƒ”แƒก แƒกแƒ แƒฃแƒš แƒ“แƒแƒ›แƒ”แƒœแƒก. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ™แƒšแƒแƒกแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ’แƒแƒ แƒ˜แƒ’แƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒแƒ˜แƒ แƒฉแƒ˜แƒแƒ— แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒ“แƒ แƒžแƒแƒ แƒขแƒแƒ‘แƒ”แƒšแƒฃแƒ แƒแƒ‘แƒแƒก แƒจแƒแƒ แƒ˜แƒก. แƒ›แƒ”แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒแƒ›แƒแƒ–แƒ” แƒฃแƒœแƒ“แƒ แƒ˜แƒœแƒ”แƒ แƒ•แƒ˜แƒฃแƒšแƒแƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ—แƒฃ แƒฃแƒšแƒขแƒ แƒ แƒ“แƒแƒ‘แƒแƒšแƒ˜ แƒจแƒ”แƒงแƒแƒ•แƒœแƒ”แƒ‘แƒ แƒกแƒแƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒแƒ“ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ“แƒ’แƒแƒœ DNS แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ˜แƒ’แƒœแƒ˜แƒ“แƒแƒœ แƒแƒ แƒ˜แƒก แƒฅแƒ”แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜.

แƒšแƒ˜แƒขแƒ”แƒ แƒแƒขแƒฃแƒ แƒ

แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ แƒ’แƒแƒ•แƒ˜แƒ’แƒ” แƒแƒ› แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ K8s-แƒจแƒ”แƒฎแƒ•แƒ”แƒ“แƒ แƒ25 แƒ˜แƒแƒœแƒ•แƒแƒ แƒก แƒ’แƒแƒ˜แƒ›แƒแƒ แƒ—แƒ. แƒ˜แƒงแƒ แƒ“แƒ˜แƒกแƒ™แƒฃแƒกแƒ˜แƒ แƒแƒ› แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“.

แƒแƒฅ แƒแƒ แƒ˜แƒก แƒ แƒแƒ›แƒแƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ‘แƒ›แƒฃแƒšแƒ˜ แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒ˜ แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ: แƒ›แƒ” แƒ•แƒแƒ แƒฉแƒ˜แƒ” แƒแƒ  แƒ’แƒแƒ›แƒแƒ›แƒ”แƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒœแƒ dig แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜. dig แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒแƒ›แƒแƒขแƒ”แƒ‘แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒก (แƒซแƒ˜แƒ แƒ”แƒฃแƒšแƒ˜ แƒ–แƒแƒœแƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ˜), แƒ แƒแƒช แƒ“แƒแƒ›แƒ”แƒœแƒก "แƒกแƒ แƒฃแƒšแƒแƒ“ แƒ™แƒ•แƒแƒšแƒ˜แƒคแƒ˜แƒชแƒ˜แƒฃแƒ แƒก" แƒฎแƒ“แƒ˜แƒก (FQDN), แƒแƒ แƒแƒ แƒ˜แƒก แƒฏแƒ”แƒ  แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒกแƒแƒซแƒ˜แƒ”แƒ‘แƒ แƒกแƒ˜แƒแƒจแƒ˜. แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒฌแƒ”แƒ แƒ“แƒ แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒฌแƒ˜แƒœแƒ แƒžแƒฃแƒ‘แƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ. แƒ—แƒฃแƒ›แƒชแƒ, แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ’แƒแƒกแƒแƒ™แƒ•แƒ˜แƒ แƒ˜แƒ, แƒ แƒแƒ› แƒ–แƒแƒ’แƒแƒ“แƒแƒ“, แƒชแƒแƒšแƒ™แƒ” แƒ“แƒ แƒแƒจแƒ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ แƒฅแƒชแƒ”แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ‘แƒ”แƒ“แƒœแƒ˜แƒ”แƒ แƒ˜ DNSing! แฒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒœแƒแƒฎแƒแƒ•!

PS แƒ›แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ”แƒšแƒ˜แƒกแƒ’แƒแƒœ

แƒแƒกแƒ”แƒ•แƒ” แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒก แƒ‘แƒšแƒแƒ’แƒ–แƒ”:

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ