flannelネットワークのインストール

15865 ワード

flannelネットワークのインストール構成
今日、kubernetesクラスタのflannelネットワークの構成中に発生した問題を記録します.
一、取付etcd:kubernetesクラスタが構築された場合、etcdがインストールされて構成されているはずです.ここで簡単に言えば、etcdが必要なのは、flanneletcdをデータベースとして使用し、クラスタに割り当てられたネットワーク情報を保存することで、クラスタ内のpodネットワークが同じセグメントであり、重複しないことを保証しているからです.yum install etcdを使用してインストールするか、ソースコードを使用してインストールします.詳細はこちらを参照してください.インストールが完了したら、etcdのプロファイル/etc/etcd/etcd.confを変更して、次の2つのパラメータを変更します.
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
ここでは、すべてのNICを監視するために変更し、必要に応じて変更してetcdサービスを再起動できます.
systemctl restart etcd
二、flannelのインストール
同様に私はここでyum install flannel -yの方式を使ってインストールを行って、あなたもgithubに行って対応するパッケージをダウンロードしてインストールすることができて、解凍した後にバイナリファイルflannelnk-docker-opts.sh/usr/binディレクトリの下にコピーしてインストールを完成します.
三、flannelの構成
手動コピーバイナリファイルインストールの場合は、yumインストール後のプロファイルを参照して構成できます.ここではflannelのプロファイルのみを変更し、プロファイル/etc/sysconfig/flannelを編集し、以下のパラメータに従って構成します.
FLANNEL_ETCD_ENDPOINTS="http://192.168.26.250:2379"
FLANNEL_ETCD_PREFIX="/coreos.com/network"
etcdのアドレスに設定すればいいです.flannelを起動する前に、flannelごとに割り当てられたネットワークにネットワーク構成レコードを追加する必要があります.
etcdctl set /coreos.com/network/config '{ "Network": "10.1.0.0/16" }'
docker0を起動するとflannelのネットワークが上書きされるため、flannelを起動する前にdockerサービスを停止する必要があります.
四、flannelを起動する
systemctl restart flanneld
次にdockerサービスを再起動します.flannelを手動でインストールする場合は、docker 0ネットワークのアドレスを構成する必要がある場合があります.次のコマンドを使用します.
mk-docker-opts.sh -i
source /run/flannel/subnet.env
ifconfig docker0 ${FLANNEL_SUBNET}
五、dockerを再起動する
systemctl restart docker
ネットワーク構成の表示:
# ip a
4: flannel0:  mtu 1472 qdisc pfifo_fast state UNKNOWN qlen 500
    link/none 
    inet 10.1.13.0/16 scope global flannel0
       valid_lft forever preferred_lft forever
5: docker0:  mtu 1500 qdisc noqueue state DOWN 
    link/ether 02:42:da:9c:59:22 brd ff:ff:ff:ff:ff:ff
    inet 10.1.13.1/24 scope global docker0
       valid_lft forever preferred_lft forever
構成されたネットワークが有効になっていることがわかります.flannelが自動的に割り当てたセグメントです.
本人はdockerを再起動したとき、次のようなエラーを発見しました.
-- Unit docker.service has begun starting up.
5  29 13:56:44 master.kube.com dockerd-current[13290]: time="2018-05-29T13:56:44.717023320+08:00" level=warning msg="could not change group /var/run/docker.sock to do
5  29 13:56:44 master.kube.com dockerd-current[13290]: time="2018-05-29T13:56:44.720843794+08:00" level=info msg="libcontainerd: new containerd process, pid: 13295"
5  29 13:56:46 master.kube.com dockerd-current[13290]: Error starting daemon: SELinux is not supported with the overlay2 graph driver on this kernel. Either boot into
5  29 13:56:46 master.kube.com systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
5  29 13:56:46 master.kube.com systemd[1]: Failed to start Docker Application Container Engine.
-- Subject: Unit docker.service has failed
なぜなら、現在のカーネル上でdocker0selinuxのネットワークをサポートしていないため、解決策はカーネルをアップグレードするかdockerのプロファイルを変更するoverlayのパラメータが/etc/sysconfig/dockerである.
同じように別の機械を配置する
六、ネットワークの検証
ping別のマシンのdocker 0でネットワークの接続性を検証できます
次のコマンドを使用して、各マシンのflannel 0とdocker 0のネットワーク情報と対応する物理マシンのアドレスを表示します.
[root@master ~]# etcdctl ls /coreos.com/network/subnets
/coreos.com/network/subnets/10.1.13.0-24
/coreos.com/network/subnets/10.1.50.0-24
[root@master ~]# etcdctl get /coreos.com/network/subnets/10.1.13.0-24
{"PublicIP":"192.168.26.250"}
[root@master ~]# etcdctl get /coreos.com/network/subnets/10.1.50.0-24
{"PublicIP":"192.168.26.240"}
これでflannelネットワーク構成が完了します.