#概要
kube-dnsをデフォルトのネームスペースで動かします。
cluster-dnsサンプルを動かし複数のコンテナ間で通信できることを確かめます。
「KubernetesをUbuntuで動かす」で構築した環境が前提となります。
#動作環境
上記の記事と同じ環境となります。
masterサーバー | nodeサーバー | |
---|---|---|
ホスト名 | master | node1 |
IPアドレス | 192.168.137.20 | 192.168.137.21 |
動作しているサービス | kube-apiserver kube-controller-manager kube-scheduler kube-dns |
kubelet kube-proxy |
dnsサーバー(kube-dns)はmaster上53番ポート(デフォルト値)で動作しています。
また、今回はドメイン名をmmitti.infoとして記載しています。
必要に応じて変更してください。(デフォルトはcluster.localです。)
#master側の構築
kube-dnsのインストールです。
途中までこちらの記事と同じ手順となります。
wget https://github.com/kubernetes/kubernetes/releases/download/v1.3.6/kubernetes.tar.gz
tar xzvf kubernetes.tar.gz
cd kubernetes/server
#お使いの環境に合わせて
tar xzvf kubernetes-server-linux-amd64.tar.gz
続けてkube-dnsのバイナリをコピーします。
sudo cp kubernetes/server/bin/kube-dns /opt/bin/
sudo ln -s /opt/bin/kube-dns /usr/local/bin/
/etc/init/kube-dns.confを以下の内容で作成します。
KUBE_DNS_OPTSは環境に応じて変更してください。
description "Kube-dns service"
author "@mmitti"
respawn
start on started kube-apiserver
stop on stopping kube-apiserver
pre-start script
KUBE_DNS=/opt/bin/$UPSTART_JOB
if [ -f /etc/default/$UPSTART_JOB ]; then
. /etc/default/$UPSTART_JOB
fi
if [ -f $KUBE_DNS ]; then
exit 0
fi
exit 22
end script
script
KUBE_DNS=/opt/bin/$UPSTART_JOB
KUBE_DNS_OPTS="--kube-master-url=http://master:8080 --domain=mmitti.info"
if [ -f /etc/default/$UPSTART_JOB ]; then
. /etc/default/$UPSTART_JOB
fi
exec "$KUBE_DNS" $KUBE_DNS_OPTS
end script
#node側
kubeletのパラメータの変更を行います。
/etc/init/kubelet.confのKUBELET_OPTSに以下を追記します。
--cluster-dns=192.168.137.20 --cluster-domain=mmitti.info
なお、cluster-dnsとcluster-domainを設定しないと以下のエラーが出るようです。
kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to DNSDefault policy.
#cluster-dnsサンプル
解凍したkubernetes以下のexamples/cluster-dnsに移動して作業してください。
dns-frontend-pod.yaml(差分のみ示します)
14c14
< - http://dns-backend.development.cluster.local:8000
---
> - http://dns-backend.default.svc.mmitti.info:8000
以下のコマンドを順に実行してpodを作成します。
kubectl create -f dns-backend-rc.yaml
kubectl create -f dns-backend-service.yaml
kubectl create -f dns-frontend-pod.yaml
最後に動作を確認します。
kubectl logs dns-frontend
以下のように表示されればOKです。
10.254.104.56
Send request to: http://dns-backend.default.svc.mmitti.info:8000
<Response [200]>
Hello World!
なお、登録されるサービスのドメインはサービス名.ネームスペース.svc.ドメイン
となります。
#参考
https://github.com/kubernetes/kubernetes/tree/master/build/kube-dns