SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

AKS on Azure Stack HCI についてのメモ

leave a comment

AKS on Azure Stack HCI を Windows Server 2019 の 1 ノード環境ではありますが、1 台起動したままにすることができそうなので、この機会に勉強を兼ねてメモを残しておきたいと思います。

AKS on Azure Stack HCI は、検証用途であれば 1 台の Windows Server 2019 上で動作させることができます。

image

64 GB / 4 Core (HT : 8 Core) の NUC が 1 台あれば、構築することができ、Windows Server 上で Kubernetes を展開することができます。

私のような今まで Windows をメインに触ってきたエンジニアでも Kubernetes の検証環境を容易に作ることができますので、k8s の勉強環境にも活用できるかと。

基本的には、Azure Stack HCI の Azure Kubernetes Service のドキュメント のドキュメントを確認しながら、勉強した内容を適宜更新していきたいと思います。

基本構成

基本的な構成については、次のドキュメントを見ながら確認することになるかと思います。

AKS on Azure Stack HCI では、Management Cluster と、Workload Cluster の 2 つの Kubernetes クラスターが構築されます。

image

Management Cluster は AKS on HCI を展開した際に最初に作成される k8s のクラスターであり、1 ノードの k8s として構成が行われます。
この環境はユーザーのワークロードを実行するためではなく、Admin Center や Azure との接続で利用されているものとなるかと。

ユーザーワークロードについては、Management Cluster 展開後に作成する Kubbernetes クラスターである、Workload Cluster を使用することになります。

image

現状の、Workload Cluster は、

  • 1 台のロードバランサー用の仮想マシン
  • 1,3,5 台のコントロールプレーン (Kubernetes Master ノード) 用の仮想マシン
  • 1 台の Linux プール用仮想マシン (Kubernetes Worker ノード)
  • 1 台の Windows プール用仮想マシン (Kubernetes Worker ノード)

で構成が行われます。

Linux プール / Windows プールの Worker ノードは混在させることが可能ですが、現時点では、各ノードは 1 台ずつしか作成ができないようで、各 OS のノードを複数台で構築するということはできないようです。

これについては、Preview 時の制限のような気もするのですが、1 ノードの Windows Server 2019 で検証した範囲では、Linux Pool のノード数を 2 に設定しても、1 ノードで展開がされていました。

 

Supported resource limits, VM sizes, and regions に記載されていますが、現在の構成の構成としては次の内容が上限となっているようです。

image

AKS on HCI 上に Kubernetes クラスターは 4 環境まで作成することができるようですので、用途に応じた複数のクラスターを準備するということも可能なようですね。

管理用コマンド

AKS on Azure Stack HCI の管理は AksHci コマンドレット が提供されていますので、AKS on Azure Stack HCI を展開している Windows サーバー上にコマンドレットをインストールして管理を行うことになるかと思います。
(このコマンドレットをリモートから直接実行する方法がわからず)

トラブルシューティングのドキュメントツリー内に記載がされているのですが、Connect with SSH to Windows or Linux worker nodes for maintenance and troubleshooting によるアクセスも提供されており、SSH を使用して、構成されている各仮想マシンに SSH 経由でアクセスを行うことが可能です。

Management Cluster / Workload Cluster ともに、kubectl で接続を行うことができますので、k8s の一般的な操作も、もちろん可能です。

SSH については、AKS on Azure Stack ACI を構築したホスト OS 上の 「AksHCI\.ssh」の秘密鍵を使用することで各ノードに接続を行うことができます。

kubectl については「Get-AksHciCredential」をホスト OS 上で実行することで、kubectl で使用するコンフィグが取得できますので、こちらを使用することで各 k8s の情報を取得することが可能です。(SSH でノードにログインして kubectl を実行しても情報は取得可能です)

使用されている Linux

AKS on Azure Stack HCI は Linux の仮想マシンを Hyper-V 上に展開し、k8s が構成されます。

使用されている Linux のディストリビューションですが、次の内容となるようです。
image

AKS on Azure Stack HCI で展開される Linux は、基本的に、Microsoft の Linux ディストリビューションとなる CBL-Mariner (CBL : Common Base Linux) が使用されているようです。

Wikipedia の CBL-Mariner を確認したら、AKS on Azure Stack HCI でも使用されていることが記載されていますね。

Microsoft’s Internal Linux Distribution "CBL-Mariner" Continues Maturing も見るとよさそうですね。

パッケージ管理には、rpm が使用されており、yum を使って、https://packages.microsoft.com/cbl-mariner/1.0/prod/base/x86_64/rpms/ のパッケージをインストールできるようです。

ロードバランサー

AKS on HCI には、デフォルトで Service として、 Loadbalancer を使用することができるようになっています。
以前、Big Data Cluster 用に Ubuntu 上に Kubernetes を構築していた際には、METALLB を Loadbalancer として使用していたので、AKS on HCI がどのように Loadbalancer を構築しているのか気になったので軽く確認してみたところ、HAProxy が使用されているようですね。

Loadbalancer の Serivce を作成すると、ロードバランサー用の仮想マシンに、Service で使用される IP アドレス (以下の画像であれば、10.5.x.x) が追加で設定されます。
image

haproxy.cfg も自動的に追加されて、ロードバランサーとして動作しているようです。

image

IP の追加や haproxy.cfg への設定追加をどのように実施しているのかについてはまだ、把握できていないのですが、IP のリダイレクトについては HA Proxy が活用されているようですね。

 

CNI

ネットワークについては、次のドキュメントで確認することになるかと。

CNI プラグインとしては、Flannel / Calico を使用することができます。

 

CSI

CSI ドライバーについては、Windows Server 2019 を 1 台で使用した場合は、disk.csi.akshci.com がプロビジョナーとして使用され、AKS を動作させている Windows サーバー上で起動している「wssdcloudagent.exe」を経由して、ローカルディスクが活用されているようです。

ディスクの CSI ドライバーについては、AKS on Azure Stack HCI ディスクの Container Storage Interface (CSI) ドライバーを使用する で解説がされており、Windows Server 2019 を 1 台使用して展開した場合は、これがデフォルトのストレージクラスとなります。

ほかには、AKS on Azure Stack HCI ファイルの Container Storage Interface (CSI) ドライバーを使用する の手順も公開されており、SMB / CIFS についても利用することができます。

AKS on HCI 使用されている CSI ドライバーそのものではないと思いますが、以下がベースになっているのではないでしょうか。

Written by Masayuki.Ozawa

7月 15th, 2021 at 12:13 am

Leave a Reply

Share via
Copy link
Powered by Social Snap