質問がある場合は、kubespray.io でドキュメントを確認し、kubernetes のスラック、チャネル#kubesprayにご参加ください。ここで招待状を入手できます
以下に、Kubespray を使用して Kubernetes クラスターをデプロイするいくつかの方法を示します。
Ansible インストール ガイドに従って Ansible をインストールし、次の手順を実行します。
# Copy ` ` inventory/sample ` ` as ` ` inventory/mycluster ` `
cp -rfp inventory/sample inventory/mycluster
# Update Ansible inventory file with inventory builder
declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
# Review and change parameters under ` ` inventory/mycluster/group_vars ` `
cat inventory/mycluster/group_vars/all/all.yml
cat inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml
# Clean up old Kubernetes cluster with Ansible Playbook - run the playbook as root
# The option ` --become ` is required, as for example cleaning up SSL keys in /etc/,
# uninstalling old packages and interacting with various systemd daemons.
# Without --become the playbook will fail to run !
# And be mind it will remove the current kubernetes cluster (if it ' s running)!
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root reset.yml
# Deploy Kubespray with Ansible Playbook - run the playbook as root
# The option ` --become ` is required, as for example writing SSL keys in /etc/,
# installing packages and interacting with various systemd daemons.
# Without --become the playbook will fail to run !
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
注: Ansible がシステム パッケージを介して制御ノードにすでにインストールされている場合、 sudo pip install -r requirements.txt
を介してインストールされた Python パッケージは別のディレクトリ ツリー (例: /usr/local/lib/python2.7/dist-packages
) に移動します。 Ubuntu 上)Ansible から(例: /usr/lib/python2.7/dist-packages/ansible
まだ Ubuntu 上にあります)。結果として、 ansible-playbook
コマンドは次のように失敗します。
ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.
これは、タスクがrequirements.txt
に存在するモジュールに依存していることを示している可能性があります。
これに対処する 1 つの方法は、システムの Ansible パッケージをアンインストールしてからpip
経由で Ansible を再インストールすることですが、これは常に可能であるとは限らず、パッケージのバージョンに注意する必要があります。回避策は、 ANSIBLE_LIBRARY
環境変数とANSIBLE_MODULE_UTILS
環境変数を、 pip
インストール場所ansible-playbook
を実行する前にpip show [package]
を実行することによって表示されるLocation
) のansible/modules
サブディレクトリとansible/module_utils
サブディレクトリにそれぞれ設定することで構成されます。
すべての正しいバージョンの Ansible を確実に入手する簡単な方法は、Quay から事前に構築された Docker イメージを使用することです。次に、次のように、バインド マウントを使用してコンテナ内のインベントリと SSH キーにアクセスする必要があります。
git checkout v2.26.0
docker pull quay.io/kubespray/kubespray:v2.26.0
docker run --rm -it --mount type=bind,source="$(pwd)"/inventory/sample,dst=/inventory
--mount type=bind,source="${HOME}"/.ssh/id_rsa,dst=/root/.ssh/id_rsa
quay.io/kubespray/kubespray:v2.26.0 bash
# Inside the container you may now run the kubespray playbooks:
ansible-playbook -i /inventory/inventory.ini --private-key /root/.ssh/id_rsa cluster.yml
このリポジトリを Ansible コレクションとして使用する場合は、ここを参照してください。
Vagrant の場合、プロビジョニング タスクのために Python の依存関係をインストールする必要があります。 Python
とpip
がインストールされていることを確認します。
python -V && pip -V
ソフトウェアのバージョンが返されれば、準備完了です。そうでない場合は、ここ https://www.python.org/downloads/source/ から Python をダウンロードしてインストールします。
Ansible インストール ガイドに従って Ansible をインストールし、次の手順を実行します。
vagrant up
注: Upstart/SysV init ベースの OS タイプはサポートされていません。
ansible_become
フラグまたはコマンド パラメーター--become or -b
指定する必要があります。ハードウェア: これらの制限は Kubespray によって保護されます。ワークロードの実際の要件は異なる場合があります。サイジング ガイドについては、「大規模クラスターの構築」ガイドを参照してください。
10 個のネットワーク プラグインから選択できます。 (デフォルト: calico
、ただし Vagrant はflannel
を使用します)
フランネル: gre/vxlan (レイヤー 2) ネットワーキング。
Calico は、ネットワークおよびネットワーク ポリシーのプロバイダーです。 Calico は、BGP の有無にかかわらず、非オーバーレイ ネットワークおよびオーバーレイ ネットワークを含む、さまざまな状況で最も効率的なネットワーキングを提供するように設計された柔軟なネットワーキング オプションのセットをサポートしています。 Calico は、同じエンジンを使用して、サービス メッシュ層でホスト、ポッド、および (Istio と Envoy を使用している場合) アプリケーションのネットワーク ポリシーを適用します。
cilium: レイヤ 3/4 ネットワーキング (アプリケーション プロトコルを保護および安全にするためのレイヤ 7 も同様) は、セキュリティ サービス、ネットワーキング、および可視性ロジックを実装するために、Linux カーネルへの BPF バイトコードの動的な挿入をサポートします。
Weave: Weave は、外部 K/V データベース クラスターを必要としない軽量のコンテナ オーバーレイ ネットワークです。 ( weave
トラブルシューティングに関するドキュメントを参照してください)。
kube-ovn: Kube-OVN は、OVN ベースのネットワーク仮想化を Kubernetes と統合します。企業向けに高度なコンテナ ネットワーク ファブリックを提供します。
kube-router: Kube-router は、運用の簡素化と高パフォーマンスの提供を目的とした Kubernetes ネットワーキング用の L3 CNI です。IPVS を使用して Kube Services Proxy (kube-proxy を置き換えるように設定されている場合)、ネットワーク ポリシーに iptables、ODS に BGP を提供します。 L3 ネットワーキング (オプションでクラスター外の BGP ピアとの BGP ピアリングを使用)。オプションで、Kubernetes クラスター ポッドの CIDR、ClusterIP、ExternalIP、および LoadBalancerIP へのルートをアドバタイズすることもできます。
macvlan: Macvlan は Linux ネットワーク ドライバーです。ポッドには独自の一意の Mac アドレスと IP アドレスがあり、物理 (レイヤー 2) ネットワークに直接接続されています。
multus: Multus は、ポッドに複数のネットワーク インターフェイスのサポートを提供するメタ CNI プラグインです。 Multus はインターフェイスごとに CNI 呼び出しを Calico、macvlan などのセカンダリ CNI プラグインに委任します。
Custom_cni : クラスターに適用されるいくつかのマニフェストを指定して、独自の CNI を取得し、Kubespray でサポートされていないものを使用できます。 Helm Chart によって提供される CNI の例についてはtests/files/custom_cni/README.md
およびtests/files/custom_cni/values.yaml
を参照してください。
使用するネットワーク プラグインは、変数kube_network_plugin
によって定義されます。代わりに、組み込みのクラウド プロバイダー ネットワークを利用するオプションもあります。 「ネットワーク チェッカー」も参照してください。
nginx: NGINX Ingress コントローラー。
metallb: MetalLB ベアメタル サービス ロードバランサー プロバイダー。
CI/エンドツーエンド テストの主催: CNCF、Equinix Metal、OVHcloud、ELASTX。
詳細については、テスト マトリックスを参照してください。