LoginSignup
6
7

More than 5 years have passed since last update.

Kube-dnsを1ネームスペースで試す

Last updated at Posted at 2016-09-16

概要

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.ドメインとなります。

参考

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7