LoginSignup
10
2

More than 3 years have passed since last update.

AKS ノードに関するお問い合わせあれこれ

Last updated at Posted at 2019-12-13

この記事は、Microsoft Azure Tech Advent Calendar 2019 13 日目です。

こんにちは、@task_woof です。普段、AKS 等の IaaS 製品で技術サポートをしています。
毎回華やかな (?) アップデートが多い AKS ですが、今回は地味目なテーマでお送りしますー:sweat_smile:

はじめに

Azure Kubernetes Servcie (以降、AKS) は、マスター機能 (kube-apisever, kube-schedular, etcd) を Azure 側がマネージドサービスとして提供し、エージェント機能 をご利用者と Azure で責任を持ち合うような形を取っています。

今回は、AKS ノードに関して比較的よくいただくお問い合わせについて紹介いたします。

  1. AKS ノードの停止 (割り当て解除) が可能か
  2. 仮想マシンのサイズを変更したい
  3. 脆弱性対応は必要か
  4. 時刻同期はどのように行われているか
  5. AKS ノードに特定のパッケージをインストールしたい

1.AKS ノードの停止 (割り当て解除) が可能か

はい、開発目的等により利用金額を抑えたい場合、仮想マシンを停止 (割り当て解除) いただくことが可能です。
ただ、停止 (割り当て解除) された場合でも、ストレージの利用料金が掛かることにご注意ください 1

2.仮想マシンのサイズを変更したい

AKS ノードは、通常の仮想マシン/仮想マシンスケールセットと同様に、変更/削除操作がユーザから可能です。

そのため、ワークロードの増大によりサイズ変更されたいというのは、
良くある話ですが、残念ながらこちらは操作自体は可能なもののサポートされておりません。 2

その替わりに、既存 AKS クラスタに変更されたいサイズのノードプールを追加いただくことで、
対応することが可能です。

あとは、Pod がその AKS ノードに配備されるように、マニフェストにて
nodeSelector を追加いただくことで、追加された AKS ノードに Pod を配備するように設定可能です。 3

3.脆弱性対応は必要か

AKS ノードに対する OS, Kubernetes, コンテナランタイムの脆弱性については、セキュリティパッチが配布されます。

Linux ノード (Ubuntu) の場合、Ubuntu の機能 (/lib/systemd/system/apt-daily-upgrade.timer) により、自動適用され、AKS ノードを再起動いただくことにより適用されます。 4
それに対して、Windows ノードの方では、ノードプールをアップグレードいただくことにより、最新の修正が当てられたノードに替わります。

4.時刻同期はどのように行われているか

Linux (Ubuntu 18.04) の場合は、"ntp.ubuntu.com" を 5、Windows の場合は、"time.windows.com" をそれぞれ参照しています。6
また、Pod (コンテナ) は AKS ノードの時刻を参照する挙動となっております。

5.AKS ノードに特定のパッケージをインストールしたい

基本的には、AKS ノードに対する変更は、サポートされません。 7
(AKS ノードにログインしてインストール/設定された変更内容は、スケールアウト/インやアップグレード時に保持されません)

どうしても AKS ノードに対する変更/設定が必要なる場合には、DaemonSet をご利用ください。
DaemonSet リソースは必ず AKS ノード 1 台に 1 つ作成されるリソースになります。
この性質を利用して、ソフトウェアのインストール 8 や セキュリティソフトの実行 9 が行うことができます。

Windows ノードが混在する場合には、nodeSelectorbeta.kubernetes.io/os により、OS の種別を指定してください。

$ cat << EOF | kubectl apply -f -
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: installpkg
  namespace: kube-system
spec:
  template:
    metadata:
      labels:
        name: installpkg
    spec:
      hostPID: true
      hostNetwork: true
      containers:
        - name: installpkg
          image: busybox
          command:
            - nsenter
            - --mount=/proc/1/ns/mnt
            - --
            - sh
            - -c
            - apt-get update -y && apt-get install -y monit
          securityContext:
            privileged: true
EOF

最後に、現在 Azure では Kubernetes をご利用いただくにあたり、Azure Container Service (ACS) という選択肢もありますが、こちらは、2020 年 1 月 31 日に廃止予定です。 10

ということでますます AKS を利用される機会が増えること思いますので、引き続きご支援できればと思います:whale:

 
10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2