githubixx.kubernetes_worker
ansible-role-kubernetes-worker
このAnsibleロールは、Ansibleを使用したKubernetesの簡単なやり方 - ワーカーで使用されます。このAnsibleロールはKubernetesのワーカーノードを設定します。詳細については、Ansibleを使用したKubernetesの簡単なやり方 - ワーカーをご覧ください。
バージョン
各リリースにタグを付け、セマンティック バージョニングを守るようにしています。このロールを使用する場合は、最新のタグをチェックアウトすることをお勧めします。マスターブランチは主に開発用で、タグが安定したリリースを示します。タグ 24.0.0+1.27.8
は、このロールのリリース 24.0.0
であり、Kubernetesバージョン 1.27.8
とともに使用されることを意図しています(もちろんK8s 1.27.xリリースでも動作するはずです)。ロール自体に変更があった場合は、 +
の前の X.Y.Z
が増加します。Kubernetesバージョンが変更されると、 +
の後の X.Y.Z
も増加します。これにより、特定のKubernetesリリースのために開発されている間に、バグ修正や新しいメジャーバージョンのタグを付けることができます。特に、破壊的な変更を伴うKubernetesのメジャーリリースに役立ちます。
要件
このプレイブックは、すでにKubernetesコントローラーコンポーネントが展開されていることを前提としています(kubernetes-controllerや、Ansibleを使用したKubernetesの簡単なやり方 - コントロールプレーンを参照してください)。
また、containerd、CNIプラグイン、およびruncをインストールする必要があります。Kubernetes Pods
が異なるホスト間で通信できるようにするためには、ワーカーノードが稼働した後にCiliumをインストールするのが理にかなっています。もちろん、Calico
、WeaveNet
、kube-router
、またはflannelなど、他のKubernetesネットワークソリューションも有効な選択肢です。
対応OS
- Ubuntu 20.04 (Focal Fossa)
- Ubuntu 22.04 (Jammy Jellyfish)
チェンジログ
変更履歴:
完全なCHANGELOG.mdを参照してください。
重要 バージョン 24.0.0+1.27.8
には多くの潜在的な破壊的変更がありました。したがって、バージョン < 24.0.0+1.27.8
からアップグレードする場合は、そのバージョンのCHANGELOGもお読みください!
最近の変更:
26.0.0+1.29.4
更新
k8s_release
を1.29.4
に更新
MOLECULE
generic
Vagrantボックスの代わりにalvistack
を使用
25.0.1+1.28.8
- 更新
k8s_release
を1.28.8
に更新
25.0.0+1.28.5
更新
k8s_release
を1.28.5
に更新
その他の変更
- Ansible Galaxyの変更に伴い、Githubアクションを調整
.yamllint
: 最大行長を200から300に拡張
MOLECULE
- テスト資産VMのためにUbuntu 22.04に変更
- IPアドレスを変更
- 証明書の一般名を調整/アルゴリズムをecdsaに変更し、アルゴリズムサイズを変更
collections.yml
を削除
インストール
GitHubから直接ダウンロード(クローンする前にAnsibleロールディレクトリに移動してください。ロールパスは
ansible-config dump | grep DEFAULT_ROLES_PATH
コマンドで確認できます):git clone https://github.com/githubixx/ansible-role-kubernetes-worker.git githubixx.kubernetes_worker
ansible-galaxy
コマンドを使用して、Ansible Galaxyから直接ダウンロード:ansible-galaxy install role githubixx.kubernetes_worker
次の内容で
requirements.yml
ファイルを作成し(これによりGitHubからロールがダウンロードされます)、次のコマンドでインストール:ansible-galaxy role install -r requirements.yml
(必要に応じてversion
を変更):
---
roles:
- name: githubixx.kubernetes_worker
src: https://github.com/githubixx/ansible-role-kubernetes-worker.git
version: 26.0.0+1.29.4
ロール変数
# Kubernetesの設定や証明書ファイルの基本ディレクトリ
k8s_worker_conf_dir: "/etc/kubernetes/worker"
# "k8s_worker_certificates"に指定されたすべての証明書ファイルはここに保存されます。
k8s_worker_pki_dir: "{{ k8s_worker_conf_dir }}/pki"
# Kubernetesバイナリを保存するディレクトリ
k8s_worker_bin_dir: "/usr/local/bin"
# K8sリリース
k8s_worker_release: "1.29.4"
# Kubernetesサービスがリッスンするインターフェース
k8s_interface: "eth0"
# K8s証明書をコピーするディレクトリ
k8s_ca_conf_directory: "{{ '~/k8s/certs' | expanduser }}"
# Kubernetes APIエンドポイントのIPアドレスまたはホスト名
k8s_worker_api_endpoint_host: "{% set controller_host = groups['k8s_controller'][0] %}{{ hostvars[controller_host]['ansible_' + hostvars[controller_host]['k8s_interface']].ipv4.address }}"
# Kubernetes APIサーバーのリッスンポート
k8s_worker_api_endpoint_port: "6443"
# Kubernetesワーカーノードに必要なOSパッケージ
k8s_worker_os_packages:
- ebtables
- ethtool
- ipset
- conntrack
- iptables
- iptstate
- netstat-nat
- socat
- netbase
# kubeletの設定を保存するディレクトリ
k8s_worker_kubelet_conf_dir: "{{ k8s_worker_conf_dir }}/kubelet"
依存関係
サンプルプレイブック
- hosts: k8s_worker
roles:
- githubixx.kubernetes_worker
テスト
このロールには、Molecule、libvirt (vagrant-libvirt)、およびQEMU/KVMを使って作成された小さなテストセットアップがあります。セットアップ方法については、私のブログ投稿Testing Ansible roles with Molecule, libvirt (vagrant-libvirt) and QEMU/KVMを参照してください。テスト設定はこちらにあります。
その後、次のコマンドを実行してMoleculeを実行できます。これにより、サポートされているUbuntu OSを持ついくつかの仮想マシン(VM)がセットアップされ、Kubernetesクラスターがインストールされます:
molecule converge
この時点では、ネットワークプラグインが不足しているため、クラスターは完全には機能していません。例えば、異なるノード間でのPod間通信はまだできません。これを修正するには、次のコマンドを使用してKubernetesのネットワーキングニーズのためのCiliumとKubernetes DNS用のCoreDNSをインストールします:
molecule converge -- --extra-vars k8s_worker_setup_networking=install
これでほぼ完全に機能するKubernetesクラスターが得られます。
簡単な検証ステップも含まれています:
molecule verify
クリーンアップするには、次のコマンドを実行します:
molecule destroy
ライセンス
GNU一般公衆ライセンス 第3版
著者情報
ansible-galaxy install githubixx.kubernetes_worker