logologo
Kubernetes入門!使用方法やできることをわかりやすく解説!
thumb_kubernetesintro_01

Kubernetes入門!使用方法やできることをわかりやすく解説!

アンドエンジニア編集部
2023.08.16
この記事でわかること
Kubernetesを利用すると、コンテナやアプリケーション管理を含めた統合自動化運用が可能です
学習方法としては、ローカルで動作するMinikubeを用いると便利です
システム信頼性・可用性を向上するためには、経験が求められるのでハンズオンが有効です

Kubernetesとは

img_kubernetesintro_01

Kubernetesは、コンテナのオーケストレーションを行うオープンソースソフトウェアです。ここで言うオーケストレーションとは、コンピュータシステムのサービス設定や提供・管理の各種手続きを自動的に行う考え方で、アプリケーション管理を含めた統合運用が可能です。 【参考】:公式-Kubernetes 【参考】:公式-Kubernetesとは何か?

Kubernetesの基本モジュール

img_kubernetesintro_02

ここではKubernetesの基本モジュールを説明をしていきます。「Pod」とはKubernetesのアプリケーションの管理で用いる基本的な実行単位です。Podの集合体はアプリケーションを公開する仕組みで、「サービス」と呼ばれています。管理対象となるインフラを「ノード」(Node)と言います。Podは最小のデプロイメント単位なため、単一インスタンスで構成可能です。

各ノードを制御し、タスクを割り当てる機器を「マスター」あるいは「コントロールプレーン」と呼びます。マスターへのリクエストは、Kubernetesのコマンドラインツールである「kubectl」を用います。マスターと対比させて、各実行ノードを「スレーブ」あるいは「ワーカーノード」という場合もあります。

Kubernetesでできること

Kubernetesはクラスタ内でアプリケーションのデプロイ・スケール・管理を実行できます。全体の効率向上・品質向上・スピード向上が実現でき、可能性向上が求められる企業向けに活用が進んでいます。

以下にKubernetesでできることを簡単に整理してみます。 ・コンテナ化されたアプリケーションのデプロイとリリース Dockerでは単一ノードのみですが、Kubernetesではクラスタのノード間でアプリケーションのデプロイとリリースができます。

コンテナ化されたアプリケーションの実行と管理 アプリケーションの実行と管理をクラスタで行うことができます。

スケーリングを実行 状況に応じてデプロイ・スケーリング・実行の手順を自動化することができ、負荷分散に対応します。

障害時に復旧処理を実行 クラスタの機能を維持しながら、インスタンスの障害復旧を行います。

KubernetesはDockerでコンテナ化されたアプリケーションの実行を管理します。複数ノードで動作が可能で処理を自動実行することができます。より効率的な運用に近づけることを目的とします。さらに自動障害復旧の用途にも利用されています。 【参考】:公式-Kubernetesの基本を学ぶ

Kubernetesを使ってみよう

img_kubernetesintro_03

入門ハンズオンとしてMinikubeを使ってみましょう。Minikubeは、Kubernetesクラスタをローカルで環境構築・実行してくれます。つまり、手っ取り早く利用することができます。 【参考】:公式-Kubernetes チュートリアル

このハンズオンは、ブラウザだけでできてしまう優れものです。ここではMinikubeとKatacodaが使われています。Katacodaはインタラクティブな学習プラットフォームで、DockerやKubernetesをはじめとする多くのラーニングに活用されています。

Hello Minikube

Hello Minikubeは、実際のKubernetesのハンズオン手順です。初心者でも操作を簡単に行うことができます。 【参考】:Hello Minikube

このハンズオンで最初に「Launch Terminal」をクリックしてください。それによりブラウザ下部にTerminalが表示されます。すでにMinikubeをインストール済みであれば、”minikube start”で実行できます。次に「minikube dashboard」をクリックし、ポート番号30000を「Display Port」で表示します。

以降kubectlを用いて処理を行います。Podの状態を確認するためにDeploymentを”kubectl create deployment”で作成します。Deploymentの確認は”kubectl get deployments”を、Podの確認は”kubectl get pods”を実行します。

続いてPodを外部公開するためには、Serviceを作成します。”kubectl expose deployment”でServiceのタイプを設定し、”minikube service”でServiceを作成します。

kubectlコマンドの概要

先のハンズオンで用いたkubectlコマンドは、Kubernetesのコマンドラインツールでクラスターの制御に用います。基本構文は以下の通りです。

 kubectl [コマンド] [タイプ] [ネーム] [フラグ]

