Kubernetesをkubesprayでインストールする

ステップバイステップの手順

目次

Howto: KubernetesをKubesprayでインストール、環境の設定、インベントリの構成、およびAnsibleプレイブックの実行を含みます。

ワークノードが古い工場ビルディングのキューブをスプレーヤーしている

事前条件

ハードウェアおよびソフトウェアの要件

  • 以下の仕様を持つ複数のマシン(少なくとも3ノード:1マスターと2ワーカー)を確保してください:
    • Ubuntu 16.04/18.04またはCentOS 7がインストールされている。
    • 各マシンあたり少なくとも2GBのRAM(より多くのRAMは大規模なクラスターに推奨)。
    • Kubesprayのコントロールマシンから各ノードへのネットワーク接続およびSSHアクセス。
    • 高可用性を考慮する場合は、16GB RAM、100GBディスク、6CPUコアを持つノードを検討してください。

コントロールマシンの設定

  • Gitがまだインストールされていない場合はインストールしてください:

    sudo apt install git-all
    
  • Python(2.7または3.5+)とpipをインストールしてください:

    sudo apt update
    sudo apt install python3 python3-pip
    
  • Ansibleおよび他の依存関係をインストールしてください。Kubesprayはこれを処理するスクリプトを提供しています:

    git clone https://github.com/kubernetes-sigs/kubespray.git
    cd kubespray
    git checkout release-2.20  # オプション:安定したリリースをチェックアウト
    python3 -m venv venv  # Python仮想環境を作成
    source venv/bin/activate  # 仮想環境をアクティブ化
    pip install -r requirements.txt  # Ansibleおよび他の依存関係をインストール
    

インベントリの構成

  • 例のインベントリをコピーしてください:

    cp -r inventory/sample inventory/mycluster
    
  • inventory/mycluster/hosts.iniファイルを編集してノードを追加してください:

    [all]
    node1 ansible_host=10.10.1.3 ansible_user=ubuntu
    node2 ansible_host=10.10.1.4 ansible_user=ubuntu
    node3 ansible_host=10.10.1.5 ansible_user=ubuntu
    
    [kube-master]
    node1
    
    [kube-node]
    node2
    node3
    
  • 別のユーザーを使用している場合は、ubuntuをあなたのユーザーに置き換えてください。

  • inventory_builderスクリプトを使用してインベントリファイルを生成することもできます:

    declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
    HOST_PREFIX=dcm-cp- KUBE_CONTROL_HOSTS=3 CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
    

設定のカスタマイズ

  • inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.ymlファイルでKubernetesクラスターの設定をカスタマイズしてください。例えば:

    kube_network_plugin: flannel
    kubeconfig_localhost: true
    
  • 高可用性を構成するには、VIPとロードバランサーを設定してください:

    # inventory/mycluster/group_vars/all/all.yml
    kube_vip_arp_enabled: true
    kube_vip_enabled: true
    kube_vip_controlplane_enabled: true
    kube_vip_address: 10.7.12.250  # 正しいVIPに更新
    kube_vip_interface: eno1  # 正しいインターフェースに更新
    

クラスターの展開

  • Kubernetesを展開するためのAnsibleプレイブックを実行してください:
    ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml -b -v --become --become-user=root --private-key=~/.ssh/private_key
    

展開後の手順

  • 展開が完了すると、inventory/mycluster/artifactsディレクトリにkubeconfigファイルが見つかります。このファイルは、kubectlを使用してKubernetesクラスターとやり取りするために必要です。
    export KUBECONFIG=inventory/mycluster/artifacts/admin.conf
    kubectl get nodes
    

トラブルシューティングおよびアクセス

  • クラスターのトラブルシューティングやアクセスを行うには、コントロールマシンまたはクラスターを管理する予定の任意のマシンにkubectlバイナリがインストールされていることを確認してください。
  • ワーカーノードが準備できていない、または他のポッドのスケジューリング問題などの問題に遭遇した場合は、ログを確認し、必要に応じて設定を調整してください。

有用なリンク