garutilorenzo.ansible-role-linux-kubernetes

高可用Kubernetesクラスターのインストールと設定

このAnsibleロールは、高可用性のKubernetesクラスターをインストールして設定します。このリポジトリは、kubeadmを使用してKubernetesのインストールプロセスを自動化します。

このリポジトリは、Ansibleを使用してKubernetesクラスターをインストールおよび設定する方法の一例です。本番環境で使用する場合は、Kubesprayを使用してください。

必要条件

Ansible、ipaddr、およびnetaddrをインストールします:

pip install -r requirements.txt

GitHubからロールをダウンロード:

ansible-galaxy install git+https://github.com/garutilorenzo/ansible-role-linux-kubernetes.git

ロール変数

このロールは次の変数を受け付けます:

変数 必須 デフォルト 説明
kubernetes_subnet はい 192.168.25.0/24 Kubernetesをデプロイするサブネットです。VMまたはベアメタルサーバーに複数のインターフェイスがある場合、Ansibleはインターフェイスサブネットに基づいてKubernetesで使用されるインターフェイスをフィルタリングします。
disable_firewall いいえ no yesに設定すると、Ansibleはファイアウォールを無効にします。
kubernetes_version いいえ 1.25.0 インストールするKubernetesのバージョン
kubernetes_cri いいえ containerd インストールするKubernetesのCRIです。
kubernetes_cni いいえ flannel インストールするKubernetesのCNIです。
kubernetes_dns_domain いいえ cluster.local KubernetesのデフォルトDNSドメイン
kubernetes_pod_subnet いいえ 10.244.0.0/16 Kubernetesポッドのサブネット
kubernetes_service_subnet いいえ 10.96.0.0/12 Kubernetesサービスのサブネット
kubernetes_api_port いいえ 6443 kubeapiのリスンポート
setup_vip いいえ no kube-vipを使用してKubernetes VIPアドレスを設定します。
kubernetes_vip_ip いいえ 192.168.25.225 setup_vipyesに設定されている場合に必須です。制御プレーンのVIP IPアドレス
kubevip_version いいえ v0.4.3 kube-vipコンテナのバージョン
install_longhorn いいえ no Kubernetesのためのクラウドネイティブ分散ブロックストレージLonghornをインストールします。
longhorn_version いいえ v1.3.1 Longhornのリリース。
install_nginx_ingress いいえ no nginx ingress controllerをインストールします。
nginx_ingress_controller_version いいえ controller-v1.3.0 nginx ingress controllerのバージョン
nginx_ingress_controller_http_nodeport いいえ 30080 nginx ingress controllerの受信HTTPトラフィックに使用されるNodePort
nginx_ingress_controller_https_nodeport いいえ 30443 nginx ingress controllerの受信HTTPSトラフィックに使用されるNodePort
enable_nginx_ingress_proxy_protocol いいえ no nginx ingress controllerのプロキシプロトコルモードを有効にします
enable_nginx_real_ip いいえ no nginx ingress controllerのreal-ipモジュールを有効にします
nginx_ingress_real_ip_cidr いいえ 0.0.0.0/0 enable_nginx_real_ipyesに設定されている場合に必須です。real-ipモジュールで使用する信頼されたサブネット
nginx_ingress_proxy_body_size いいえ 20m nginx ingress controllerの最大プロキシボディサイズ
sans_base いいえ [list of values, see defaults/main.yml] kube-api証明書に署名するために使用されるIPアドレスまたはFQDNのリスト

追加変数

このロールは追加変数kubernetes_init_hostを受け入れます。この変数は、クラスターが初めてブートストラップされるときに使用されます。この変数の値は、マスターノードの1つのホスト名でなければなりません。Ansibleが一致するホストで実行されると、Kubernetesが初期化されます。

デプロイされたクラスターリソース

このロールを使用すると、Nginx ingress controllerLonghornがインストールされます。

Nginx ingress controller

Nginx ingress controllerは、Ingressコントローラーとして使用されます。

インストールはベアメタルインストールであり、IngressコントローラーはNodePortサービスを介して公開されます。NodePortサービスで公開されるポートをカスタマイズすることができ、ロール変数を使用してこれらの値を変更できます。

Longhorn

Longhornは、Kubernetes用の軽量で信頼性の高い強力な分散ブロックストレージシステムです。

Longhornは、コンテナとマイクロサービスを使用して分散ブロックストレージを実装します。Longhornは各ブロックデバイスボリュームに専用のストレージコントローラーを作成し、複数のノードに保存された複数のレプリカにわたってボリュームを同期的に複製します。ストレージコントローラーとレプリカは、Kubernetesを使用してオーケストレーションされます。

Vagrant

このロールをテストするには、VagrantVirtualboxを使用して例のインフラストラクチャを構築できます。このリポジトリをダウンロードしたら、Vagrantを使用して仮想マシンを起動します:

vagrant up

Vagrantfileで、あなたのパブリックSSHキーをvagrantユーザーのauthorized_keysに直接挿入できます。Vagrantfile内のCHANGE_MEプレースホルダーを変更する必要があります。また、NNODES変数を変更することでデプロイされるVMの数を調整できます(デフォルトは6)。

このロールの使用方法

このロールを使用するには、examples/ディレクトリの例に従います。hosts.iniファイルをホストに合わせて調整し、プレイブックを実行します:

lorenzo@mint-virtual:~$ ansible-playbook -i hosts-ubuntu.ini site.yml -e kubernetes_init_host=k8s-ubuntu-0

(主なコマンドと出力部分の詳細は省略)

Kubernetesクラスターが高可用性モードでデプロイされました。クラスターのステータスを確認できます:

root@k8s-ubuntu-0:~# kubectl get nodes

クラスターのノードの情報が表示されます。

ポッドのステータスを確認できます:

root@k8s-ubuntu-0:~# kubectl get pods --all-namespaces

Nginx ingressコントローラーのサービスを確認でき、HTTPポートが30080、HTTPSポートが30443であることがわかります。外部マシンからingress controllerをテストできます:

lorenzo@mint-virtual:~$ curl -v http://192.168.25.110:30080

以上が、高可用性のKubernetesクラスターをインストール・設定するための手順です。

プロジェクトについて

Install and configure a high available Kubernetes cluster

インストール
ansible-galaxy install garutilorenzo.ansible-role-linux-kubernetes
ライセンス
gpl-3.0
ダウンロード
24
所有者
☁️ Multi Cloud solution architect • 🖥️ Linux system engineer • 🚀 DevOps • 👨‍💻Software developer