LoginSignup
21
21

More than 5 years have passed since last update.

KubernetesをUbuntuで動かす

Last updated at Posted at 2016-09-13

概要

KubernetesをUbuntuで構築したい人向けの記事です。
masterとnode1台ずつ構築するところまでの説明を含んでいます。

動作環境

ここではmasterとノードの2サーバーを作成します。
以下のIPアドレス・ホスト名で構築しました。

  • master サーバー
    ホスト名 master
    IPアドレス 192.168.137.20
  • node サーバー
    ホスト名 node1
    IPアドレス 192.168.137.21

図面1.png

バージョン

  • OS:Ubuntu 14.04.5 LTS Basic Ubuntu Serverのみをインストール
  • Kubernetes:1.3.6
  • etcd:3.0.7
  • flannel:0.6.1

master側の構築

master側ではkubernetesのapiserverやetcdなどを動作させます。

関連パッケージのインストール

sudo apt-get update
sudo apt-get install build-essential linux-libc-dev bridge-utils git curl ssh unzip golang -y

バイナリの保存先作成

sudo mkdir /opt/bin

ホスト名の登録

sudo sh -c "echo '192.168.137.20 master' >> /etc/hosts"
sudo sh -c "echo '192.168.137.21  node1' >> /etc/hosts"

etcdのインストールと設定

wget https://github.com/coreos/etcd/releases/download/v3.0.7/etcd-v3.0.7-linux-amd64.tar.gz
tar xzvf etcd-v3.0.7-linux-amd64.tar.gz

sudo mv etcd-v3.0.7-linux-amd64/etcd /opt/bin/
sudo mv etcd-v3.0.7-linux-amd64/etcdctl /opt/bin/

sudo ln -s /opt/bin/etcd /usr/local/bin/etcd
sudo ln -s /opt/bin/etcdctl /usr/local/bin/etcdctl

sudo chmod 755 /opt/bin/etcd
sudo chmod 755 /opt/bin/etcdctl

/etc/init/etcd.conf(差分のみを示します。)

29c29
<       ETCD_OPTS=""
---
>       ETCD_OPTS="--listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://localhost:2379"

flanneldのインストールと設定

wget https://github.com/coreos/flannel/releases/download/v0.6.1/flanneld-amd64
sudo mkdir /opt/flanneld
sudo mv flanneld-amd64 /opt/bin/flanneld
sudo ln -s /opt/bin/flanneld /usr/local/bin/flanneld
sudo chmod 755 /opt/bin/flanneld

flannelで利用するアドレスの範囲を設定

sudo initctl start etcd
etcdctl mk /coreos.com/network/config '{"Network":"172.17.0.0/16"}'

kubernetesのインストールと設定

wget https://github.com/kubernetes/kubernetes/releases/download/v1.3.6/kubernetes.tar.gz
tar xzvf kubernetes.tar.gz

#ビルド済みのバイナリはserverフォルダー以下にtarで固められています
cd kubernetes/server

#kubernetesのバイナリ展開(各アーキテクチャにあったファイルを展開してください。)
tar xzvf kubernetes-server-linux-amd64.tar.gz

sudo cp kubernetes/server/bin/kube-apiserver /opt/bin/
sudo cp kubernetes/server/bin/kube-controller-manager /opt/bin/
sudo cp kubernetes/server/bin/kube-scheduler /opt/bin/
sudo cp kubernetes/server/bin/kube-proxy /opt/bin/
sudo cp kubernetes/server/bin/kubectl /opt/bin/

cd ~

sudo ln -s /opt/bin/kube-apiserver /usr/local/bin/
sudo ln -s /opt/bin/kube-controller-manager /usr/local/bin/
sudo ln -s /opt/bin/kube-scheduler  /usr/local/bin/
sudo ln -s /opt/bin/kubectl /usr/local/bin/
sudo ln -s /opt/bin/kube-proxy /usr/local/bin/

