Opensourcetechブログ

OpensourcetechによるNGINX/Kubernetes/Zabbix/Neo4j/Linuxなどオープンソース技術に関するブログです。

KubernetesとLinuxの組み合わせで、最強のインフラエンジニアへ!

LinuCエヴァンジェリスト・Open Source Summit Japanボランティアリーダーの鯨井貴博@opensourcetechです。


1.Kubernetes(k8s)とは
Kubernetes(k8s)とは、公式ドキュメントの言葉をかりれば、 「デプロイやスケーリングを自動化したり、コンテナ化されたアプリケーションを管理したりするための、オープンソースのシステム」です。
https://kubernetes.io/ja/

ざっくりいうと、コンテナアプリケーションを動かす土台です。


実は、身近なところでもKubernetesで運用されているシステムがたくさんあります。
なぜABEMAは「サッカーW杯」を安定配信できた? 担当者が明かすリアーキテクチャ、サービスメッシュ導入とは
株式会社メルカリの導入事例:Kubernetes を駆使したマイクロサービス化でグローバルサービスの開発効率を劇的に向上
ヤフーにおけるKubernetesを活用したPlatform Engineeringの取り組み
みんなの銀行:日本初の「デジタルバンク」として Google Cloud に勘定系を構築。Cloud Spanner で銀行基幹システムで求められる可用性を実現


Kubernetesは、以下のようなコンポーネントの集合体で出来ています。

Kubernetes Components


各コンポーネントをカスタマイズしながら構築する方法(kubeadm)であったり、軽量であるk3s、Red Hat OpenShift・Rancherなどのディストリビューション、EKS・AKS・GKEなどのクラウドにおけるマネージドサービスなどさまざまな選択肢があります。
kubeadmを使ってクラスターを構築する
k3s
Red Hat OpenShift
Rancher
Amazon Elastic Kubernetes Service
Azure Kubernetes Service (AKS)
Google Kubernetes Engine(GKE)


2.Linuxとは
Linuxは、1991年にフィンランドの学生であったLinus Torvaldsさんによってversion0.01が公開され、オープンソースで開発が行われている世界最大規模のソフトウェアです。

Linus Torvaldsさん(Linux開発者)とGreg Kroah-Hartmanさん(Linuxカーネルメンテナー)に会ってきた♪

The Linux Kernel Archives


厳密にはカーネルというコアな機能を持つプログラムを指しますが、広い意味ではOSの意味で使われ、Red Hat Enterprise Linux・Debian・Ubuntu・SUSE Linux Enterprise Server・AlmaLinuxなどのディストリビューションがあります。


TOP500という計算能力などを競うスパコンのランキングにおいても、2017年からは100%を占めています。

https://www.top500.org/statistics/details/osfam/1/


我々の生活を支える様々なITシステムで稼働するサーバやIoT製品、家電などにおいても使われています。
そして、前述したKubernetes(k8s)が動作するベースOSとして使われます。


3. KubernetesとLinuxの最強タッグ
つまり、この2つの組み合わせは一言でいえば最強。
それらを使いこなすことが出来る技術者は、もちろんつよつよインフラエンジニアです。


「何が出来ればいいの?」というと、挙げればきりがありませんがひとまず以下のようなものではないかと思います。
- Linuxディストリビューションの選択
- Linuxインストール
- さまざまなサーバ構築
- Kubernetes利用環境の選択
- Kubernetesインストール/環境構築
- コンテナアプリケーション導入
- トラブルシュート


4. 最強インフラエンジニアになるためのステップ
そのステップですが、まずはLinuxをインストールし使ってみることから始まります。
LinuxディストリビューションのISOイメージを取得し、Virtualboxなどの仮想マシン上にインストールするのが一般的ですが、もっとお手軽にという場合はWindowsの機能であるWSL(Windows Subsystem for Linux)から始めるのもいいと思います。
Ubuntu 24.04 LTSがリリースされたので、早速インストールしてみる♪
Rocky Linux 8.4 GAをインストールする
WSL on Windows11を使ってみる


続いてサーバ構築ですが、簡単に構築できるWebサーバから始め、ちょっと難易度の高いDNSサーバ、データベースやPHPなどを組み合わせたLAMPと少しずつ挑戦するレベルを上げていきます。
nginxによるWebサーバの構築 on CentOS7(on virtualbox)
Bind9(DNSサーバ)構築 on Ubuntu 22.04 LTS 猿にも分かるかもしれない、LAMP ( Linux + Apache + MySQL + PHP )の構築方法


Kubernetesは、ちょっと大変ですがkubeadmによる方法でまず構築をして、その後構築しやすいRancherやAKS・GKEなどのクラウドのマネージドサービスを利用します。
kubenetesクラスター(v1.22.0)の構築(kubeadm) on Ubuntu Server 20.04.3 LTS
RKE2(Rancher Kubernetes Engine)の構築
初めてのAKS(Azure Kubernetes Service) on Microsoft Azure
GKE(Google Kubernetes Engine) on GCPの始め方


Kubernetes環境が用意出来たら、そのリソース(分かりやすくいうとさまざまな機能)であるDeployment・ConfigMap・Ingressなどを使ってみます。
Deploymentの耐障害性(自動復旧)とオートスケーリング(kubernetes)
nginxコンテナ(Pod)のコンテンツ(index.html)をConfigMapで提供・更新する(kubernetes)
NGINX Ingress Controller + Ingressによるサービス公開(kubernetes v1.26)


Linux・Kubernetesのトラブルシュートですが、インストールや構築・操作を進める中でさまざまなトラブルに遭遇すると思いますので、それらを解決していくことで起訴を身に付けられます。


また、独学だけでは難しいかったり、俯瞰的な視野を持つためには外の世界に出る必要があります。具体的には、イベントや勉強会に参加などです。
さまざまなスペシャリストに会って直接話すことが出来たり、最新情報などの動向もつかめます。
Open Source Summit Japan 2023: ボランティアリーダーの体験記 Cloud Native Community Japan Kickoff meetupに参加してきた!
Cloud Native Community Japan -KubeCon採択スペシャル- に参加してきた
Kubernetes Meetup Tokyo
LinuC技術解説セミナー
CloudNative Days Winter 2024


また、必要な知識を広く理解するという意味では、LinuxやKubernetesに関する資格取得もいいと思います。
LinuC
Certified Kubernetes Administrator (CKA)


おわりに
今回紹介したのはインフラエンジニアとしての一つのキャリアパスではありますが、少しでも興味を持った方はぜひ手を動かしてみてください。


私の場合、2007年にIT業界にきてからサーバ(LinuC)・ネットワーク・IPA・クラウド・ウェブ系・Python・AI/人工知能・コンテナ/Kubernetesと学習を進めてきましたが、IT業界は常に新しい技術が登場してくることもあり、継続的な学習で常につよつよエンジニアを目指す姿勢は大切かなと感じています。



また、新しいことに向き合うのは大変ではありますが、新しい発見やこれまで知っていたことの深堀につながることも多く楽しいという側面もあります。

Opensourcetech by Takahiro Kujirai