servermemoのブログservermemoのブログ読者になるservermemoのブログサーバー構築の手順をまとめる予定です。コンテナ要件このガイドは次のバージョンのUbuntu(の最新版)で動作確認をしています。V1設定に変更が必要。1.24.1をインストールする例を示しています。SWAPのオフSwapパーティションをコメントアウト、およびswapoffを実行します。-a初期設定とランタイムのインストール本例ではcontainerdをインストールします。Archives版のcontaienrdパッケージとDockerリポジトリーに含まれるcontaienrd.ioパッケージのいずれかを使って、Ubuntuにcontainerdをインストールできます。Dockerリポジトリーに含まれる方が、新しいバージョンが使えるのでおすすめです。こちらに書かれている事前設定をそれぞれ行います。22.04以前のバージョンでは不要です)。tech.virtualtech.jp次に従って、リポジトリーの有効化を行います。docs.docker.comインストールは次のように行います。containerd.ioその後、containerdの設定の作成と必要に応じて設定の変更、containerdサービスの再起動を行います。kubeadmに従って、リポジトリーの有効化を行います。手元の環境ではインストール済みでしたが、インストールされていない場合は導入します。Cloudの公開署名キーをダウンロードします。aptリポジトリーの追加を行います。/etc/apt/sources.list.d/kubernetes.listkubeadm,kubelet,kubectlのインストールとバージョンの固定を行います。バージョンを指定する場合アプリケーションの都合で特定のバージョンが必要な場合は次のように指定してインストールします。Kubernetesは最新版を使うのを最も推奨します。次のようなオプションを追加して、クラスターを作成します。バージョンを指定します。指定できるバージョンにはある程度上限、下限があります。適切なkubeadmツールの導入が必要です。Podに割り当てるネットワークの範囲を定義するものです。ネットワークプラグイン(CNIとも呼ぶ)を追加する際に必要な範囲です。CNIをインストールするときにCNI側の設定を変更するか、クラスター作成時に後々インストールするCNIに合わせて設定をしておく必要があります。現在利用中のCIDRを指定しないように気をつけます。APIなどが使うエンドポイントIPアドレスです。ホストのeth0とかのアドレスを設定すれば良いでしょう。グローバルIPアドレスを指定しないよう気をつけます。上記を実行すると処理が始まります。successfully!と表示され、この後することが出力されます。kubectlコマンドを使えるようにするために、kubeconfigの設定を行います。join行のコマンドを実行します。ちなみにここで示されたトークンキーには期限があり、数日経ってからノードを追加しようとしてもうまくいきません。--print-join-commandで作成できます。joinの実行時に指定します。1台目のマシンでPodをスケジューリングできるようにするには次のコマンドを実行します。node-role.kubernetes.io/master-クラスターネットワークの適用Kubernetesクラスターにネットワークアドオンを追加します。利用できるネットワークアドオンの代表的なものはアドオンのインストールにまとめられています。flannelにあるように、次のように実行します。CIDRは10.244.0.0/16が要件です。どちらかを適切なものに合わせます。https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.ymlクラスターでPodを作ってみる構築したクラスターでPodが作成できるか試してみます。hello-node以上でUbuntuでkubeadmを使ったKubernetesクラスタの構築は完了です。8向けのセットアップ方法と同じように設定すれば環境の準備はできる。1.20.0時点のセットアップ方法を記述している。Linuxのダウンロード次からダウンロードする。Engineのリポジトリーのパッケージを利用する(EL8には標準リポジトリーにDockerがないため。これはRHEL8やCentOS8と一緒)。EngineのサポートOSではないが、CentOS向けパッケージを利用することにする。Kubernetesにおけるdockershimを用いたDockerのサポートは間も無く終了なので、containerdを推奨。containerdランタイム由来の設定の適用ランタイムを入れるときの事前設定方法は公式の設定に従う。driver」で述べられている設定を忘れずに。true設定変更後にサービスを起動。containerdkubeadmツールなどの導入kubeadmツールなどのインストールは、公式に従うと最新のバージョンをセットアップできる。共通2行目は実際のネットワークセグメントを許可する。--reloadmaster2行目はCNIで実際指定するネットワークセグメントを許可する。--reloadworker2行目はCNIで実際指定するネットワークセグメントを許可する。--reloadCalicoを使う場合は以下のポートなども許可。シングルノードでは特に設定しないでも良い。initコマンドを使う。外からアクセスできるIPアドレスを指定。エンドポイントを外部にさらさない(内部で使うだけ)ならローカルネットワークアドレスで良い。....CNIを導入。様々なネットワークアドオンが存在する。Linuxのダウンロード次からダウンロードする。public-yum.oracle.comリポジトリーの有効化add-onsリポジトリーを有効にすると、Dockerおよびcontainerdをインストールできる。このパッケージを使って構築できる。Kubernetesにおけるdockershimを用いたDockerのサポートは間も無く終了なので、containerdを推奨。containerdランタイム由来の設定の適用ランタイムを入れるときの事前設定方法は公式の設定に従う。driver」で述べられている設定の追記を忘れずに。true設定変更後にサービスを起動。containerdkubeadmツールなどの導入kubeadmツールなどのインストールは、公式に従うと最新のバージョンをセットアップできる。共通2行目は実際のネットワークセグメントを許可する。--reloadmaster2行目はCNIで実際指定するネットワークセグメントを許可する。--reloadworker2行目はCNIで実際指定するネットワークセグメントを許可する。--reloadCalicoを使う場合は以下のポートなども許可。シングルノードでは特に設定しないでも良い。initコマンドを使う。外からアクセスできるIPアドレスを指定。エンドポイントを外部にさらさない(内部で使うだけ)ならローカルネットワークアドレスで良い。....CNIを導入。様々なネットワークアドオンが存在する。1.18.3の組み合わせの動作を確認Kubeletの設定方法が変わっていた。7のインストールインストール方法は省略。ファイアウォールfirewall-cmdを使って以下のように設定しました。書かれているコマンドを実行。CRI-Oの設定を確認conmonとcgroup_managerの設定を確認。以下のように設定しました。kubectlパッケージをインストールする。kubeletK8sクラスタのデプロイ「pod-network-cidr」は導入するCNIに適したものを設定する。ノードに設定されているIPアドレスのうち、外部からアクセスできるものを指定する。--control-plane-endpoint=192.168.1.70Kubeconfigの用意kubeadmでクラスター作成がうまくいくと、コマンドを実行しろと言われるので実行。1nodeにする場合は次を実行。joinコマンドをWorkerノードで実行。node-role.kubernetes.io/master-Podネットワークアドオンのインストール任意のPodネットワークアドオンをインストールする。筆者が動作確認したバージョンは以下のとおり。Calicoは以下のバージョンで正常に動いた。構築した環境を使って、公式サイトの「アプリケーションの実行」を試してみましょう。ダウンロード次からダウンロードする。7.8のファイアウォール設定firewall-cmdで次のように設定しました。1.0)が有効になっている。cri-oKubeletの設定を変更KubeletでCRI-O由来の設定をパラメータ指定する。設定は以下のように行いました。https://gist.github.com/ytooyama/0dbe4a57253a426515287da5a3e6ad75K8sクラスタのデプロイオプションが変わったので注意。「pod-network-cidr」は導入するCNIに適したものを設定する。--control-plane-endpoint=192.168.1.70Kubeconfigの用意kubeadmでクラスター作成がうまくいくと、コマンドを実行しろと言われるので実行。1nodeにする場合は次を実行。joinコマンドをWorkerノードで実行。詳細は公式ドキュメントの「ノードの追加」を参照。node-role.kubernetes.io/master-Podネットワークアドオンのインストール任意のPodネットワークアドオンをインストールする。筆者が動作確認したバージョンは以下のとおり。Flannelは以下のバージョンで正常に動いた。Flannelは以下のバージョンで正常に動いた。Calicoは以下のバージョンで正常に動いた。Calicoは以下のバージョンで正常に動いた。構築した環境を使って、公式サイトの「アプリケーションの実行」を試してみましょう。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。