sudo cp kubernetes/cluster/ubuntu/master/init_conf/* /etc/init/
sudo cp kubernetes/cluster/ubuntu/master-flannel/init_conf/flanneld.conf /etc/init/

/etc/init/kube-scheduler.conf(差分のみを示します。)

25c25
<       KUBE_SCHEDULER_OPTS=""
---
>       KUBE_SCHEDULER_OPTS="--master http://master:8080"

/etc/init/kube-controller-manager.conf(差分のみを示します。)

25c25
<       KUBE_CONTROLLER_MANAGER_OPTS=""
---
>       KUBE_CONTROLLER_MANAGER_OPTS="--address 0.0.0.0  --master http://master:8080"

/etc/init/kube-apiserver.conf(差分のみを示します。)

25c25
<       KUBE_APISERVER_OPTS=""
---
>       KUBE_APISERVER_OPTS="--address 0.0.0.0 --port 8080 --etcd_servers http://master:2379  --allow_privileged false --service-cluster-ip-range 10.254.0.0/16 --kubelet_port 10250"

/etc/init/flanneld.conf(差分のみを示します。)

24c24
<       FLANNEL_OPTS=""
---
>       FLANNEL_OPTS="-etcd-endpoints=http://master:2379 -etcd-prefix=/coreos.com/network"

node側の構築

node側ではkubernetesのkubeletを動作させます。

関連パッケージのインストール

sudo apt-get update
sudo apt-get install build-essential linux-libc-dev bridge-utils git curl ssh unzip golang -y

バイナリの保存先作成

sudo mkdir /opt/bin

ホスト名の登録

sudo sh -c "echo '192.168.137.20 master' >> /etc/hosts"
sudo sh -c "echo '192.168.137.21  node1' >> /etc/hosts"

flanneldのインストールと設定

wget https://github.com/coreos/flannel/releases/download/v0.6.1/flanneld-amd64
sudo mkdir /opt/flanneld
sudo mv flanneld-amd64 /opt/bin/flanneld
sudo ln -s /opt/bin/flanneld /usr/local/bin/flanneld
sudo chmod 755 /opt/bin/flanneld

Kubernetesのインストールと設定

wget https://github.com/kubernetes/kubernetes/releases/download/v1.3.6/kubernetes.tar.gz
tar xzvf kubernetes.tar.gz

#ビルド済みのバイナリはserverフォルダーにtarで固められています
cd kubernetes/server

#kubernetesのバイナリ展開(各アーキテクチャにあったファイルを展開してください。)
tar xzvf kubernetes-server-linux-amd64.tar.gz

#kubernetesのバイナリをコピー
#ノードにはkubeletとkube-proxyを入れてください
sudo cp kubernetes/server/bin/kubelet /opt/bin/
sudo cp kubernetes/server/bin/kube-proxy /opt/bin/

cd ~

sudo ln -s /opt/bin/kubelet  /usr/local/bin/
sudo ln -s /opt/bin/kube-proxy /usr/local/bin/

#設定ファイルのコピー
sudo cp kubernetes/cluster/ubuntu/minion-flannel/init_conf/flanneld.conf /etc/init/
sudo cp kubernetes/cluster/ubuntu/minion/init_conf/* /etc/init/

/etc/init/kube-proxy.conf(差分のみを示します)

27c27
<       KUBE_PROXY_OPTS=""
---
>       KUBE_PROXY_OPTS="--master http://master:8080"

/etc/init/kubelet.conf(差分のみを示します)

25c25
<       KUBELET_OPTS=""
---
>       KUBELET_OPTS="--address=0.0.0.0 --port=10250 --hostname-override node1 --api-servers http://master:8080"

/etc/init/flanneld.conf(差分のみを示します。)

24c24
<       FLANNEL_OPTS=""
---
>       FLANNEL_OPTS="-etcd-endpoints=http://master:2379 -etcd-prefix=/coreos.com/network"

Dockerのインストールと設定

インストール

wget -qO- https://get.docker.com/ | sh

flanneldで割り当てられたIPアドレスを適用するために修正します。
参考:http://blog.shippable.com/docker-overlay-network-using-flannel

/etc/init/docker.conf(差分のみを示します。)

3,4c3,4
< start on (filesystem and net-device-up IFACE!=lo)
< stop on runlevel [!2345]
---
> start on started flanneld
> stop on stopping flanneld
41a42,51
>       if [ -f /var/run/flannel/subnet.env ]; then
>               ## if flannel subnet env is present, then use it to define
>               ## the subnet and MTU values
>                 . /var/run/flannel/subnet.env
>                 DOCKER_OPTS="$DOCKER_OPTS --bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU}"
>         else
>                 echo "Flannel subnet not found, exiting..."
>                 exit 1
>         fi
> 

nsenterのインストール

sudo docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter

DashBoardの導入

動作テストのため導入します。

wget https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml
#apiサーバーのアドレスとポート番号を指定(docker内で利用されるのでIPアドレス直打ちです。)
sed -ie 's/# - --apiserver-host=http:\/\/my-address:port/- --apiserver-host=http:\/\/192.168.137.20:8080/' kubernetes-dashboard.yaml
kubectl create -f kubernetes-dashboard.yaml

kubectl get noでノードがReadyになっているか、kubectl --namespace=kube-system get poでpodが起動しているかを確認してください。

http://192.168.137.20:8080/ui でアクセスできます。

guestbookを立ち上げる

以下の手順でguestbookをデプロイできます。
masterのターミナルで叩いてください。

wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/examples/guestbook/all-in-one/guestbook-all-in-one.yaml

guestbook-all-in-one.yamlを開きGET_HOSTS_FROMのvalueをenvにしてください。(DNSの設定をしていないため。)

最後にコンテナを配置します。

kubectl create -f guestbook-all-in-one.yaml

http://192.168.137.20:8080/api/v1/proxy/namespaces/default/services/frontend:80/ でアクセスできます。

参考

プログラムの引数周りは公式Fedora向けのページを参考にしました。
http://kubernetes.io/docs/getting-started-guides/fedora/fedora_manual_config/

21
21
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
21
21