コマンド:実装する操作を指定します。create・get・describe・delete・logs・exec等です。 タイプ:リソースタイプを指定します。nodes・pods・services等で省略形が定義されています。 ネーム:リソース名を指定します。 フラグ:オプションフラグです。 【参考】:公式-kubectlの概要

kubectlの使用方法

Katacodaを用いて、kubectlの代表的なコマンドを実行してみました。 “kubectl get”はリソースの一覧を表示します。nodes・pods・servicesの実行結果は以下の通りです。 $ kubectl get pods NAME                          READY   STATUS    RESTARTS   AGE hello-node-7567d9fdc9-76d4g   1/1     Running   0          44m $ kubectl get services NAME         TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE hello-node   LoadBalancer   10.106.2.14   <pending>     8080:30547/TCP   43m kubernetes   ClusterIP      10.96.0.1     <none>        443/TCP          54m $ kubectl get nodes NAME       STATUS   ROLES                  AGE   VERSION minikube   Ready    control-plane,master   54m   v1.20.2 $

“kubectl describe”は、リソースの詳細情報を表示します。実行結果は以下の通りです。 $ kubectl describe node Name:               minikube Roles:              control-plane,master Labels:             beta.kubernetes.io/arch=amd64                     beta.kubernetes.io/os=linux                     kubernetes.io/arch=amd64                     kubernetes.io/hostname=minikube                     kubernetes.io/os=linux          : $ kubectl describe pod Name:         hello-node-7567d9fdc9-76d4g Namespace:    default Priority:     0 Node:         minikube/172.17.0.48          : $

“kubectl logs”は、Pod上の指定したコンテナ内に格納されているログを表示します。 $ kubectl logs hello-node-7567d9fdc9-76d4g

“kubectl exec”は、Pod上の指定したコンテナ内でコマンドを実行します。 $ kubectl exec hello-node-7567d9fdc9-76d4g -- ls -l / total 72 -rw-r-----   1 root root  436 May 28  2016 README.md drwxr-xr-x   2 root root 4096 May  2  2016 bin drwxr-xr-x   2 root root 4096 Nov 27  2015 boot drwxr-xr-x   5 root root  360 Feb 22 09:08 dev drwxr-xr-x   1 root root 4096 Feb 22 09:08 etc          : $

これらのコマンド確認は、Hello Minikubeで表示したTerminalのプロンプトで実行可能です。各コマンドの動作を実際に確認してみてください。

Kubernetesのセットアップ

Kubernetesのセットアップは、コントロールプレーンとワーカーノードを準備します。作業にはコンテナランタイムの他、kubeadm・kubelet・kubectlを用いて行います。ご興味ありましたら、以下の公式リンクをご確認ください。 【参考】:公式-CRIのインストール 【参考】:公式-kubeadmのインストール 【参考】:公式-ツールのインストール

Kubernetesの学習方法

Kubernetesの公式サイトにはお話ししたハンズオンの他、多くの教材と提供パートナー情報が登録されています。無料の入門コースを利用して、Kubernetes・Linux・クラウド技術を総合的に学習することができます。 【参考】:公式-Kubernetesのトレーニングと資格

同様にハンズオンで用いたKatacodaは250の自習教材が登録されており、コンテナ管理の教材が充実しています。 【参考】:Katacoda

やはり書籍が良いという方は、入門書として「Docker/Kubernetes 実践コンテナ開発入門」を紹介します。技術評論社から出版されており、DockerならびにKubernetesの基礎から実際にアプリケーションを作るまでの工程をカバーしています。実際に動かすところまで体験することができます。 【参考】:Docker/Kubernetes 実践コンテナ開発入門

まずは基礎から進めましょう

img_kubernetesintro_04

Kubernetesは簡単ではありますが、クラスタや負荷分散の考え方を理解する必要があります。業務用途に活用が増えていますが、システム信頼性・可用性を向上するために経験が求められます。経験を積むにはハンズオンが有効です。

障害復旧やリスク対応の工程や手順を理解しておくと、実際に運用設計に活用できるのでスキルアップとしても有効です

DXの取組事例に学ぶDX成功のポイントとITエンジニアへの期待
DXとは?その意味と日本の現状、DX推進の障壁となる要因を分かりやすく解説!
気になる人のXをフォローしよう!
公式LINE
公式YouTube
マイナビITエージェント

編集部オススメコンテンツ

thumb_gptowten_01
ChatGPTの面白い使い方15選!ビジネスや遊び相手になる事例
アンドエンジニア編集部
2024.02.19

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供

カテゴリー

編集部おすすめコンテンツ

アンドエンジニアへの取材依頼、情報提供などはこちらから

logologo
Powered by マイナビ AGENT