📝

Kubernetes初学の書Part2

2022/11/27に公開

はじめに

Kubernetesをはじめて学習する人へ向けて、基本概念の説明からアプリケーションを作成していく過程について記載する。

前回のおさらい

Part1

コンテナ技術やDocker、Kubernetesの概要について記載した。
https://zenn.dev/higashi10/articles/9a2eb9e6d0eba2

Part2での説明内容

  • kubectlのインストールと補完設定
  • Kubernetesクラスタの作成と削除

kubectlのインストール

前提条件

  • OS: macOS Monterey
  • Package Manager: homebrew
  • Docker Desktop for Macがインストールされていること

インストール

  1. kubectlをインストールする。
brew install kubectl
  1. インストールされたバージョンを確認する。
kubectl version --client

実行結果よりインストールされたバージョンを確認できる。

Client Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.4", GitCommit:"872a965c6c6526caa949f0c6ac028ef7aff3fb78", GitTreeState:"clean", BuildDate:"2022-11-09T13:28:30Z", GoVersion:"go1.19.3", Compiler:"gc", Platform:"darwin/arm64"}

Kubernetesクラスタの作成と削除

今回はKubernetes環境として、kindを使用する。

Kubernetes環境の準備

  1. kindをインストールする。
brew install kind

クラスタの作成と情報取得

  1. クラスタを作成する。
kind create cluster --name kindcluster
実行結果
Creating cluster "kindcluster" ...
 ✓ Ensuring node image (kindest/node:v1.25.3) 🖼
 ✓ Preparing nodes 📦
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹️
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
Set kubectl context to "kind-kindcluster"
You can now use your cluster with:

kubectl cluster-info --context kind-kindcluster

Have a nice day! 👋
  1. クラスタ一覧を取得する。
kind get clusters
実行結果
kindcluster
  1. クラスタの接続情報を取得する。
kubectl cluster-info --context kind-kindcluster
実行結果
Kubernetes control plane is running at https://127.0.0.1:63960
CoreDNS is running at https://127.0.0.1:63960/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
  1. Node情報を取得する。
kubectl get node
実行結果
NAME                        STATUS   ROLES           AGE     VERSION
kindcluster-control-plane   Ready    control-plane   9m33s   v1.25.3
  1. Namespace情報を取得する。
kubectl get namespace
実行結果
NAME                 STATUS   AGE
default              Active   10m
kube-node-lease      Active   10m
kube-public          Active   10m
kube-system          Active   10m
local-path-storage   Active   10m

クラスタの削除

  1. クラスタを削除する。
kind delete cluster --name kindcluster

Kubernetesの理解を深める

Kubernetesのリソースカテゴリ

Kubernetesを操作するために登録するリソースには、大きく5種類のカテゴリに分類される。Kubernetesは、これらのリソースの登録を非同期に処理することができる。

種別 概要
Worklowds APIs カテゴリ コンテナの実行に関するリソース
Service APIs カテゴリ コンテナを外部に公開するようなエンドポイントを提供するリソース
Config & Storage APIs カテゴリ 設定、機密情報、永続化ボリュームなどに関するリソース
Cluster APIs カテゴリ セキュリティやクゥータなどに関するリソース
Meradata APIs カテゴリ クラスタ内の他のリソースを操作するためのリソース

Worklowds APIs カテゴリ

  • Pod
  • ReplicationController
  • ReplicaSet
  • Deployment
  • DaemonSet
  • StefluSet
  • Job
  • CronJob

Service APIs カテゴリ

  • Service
    • ClusterIP
    • ExternalIP
    • NodePort
    • LoadBalancer
    • Headless
    • ExternalName
    • None-Selector
  • Ingress

Config & Storage APIs カテゴリ

  • Secret
  • ConfigMap
  • PersistentVolumeClaim

Cluster APIs カテゴリ

  • Node
  • Namespace
  • PersistentVloume
  • ResourceQuota
  • ServiceAccount
  • Role
  • ClusterRole
  • RoleBinding
  • ClusterRoleBinding
  • NetworkPolicy

Meradata APIs カテゴリ

  • LimitRange
  • horizontalPodAutoscaler
  • PodDisruptionBudget
  • CustomResourceDefinition

参考本

Discussion