1

提供されたテンプレートを使用して AWS に Mesosphere DCOS をインストールしました。ここで、すべてのノードを再起動しますが、 --insecure-registry パラメータをすべてのスレーブ ノード (およびマスター) に追加して、docker レジストリと通信できるようにします。したがって、これを行うための最良の方法は、AWS テンプレートの cloud-config スクリプトを使用することです。

そのため、AWS EC2 Launch Configurations で、マスター ノードの構成をコピーし、ユーザー データを調整してから、Auto Scaling グループを更新し、マスターを再起動しました。( How do I use insecure docker registries with Amazon EC2 Container Service (ECS)?の最後にあるこれを行う方法についての素晴らしい回答)

CoreOS ドキュメントで提案されているように、cloud-config のユニット セクションの最後に行が追加されました: https://coreos.com/os/docs/latest/cloud-config.html

 units
 ....Many lines here
- name: docker.service
 drop-ins: |-
 - name: 50-insecure-registry.conf
   content: |
    [Service]
    Environment=DOCKER_OPTS='--insecure-registry="10.0.1.0/24"'

しかし、その後、マスターは再起動しません。そのため、変更を元に戻す必要がありました。

非常に多くの質問:

を。このテンプレートの cloud-config に docker.service ブロックがないのはなぜですか? ドッカーはいつ、どのように起動しますか?

b. flannel_docker_opts.env ファイルを編集する必要がありますか? 繰り返しますが、この cloud-config にはそのようなファイルへの言及はありません。しかし、このページには言及があります: https://coreos.com/flannel/docs/latest/flannel-config.html

そのページの最後で特に興味深い:

  1. flanneld.service の ExecStartPost は、/run/flannel/subnet.env の情報を Docker デーモン コマンド ライン引数 (--bip や --mtu など) に変換し、それらを /run/flannel_docker_opts.env ... に保存します。
  2. /run/flannel_docker_opts.env の docker.service ソースには、コマンド ライン オプションを含む環境変数が含まれており、それらを使用して Docker を起動します。

そして実際、early-docker.service のような言及されたファイルを見ることができますが、cloud-config に flannel についての言及はありません。

しかし、実際に、上記のページに記載されているサービス ファイルを見つけました。

 /usr/lib64/udev/rules.d/80-docker.rules
 /usr/lib64/systemd/system/early-docker.service
 /usr/lib64/systemd/system/early-docker.socket
 /usr/lib64/systemd/system/docker.service
 /usr/lib64/systemd/system/docker.socket
 /usr/lib64/systemd/system/sockets.target.wants/docker.socket
 /usr/lib64/systemd/system/early-docker.target

実際、/run/flannel_docker_opts.env ファイルは docker.service ファイルに記載されていますが、/run フォルダーには存在しません。

vi /usr/lib64/systemd/system/docker.service

 [Unit]
 Description=Docker Application Container Engine
 Documentation=http://docs.docker.com
 After=docker.socket early-docker.target network.target
 Requires=docker.socket early-docker.target

 [Service]
 Environment=TMPDIR=/var/tmp
 EnvironmentFile=-/run/flannel_docker_opts.env <<<<<<<<<< HERE!!!!!
 MountFlags=slave
 LimitNOFILE=1048576
 LimitNPROC=1048576
 ExecStart=/usr/lib/coreos/dockerd --daemon --host=fd:// $DOCKER_OPTS $DOCKER_OPT_BIP $DOCKER_OPT_MTU $DOCKER_OPT_IPMASQ

 [Install]

c. この docker.service ファイルはどこから来たのですか! クラウド構成には言及されていません。それは CoreOS アーキテクチャの一部ですか?

d. この docker.service が CoreOS の不可欠な部分である場合、すべてのファイルがこの /usr/lib64 パスにあるのはなぜですか? CoreOS ドキュメントには、すべてのファイルの他のパスの場所が記載されています。

任意の提案をいただければ幸いです。私は今、失明しています。この存在しない flannel_docker_conf.env ファイルを作成してみます。しかし、私がやっていることが正しい方法であるかどうかはわかりません。

ありがとう!

4

0 に答える 0