📝
Kubernetes初学の書Part2
はじめに
Kubernetesをはじめて学習する人へ向けて、基本概念の説明からアプリケーションを作成していく過程について記載する。
前回のおさらい
Part1
コンテナ技術やDocker、Kubernetesの概要について記載した。
Part2での説明内容
- kubectlのインストールと補完設定
- Kubernetesクラスタの作成と削除
kubectlのインストール
前提条件
- OS: macOS Monterey
- Package Manager: homebrew
- Docker Desktop for Macがインストールされていること
インストール
- kubectlをインストールする。
brew install kubectl
- インストールされたバージョンを確認する。
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環境の準備
- kindをインストールする。
brew install kind
クラスタの作成と情報取得
- クラスタを作成する。
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! 👋
- クラスタ一覧を取得する。
kind get clusters
実行結果
kindcluster
- クラスタの接続情報を取得する。
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'.
- Node情報を取得する。
kubectl get node
実行結果
NAME STATUS ROLES AGE VERSION
kindcluster-control-plane Ready control-plane 9m33s v1.25.3
- 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
クラスタの削除
- クラスタを削除する。
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