Kubernetes the Hard Way on Azure : 12. DNS

こんにちは。
今回も引き続き、Kubernetes the Hard Way on Azure を進めていきます。
いよいよ仕上げに入ってきました。12/15。

Deploying the DNS Cluster Add-on

このラボでは、CoreDNS によってサポートされるDNSベースのサービス検出を提供するDNSアドオン コンポーネントKubernetesクラスター内で実行されているアプリケーションに展開します。これらのアドオン は Pod として、通常は Namespace [kube-system] 動きます。

f:id:dombri:20200216210113j:plain

今回はここ。全然意識してなかった、アドオン。書き足しました。
kubernetes.io
色々ありますね。dashboard も一種なんですね。


The DNS Cluster Add-on

coredns クラスターアドオンをデプロイします。

kubectl apply -f https://raw.githubusercontent.com/ivanfioravanti/kubernetes-the-hard-way-on-azure/master/deployments/coredns.yaml

# 出力内容
serviceaccount/coredns created
clusterrole.rbac.authorization.k8s.io/system:coredns created
clusterrolebinding.rbac.authorization.k8s.io/system:coredns created
configmap/coredns created
deployment.extensions/coredns created
service/kube-dns created

[kube-dns] Deployment によって作成された Pod を表示します。

kubectl get pods -l k8s-app=kube-dns -n kube-system

# 出力内容
NAME                       READY   STATUS    RESTARTS   AGE
coredns-6f68fdf986-wfpvt   1/1     Running   0          4m14s
coredns-6f68fdf986-xtzdb   1/1     Running   0          4m14s


Verification

busybox Deployment を作成します。

kubectl run --generator=run-pod/v1 busybox --image=busybox:1.28 --command -- sleep 3600

[busy-box] Deployment によって作成された Pod を表示します。

kubectl get pods -l run=busybox

# 出力内容
NAME      READY   STATUS    RESTARTS   AGE
busybox   1/1     Running   0          45s

# Service もできている
kubectl get svc -A

# 出力内容
NAMESPACE     NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)         AGE
default       kubernetes   ClusterIP   10.32.0.1    <none>        443/TCP         7d18h
kube-system   kube-dns     ClusterIP   10.32.0.10   <none>        53/UDP,53/TCP   17m

Pod [busy-box] の完全修飾名を取得します。

POD_NAME=$(kubectl get pods -l run=busybox -o jsonpath="{.items[0].metadata.name}")

Pod [busy-box] 内から Service [kubernetes] のDNS lookup を実行します。

# busy-box Pod内で nslookup コマンドを実行
kubectl exec -ti $POD_NAME -- nslookup kubernetes

# 出力内容
Server:    10.32.0.10
Address 1: 10.32.0.10 kube-dns.kube-system.svc.cluster.local

Name:      kubernetes
Address 1: 10.32.0.1 kubernetes.default.svc.cluster.local

Service [kubernetes] の 情報を取得できることを確認できました。


Note : DNS lookup

DNS を用いて、ドメイン名・ホスト名からIPアドレスを、もしくはその逆を調べること。

まとめ

  • Kubernetes DNS をデプロイする
    • Pod, Service をスケジュール
    • クラスター内DNSを利用して Service や Pod の名前解決をする


@varu_3 さんのブログがK8sの名前解決について分かり易く検証されていたのでご紹介させてください。

varu3.hatenablog.com


13.に続きます。