k8sの概念入門とシンプルなPodの作成・実行

k8s入門

k8s的学习を始めると、多くの概念に戸惑うことが多いでしょう。Master、Node、Pod、Service、Namespaceといった用語が次々に登場します。そして、yamlファイルの設定 भी複雑に感じるかもしれません。

k8sを操作する際には、最も頻繁に使用するツールがkubectlです主なコマンドは以下の通りです:

kubectl get pods
kubectl create -f manifest.yaml
kubectl get namespaces

これらの概念は、実際にはk8sが提供する抽象的なリソースオブジェクトとして捉えることができます。k8sを一種のオブジェクト管理システム、例えばデータベースシステムのように考えると、理解しやすいでしょう。実際、k8sはetcdを分散データベースとして使用しており、すべてのリソース変更履歴がここに記録されます。

また、各リソースオブジェクト間には明確な関係성이存在します。これはリレーショナルデータベースにおけるテーブル間の関連性に類似しています。

シンプルなPodの作成

k8sクラスターが構築され、すべてのノードの状態がreadyとなったら、Podを作成できます。Podを作成すると、指定されたコンテナが自動的に起動します。

以下にPodを定義するシンプルなyamlを示します:

apiVersion: v1
kind: Pod
metadata:
  name: sample-pod
  namespace: default
  labels:
    app: sample
spec:
  containers:
  - name: nginx-container
    image: nginx:1.21

このyamlファイルを適用するには、以下のコマンドを実行します:

kubectl apply -f sample.yaml

Podの状態を確認ってみると、completedではなくRunningにならない場合があります。このような場合、describeコマンドで詳細情報を確認します:

kubectl describe pod sample-pod

すると、以下のようなエラーが表示されることがあります:

FailedCreatedPodSandBox  k8s.gcr.io/pause:3.1

この問題は、k8sがすべてのPodのベースとしているpauseコンテナイメージを正しく取得できないことが原因です。解決策としては、インターネットからイメージを直接ダウンロードするか、registryの設定を変更する方法があります。dockerコマンドに慣れている場合は、docker saveとdocker loadを使用してイメージを転送するのが効果的です。

参考までに、k8s.gcr.ioレジストリからのイメージ取得に問題がある場合はMirroring Solutions such as those available onlineを確認してください。

問題が解決되면、Podの状態はRunningとなり、正常に動作します。

参考資料: yamlフォーマットによるPod定義の詳細

PodとNodeの概念解説

Podのライフサイクル

タグ: Kubernetes Pod kubectl YAML k8s入门

6月3日 18:34 投稿