2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
リンクをコピー
記事をブックマーク
真壁徹氏:ただ今紹介していただきました、真壁です。よろしくお願いします。マイクロソフトで9年ぐらいソリューションアーキテクトをやっていますが、AKS(Azure Kubernetes Service)が得意です。お客さまの案件をたくさんお手伝いしているので、みなさんがこれまで困っていたアップデートについて、今日いろいろと話せればと思います。40分ほどお時間をいただいて進めようと思います。よろしくお願いします。
自己紹介もほどほどにして、本題に入りたいと思います。最近ポータルでAKSのクラスタを作った方がいると思うのですが、「おや?」と思いませんでしたか? 以前もアップグレードの設定はあったのですが控えめで、自動アップグレードしないみたいなオプションで入っていて、それが既定だったと思います。
(スライドを示して)最近は、「『Kubernetes』の自動アップグレードはおすすめ」。あとは「KubernetesのいわゆるワーカーノードのOSのイメージは自動アップグレードがおすすめ」。こんな感じになっています。初めに見た時はビックリしました。
街の声を集めてみました。自動アップグレードはいわゆるインプレースなんですよね。クラスタを動かしながら、動いているクラスタをアップグレードする。カッコイイ表現をすると、これは飛行機を飛ばしながら空中で給油する、もしくは飛ばしながらエンジンとかを交換する、そんな感じです。こういうのをインプレースというのですが、「辞めた先輩は『インプレースだけは止めろ』と言って辞めていった」みたいな話はけっこうあります。
クラスタを2つ並べて、Blue/Greenという、新しくアップデートするクラスタを新しく作って、動かしているものはそのままにして、新しいバージョンでテストをしてOKだったらスッとトラフィックを切り替える方式があります。「何かあったら怖い」というお客さまは、けっこうBlue/Greenアップグレードをしています。
あとはたまに、「作ってから1回もアップデートしていません」という人もいるのですが、これは止めてくださいね。止めてください。
これが街の声です。
2021年なら「怖い」「Blue/Greenしたい」という声はわかります。「そうしましょう」と言っていたんですが、今それを言われると「ん? ちょっと待ってください。最近、状況が変わってきましてね」というのを今日の話の枕にしようかなと思っています。実際に状況が変わってきています。
ということで、AKSのアップデートの機能や諸々それにまつわる最新状況をおさらいします。(スライドを示して)知っている方はいると思うんですが、AKSを利用していてもアップデートをよくわかっていない方は意外といます。先ほどの「1回もアップグレードしたことがない」みたいな方もいるので、意外と知られていません。なのでおさらいをします。
アップデートは3種類あります。1つ目はAKSメンテナンスと言われているもので、言葉は悪いですが、Azure側で勝手に毎週パッチを当てているような状況ですね。気づいていないお客さまはかなり多いです。
何がアップグレードされているかというと、管理系の機能やアドオンですね。いわゆるネットワークのプラグインやストレージのドライバなど、ああいうアドオンがちょこちょことパッチレベルで当たっています。これがAKSメンテナンスです。
2つ目が、これが今日の一番のトピックになると思いますが、Kubernetesのアップグレードですね。今は1.29(Kubernetes 1.29)が最新かな? 1.29については後ほど話しますが、これはマイナーバージョンです。
マイナーバージョンをアップグレードしたり、あとはパッチバージョンで1.29.0とか1.29.1などがありますが、これらのアップグレードをKubernetesアップグレードと呼んでいます。これを怖いと言っているお客さまがけっこう多いです。自動もできるし、ユーザーが手動で「このバージョンに、このタイミングで上げたい」ということもできます。
最後にNodeイメージアップグレードということで、KubernetesのWorker Nodeの、いわゆるOSやシステムソフトウェアに入っているイメージをアップグレードします。これはLinux、Windowsにもありますが、Linuxの場合はほぼ週次、Windowsの場合はほぼ月次で新しいイメージが使えるようになります。これも自動適用もできるし、手動の適用もできます。
すべてのアップグレードはインプレースです。動かしながらアップグレードします。
(スライドを示して)「このあたりの情報は、どこかにまとまっていないの?」と、よく聞かれるのですが、まとまっています。今日の資料は、後ほど「Speaker Deck」に上げます。Speaker Deckでダウンロードしてもらうと資料にリンクが入っていて、リンクが押せるようになります。
このリンクを見てもらいたいのですが、「GitHub」にAKSのCHANGELOGが出ています。ほぼ毎週出ています。
「どんな変更がこれからありますか?」とか「新しいイメージのバージョンが出ましたよ」とか、すべてここにまとまっていると言っても過言ではないので、ぜひ見てください。
重大な変更で、「次のバージョンやその次のバージョンでこういう大きな破壊的変更があるよ」というのは毎週のようにしつこく出ているので、ここを毎週、毎週見なくても2週間おきぐらいに見ておけば、だいたい状況がわかります。ぜひ見てもらえればと思います。
(スライドを示して)先ほど話してしまったし、知っている方が多いと思いますが、KubernetesのバージョンはX.Y.Zみたいな感じになっています。一番左のXがメジャーで、これは1回も上がったことがないですね。2番目がマイナー、最後がパッチということでセマンティックバージョンの体をしているのですが、違います。
セマンティックバージョンは、APIが使えなくなって変更になったらメジャーを上げないといけないのですが、Kubernetesはマイナーを上げてきます。なので、ずっと1のままです。今後1から2に上がる日が来るかもしれないですが、セマンティックバージョニングとはちょっと違うということだけ覚えておいてください。
「アップグレードでどういうことが行われるの?」ということは、簡単にここで紹介しておきたいと思います。3つあるうちの1つですね。Kubernetesアップグレードでどんなことが行われているかを簡単に紹介します。
まず、この絵の左側に「リージョンコントロールプレーン」とあります。各Azureのリージョンが、日本なら東日本、西日本とあります。例えば今はKubernetes 1.29が最新ですが、1.30が来たら「1.30のソフトウェアが使えるよ」とアップロードされます。
MasterとNodeのそれぞれにコンポーネントがアップロードされるのですが、これがアップロードされると、ユーザーがアップグレードでそのバージョンを選べるようになります。あとは毎週のようにLinuxやWindowsのOSのシステムイメージがアップロードされていて、これもアップロードされた瞬間にユーザーが選べるようになります。
手動アップグレードをするとしましょう。例えば1.29から1.30に上げようとする時に、ポチッとボタンを押しました。(スライドを示して)ここでは右側のAKSクラスタをイメージしていますが、この絵でいう真ん中あたりの、ユーザーからは見えないMaster Nodeの上のAPIサーバーやコントローラーといった、コントロールプレーン系のコンポーネントからバージョンアップします。
それらがアップグレードされて、それが終わったらWoker Nodeのアップグレードに移るという順番になっています。Woker Nodeのアップグレードはローリングアップグレードです。新しいNodeを新しいイメージに追加して、その上に新しいバージョンのKubernetes、Nodeのコンポーネントを入れます。
それが立ち上がってくると、古いというか、既存のNode上で動いていたユーザーのPodも動かせる状態になります。Drainと言いますが、まずそのNodeに新しいPodが配置されないようにして(Cordon)、そのあとEviction、退出と呼ばれますが、そのPodを消します。消して、新しいNodeでPodが動きます。これを順々に繰り返していくのがKubernetesアップグレードですね。
AKSメンテナンスやNodeイメージのアップグレードなどの細かい話、あとはそれぞれに気をつけたほうがいいことや仕様は、この資料のお尻に付録を付けてあるので、この今日のイベントが終わったあとに、資料を見てもらえればと思います。
3つのアップデートで考慮すべき点を整理してきました。いくつかの視点というか、気をつけなければいけない切り口があります。
提供タイミングはやはり気になりますよね。それはどのぐらいの頻度で出てくるのか。これは気になるところだと思います。
あとは強制的に適用されるのか、されないのか。自動化できるのか。自動化できる場合にはスケジュールですね。夜中にできるとか、週末にできるとか、「ここではしてほしくない」とか、そういう自動化のスケジュールを制御できるのか。
あとはNodeを作り直すのかということは、けっこうポイントだと思います。こういうところは気になるところかなと思います。
一番気にしなければいけないのは、やはりKubernetesのマイナーバージョンアップです。ここではAPIの破壊的な変更が入る可能性があって、一番ケアしなければいけません。
自動化しようと思ったらすべて自動化できます。マネージドサービスなのですべてAzureに任せて、自分たちはメンテナンスやアップグレードのポチ(とボタンを押すこと)をまったくやらないこともできます。
自動化する時には自分のやりたいタイミング、時間帯がいいです。これはすべて選べます。ここがポイントです。
ということで、自動化をするか、しないか。どうするかはAKSの運用負担にかなり影響します。
3つのメンテナンスのアップデートがあるという話をしましたが、それぞれメンテナンス構成というものがあって、それごとにスケジュールや、チャネルと呼ばれる、どういうアップデートをするのかを選ぶことができます。
例えばaksManagedAutoUpgradeSchedule。「わからんわ!」となりそうなやつですね。
これがKubernetesのアップデートの細かい指定です。スケジュールとチャネルを選ぶことができます。デフォルトはnoneで、自動アップグレードはしません。すべてユーザーのやりたいタイミングで、アップデートしたいバージョンを指定してやるのがAPIの規定です。
最近、ポータルの推奨がpatchになりました。例えば1.27.9だとすると、このお尻の9は、10が出た場合や11が出た場合に自動アップグレードします。ただ、1.27の27のマイナーバージョンが上がっても上げないよというのが、patchチャネルです。これがポータルのおすすめになりますね。
その他のstable、rapidは、マイナーバージョンも大胆に自動で上げます。これを選ぶのは若干チャレンジなのかなという気はしますが、選ぶことはできます。
(スライドを示して)NodeOSのイメージも自動化してチャネルを選ぶことができます。規定はNodeImageで、これは新しいNodeイメージが出たら先ほど話したとおりNodeをローリングアップデートをします。ほぼ毎週新しいNodeイメージが出てくるので、これが嫌な場合にはnoneやUnmanagedというチャネルを選びます。
Unmanagedをしているケースが多いかもしれないですね。Unmanagedだと、例えばUbuntuであればUnattended-upgrade。再起動を伴わないアップデートが自動で適用されます。毎日適用されます。朝だったかな? 日本だと朝方※に適用されているかと思います。再起動が必要なアップデートは溜まっていって、再起動された時にそのパッチが当たるかたちになります。
Unmanagedというのは「OSの機能に任せちゃうよ」ということですね。AKSとしては「OSの機能でアップデートしてください」という設定をするだけです。ここまでが最新のAKSのアップデート事情です。
※話者補足: 現在はsystemdのタイマーでUTCの6時、18時に開始し、かつ12時間のランダム遅延が指定されている。
(次回につづく)
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略