flannelネットワークのインストール
flannel
ネットワークのインストール構成今日、
kubernetes
クラスタのflannel
ネットワークの構成中に発生した問題を記録します.一、取付
etcd
:kubernetes
クラスタが構築された場合、etcd
がインストールされて構成されているはずです.ここで簡単に言えば、etcd
が必要なのは、flannel
がetcd
をデータベースとして使用し、クラスタに割り当てられたネットワーク情報を保存することで、クラスタ内の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
に行って対応するパッケージをダウンロードしてインストールすることができて、解凍した後にバイナリファイルflannel
とnk-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
なぜなら、現在のカーネル上でdocker0
はselinux
のネットワークをサポートしていないため、解決策はカーネルをアップグレードするか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ネットワーク構成が完了します.