私はk8sとkubesprayを初めて使います。
私の目的は、オンプレミス環境で k8s クラスターを構築することです。パブリック IP とインターネット アクセスを備えた EC2 では、すべて問題ありませんでした。しかし、より複雑な制約により、行き詰まってしまいました。以下は私の制約です。
- パブリック IP とインターネット アクセスを持つ 1 つの要塞
- パブリックIPとインターネットアクセスの両方を持たないnノード
によるとkubespray ドキュメント、かなり多くの設定が必要です。しかし、私の意見では、Bastion は完全なインターネット アクセスを持っているため、kubespray を使用して k8s クラスターを簡単に構築できる可能性があります。
これを実行するためのブログやステップバイステップの手順はありますか?
答え1
私の理解する限りでは、要塞がパブリック レジストリとリポジトリにアクセスできる場合は、Kubernetes ノードに代わってクエリをプロキシする Squid サーバーをインストールできます。
その場合、これは切断されたデプロイメントではなくなり、 の およびhttp_proxy
https_proxy
変数no_proxy
を設定しgroup_vars/all.yml
、そのプロキシを使用してアセットを元の場所から引き出すことができます。
apt-get install squid
または のようなものを試してくださいdnf install squid
。基本的な squid.conf は次のようになります。
http_port 3128
cache_log /var/log/squid/cache.log
cache_mem 256 MB
cache_dir aufs /var/spool/squid 10240 16 256
maximum_object_size 1024 MB
cache_effective_group proxy
hosts_file /etc/hosts
logfile_rotate 4
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
access_log /var/log/squid/access.log combined
coredump_dir /var/spool/squid
error_directory /usr/share/squid/errors/en
http_access allow all
http_reply_access allow all
cache allow all
icp_access allow all
Kubernetes ノードの 1 つから接続をテストします。
# curl -vvv --proxy http://10.42.44.100:3128/ https://perdu.com
...
* Connected to 10.42.44.100 (10.42.44.100) port 3128 (#0)
...
* Establish HTTP proxy tunnel to perdu.com:443
...
ここで、Kubespray インベントリがそのプロキシを使用して適切な変数を設定していることを確認します。コンテナー ランタイムと OS パッケージ マネージャー構成の両方でそれらが使用されます。
offline-environment.md
何らかの理由でプロキシの設定が適切でない場合は、そのドキュメントに記載されているすべての画像とファイルをミラーリングする必要があります。
おそらく、kubectl / etcd / ... バイナリとファイル用の Nginx サーバーを設定し、docker-registry コンテナーを実行して、それらのイメージをミラーリングします。ただし、コンテナー ランタイムは、安全でないレジストリ エラーを無視して適切に構成されている必要がある (設定する追加の Kubespray 変数) か、OS がレジストリ サーバー証明書に署名した CA を信頼する必要があることに注意してください。