2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
真壁徹氏:ただ今紹介していただきました、真壁です。よろしくお願いします。マイクロソフトで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.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.12
今までとこれからで、エンジニアに求められる「スキル」の違い AI時代のエンジニアの未来と生存戦略のカギとは
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05